From 071c16b73c702c65695119013c61a99961cba2c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Thu, 9 Jun 2016 10:13:34 +0200 Subject: [PATCH] feat(alerting): start on new ui --- .floo | 5 +- alerting_model.json | 145 ++++++++++++++++++ .../app/plugins/panel/graph/alert_tab_ctrl.ts | 13 +- .../panel/graph/partials/tab_alerting.html | 94 ++++++------ 4 files changed, 201 insertions(+), 56 deletions(-) create mode 100644 alerting_model.json diff --git a/.floo b/.floo index a8fb87025ec..1201c5e93b9 100644 --- a/.floo +++ b/.floo @@ -1,4 +1,3 @@ { - "url": "https://floobits.com/raintank/grafana" -} - + "url": "https://floobits.com/raintank/grafana" +} \ No newline at end of file diff --git a/alerting_model.json b/alerting_model.json new file mode 100644 index 00000000000..afe237ecd4a --- /dev/null +++ b/alerting_model.json @@ -0,0 +1,145 @@ +{ + "alert": { + "name": "Majority servers down", + "frequency": 60, + "notify": ["group1", "group2"], + "expressions": [ + { + "left": [ + { + "type": "query", + "refId": "A", + "timeRange": {"from": "5m", "to": "now-1m"}, + }, + { + "type": "function", + "name": "max" + } + ], + "operator": ">", + "right": [ + { + "type": "constant", + "value": 100 + } + ], + "level": 2, + } + ] + }, + + "alert": { + "name": "Majority servers down take2", + "frequency": 60, + "notify": ["group1", "group2"], + "expressions": [ + { + "left": [ + { + "type": "query", + "refId": "A", + "timeRange": {"from": "5m", "to": "now-1m"}, + }, + { + "type": "function", + "name": "max" + } + ], + "operator": ">", + "right": [ + { + "type": "query", + "refId": "A", + "timeRange": {"from": "now-1d-5m", "to": "now-1d"}, + }, + { + "type": "function", + "name": "max" + } + ], + "level": 2, + } + ] + }, + "alert": { + "name": "CPU usage last 5min above 90%", + "frequency": 60, + "expressions": [ + { + "expr": "query(#A, 5m, now, avg)", + "operator": ">", + "critLevel": 90, + } + ] + }, + "alert": { + "name": "Series count above 10", + "frequency": "1m", + "expressions": [ + { + "expr": "query(#A, 5m, now, avg) | countSeries()", + "operator": ">", + "critLevel": 10, + } + ] + }, + "alert": { + "name": "Disk Free Zero in 3 days", + "frequency": "1d", + "expressions": [ + { + "expr": "query(#A, 1d, now, trend(3d))", + "operator": ">", + "critLevel": 0, + } + ] + }, + "alert": { + "name": "Server requests is zero for more than 10min", + "frequency": "1d", + "expressions": [ + { + "expr": "query(#A, 10m, now, sum)", + "operator": "=", + "critLevel": 0, + } + ] + }, + "alert": { + "name": "Timeouts should not be more than 0.1% of requests", + "frequency": "1d", + "expressions": [ + { + "expr": "query(#A, 10m, now, sum) | subtract | query(#B, 10m, now, sum)", + "operator": ">", + "critLevel": 0, + } + ] + }, + "alert": { + "name": "CPU usage last 5min changed by more than 20% compared to last 24hours", + "frequency": "1m", + "value": "query(#A, 5m, now, avg)", + "operator": "percent change", + "threshold": "query(#A, 1d, now, avg)", + }, + + "alert": { + "name": "CPU higher than 90%", + "frequency": "1m", + "valueExpr": "query(#A, 5m, now, avg)", + "evalType": "greater than", + "critLevel": 20, + "warnLevel": 10, + }, + + "alert": { + "name": "CPU usage last 5min changed by more than 20% compared to last 24hours", + "frequency": "1m", + "valueExpr": "query(#A, 5m, now, avg)", + "evalType": "percent change", + "evalExpr": "query(#A, 1d, now, avg)", + "critLevel": 20, + "warnLevel": 10, + }, +} diff --git a/public/app/plugins/panel/graph/alert_tab_ctrl.ts b/public/app/plugins/panel/graph/alert_tab_ctrl.ts index 11aebe7e4e7..40160981904 100644 --- a/public/app/plugins/panel/graph/alert_tab_ctrl.ts +++ b/public/app/plugins/panel/graph/alert_tab_ctrl.ts @@ -9,8 +9,9 @@ export class AlertTabCtrl { panelCtrl: any; alerting: any; metricTargets = [{ refId: '- select query -' } ]; - operators = ['>', '<', '<=', '>=']; + evalFuncs = ['Greater Then', 'Percent Change']; aggregators = ['avg', 'sum', 'min', 'max', 'median']; + rule: any; defaultValues = { aggregator: 'avg', @@ -18,16 +19,22 @@ export class AlertTabCtrl { queryRange: 3600, warnOperator: '>', critOperator: '>', - queryRef: '- select query -' + queryRef: '- select query -', + valueExpr: 'query(#A, 5m, now, avg)', + evalFunc: 'Greater Then', + evalExpr: '', + critLevel: 20, + warnLevel: 10, }; /** @ngInject */ constructor($scope, private $timeout) { - $scope.alertTab = this; //HACK ATTACK! this.panelCtrl = $scope.ctrl; this.panel = this.panelCtrl.panel; + $scope.ctrl = this; _.defaults(this.panel.alerting, this.defaultValues); + this.rule = this.panel.alerting; var defaultName = (this.panelCtrl.dashboard.title + ' ' + this.panel.title + ' alert'); this.panel.alerting.name = this.panel.alerting.name || defaultName; diff --git a/public/app/plugins/panel/graph/partials/tab_alerting.html b/public/app/plugins/panel/graph/partials/tab_alerting.html index aeafebf2f83..1d2f004bc62 100644 --- a/public/app/plugins/panel/graph/partials/tab_alerting.html +++ b/public/app/plugins/panel/graph/partials/tab_alerting.html @@ -1,61 +1,55 @@
-
Query
-
- Query to watch -
- +
Alert Rule
+
+
+ Value +
-
- -
Thresholds
-
- - - Warn level - -
- +
+
+ +
- -
-
- - - Critical level - -
- +
+ + + Warn + +
- -
-
- -
-
Aggregation settings
-
- Aggregation method -
- +
+ + + Critcal + +
-
- -
- Query range (seconds) - -
- -
- Frequency (seconds) -
+
+ + + + + + + + + + + + + + + + + + + + + +
Alert info