From a5e71e068fc46edb59bbe8923cfb7ec4060fd556 Mon Sep 17 00:00:00 2001 From: Istvan Zoltan Ballok Date: Wed, 11 May 2022 10:54:22 +0200 Subject: [PATCH 1/3] Add downtime recording rules for moving time windows Co-authored-by: Wesley Bermbach Co-authored-by: Istvan Zoltan Ballok --- .../dashboards/uptime-overview.json | 45 ++++++++-- .../dashboards/uptime.json | 34 ++++---- .../rules/error-budget.yaml | 85 ++++++++++++++++++- 3 files changed, 139 insertions(+), 25 deletions(-) diff --git a/charts/connectivity-exporter/dashboards/uptime-overview.json b/charts/connectivity-exporter/dashboards/uptime-overview.json index 1c28cf4..7f603cf 100644 --- a/charts/connectivity-exporter/dashboards/uptime-overview.json +++ b/charts/connectivity-exporter/dashboards/uptime-overview.json @@ -65,7 +65,7 @@ "targets": [ { "exemplar": true, - "expr": "count(count(downtime{sni=~\".*$sni.*\"}) by (sni))", + "expr": "count(count(downtime{interval=\"$interval\", in=\"$in\", sni=~\".*$sni.*\"}) by (sni))", "instant": true, "interval": "", "legendFormat": "", @@ -123,7 +123,7 @@ "targets": [ { "exemplar": true, - "expr": "count(((1-downtime{in=~\"$in\",kind=\"active_failed\",sni=~\".*$sni.*\"})*100) > 99.95)", + "expr": "count(((1-downtime{interval=\"$interval\", in=\"$in\", kind=\"active_failed\", sni=~\".*$sni.*\"})*100) > 99.95)", "instant": true, "interval": "", "legendFormat": "", @@ -185,7 +185,7 @@ "targets": [ { "exemplar": true, - "expr": "count(((1-downtime{in=~\"$in\",kind=\"active_failed\", sni=~\".*$sni.*\"})*100) < 99.95)", + "expr": "count(((1-downtime{interval=\"$interval\", in=\"$in\", kind=\"active_failed\", sni=~\".*$sni.*\"})*100) < 99.95)", "instant": true, "interval": "", "legendFormat": "", @@ -300,7 +300,7 @@ "targets": [ { "exemplar": true, - "expr": "(1 - topk(10,downtime{in=~\"$in\", kind=\"active_failed\", sni=~\".*$sni.*\"})) * 100", + "expr": "(1 - topk(10,downtime{interval=\"$interval\", in=\"$in\", kind=\"active_failed\", sni=~\".*$sni.*\"})) * 100", "instant": true, "interval": "", "legendFormat": "{{sni}}", @@ -432,7 +432,7 @@ "targets": [ { "exemplar": true, - "expr": "topk(10,((1-downtime{in=~\"$in\", kind=\"active_failed\", sni=~\".*$sni.*\"}) * 100) < 100)", + "expr": "topk(10,((1-downtime{interval=\"$interval\", in=\"$in\", kind=\"active_failed\", sni=~\".*$sni.*\"}) * 100) < 100)", "instant": true, "interval": "", "legendFormat": "{{sni}}", @@ -465,6 +465,37 @@ "tags": [], "templating": { "list": [ + { + "allValue": null, + "current": { + "selected": false, + "text": "anchored", + "value": "anchored" + }, + "datasource": null, + "definition": "label_values(downtime:interval, interval)", + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": null, + "multi": false, + "name": "interval", + "options": [], + "query": { + "query": "label_values(downtime:interval, interval)", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, { "allValue": null, "current": { @@ -473,7 +504,7 @@ "value": "week" }, "datasource": null, - "definition": "label_values(downtime:in, in)", + "definition": "label_values(downtime:in{interval=\"$interval\"}, in)", "description": null, "error": null, "hide": 0, @@ -483,7 +514,7 @@ "name": "in", "options": [], "query": { - "query": "label_values(downtime:in, in)", + "query": "label_values(downtime:in{interval=\"$interval\"}, in)", "refId": "StandardVariableQuery" }, "refresh": 1, diff --git a/charts/connectivity-exporter/dashboards/uptime.json b/charts/connectivity-exporter/dashboards/uptime.json index 536d797..36210d7 100644 --- a/charts/connectivity-exporter/dashboards/uptime.json +++ b/charts/connectivity-exporter/dashboards/uptime.json @@ -79,7 +79,7 @@ "targets": [ { "exemplar": false, - "expr": "(1-downtime{in=\"hour\", sni=~\"$sni\", kind=\"active_failed\"}) * 100", + "expr": "(1-downtime{interval=\"anchored\", in=\"hour\", sni=~\"$sni\", kind=\"active_failed\"}) * 100", "instant": true, "interval": "", "legendFormat": "", @@ -154,7 +154,7 @@ "targets": [ { "exemplar": false, - "expr": "(1-downtime{in=\"day\", sni=~\"$sni\", kind=\"active_failed\"}) * 100", + "expr": "(1-downtime{interval=\"anchored\", in=\"day\", sni=~\"$sni\", kind=\"active_failed\"}) * 100", "instant": true, "interval": "", "legendFormat": "", @@ -228,7 +228,7 @@ "targets": [ { "exemplar": false, - "expr": "(1-downtime{in=\"week\", sni=~\"$sni\", kind=\"active_failed\"}) * 100", + "expr": "(1-downtime{interval=\"anchored\", in=\"week\", sni=~\"$sni\", kind=\"active_failed\"}) * 100", "instant": true, "interval": "", "legendFormat": "", @@ -302,7 +302,7 @@ "targets": [ { "exemplar": false, - "expr": "(1-downtime{in=\"calendarmonth\", sni=~\"$sni\", kind=\"active_failed\"}) * 100", + "expr": "(1-downtime{interval=\"anchored\", in=\"calendarmonth\", sni=~\"$sni\", kind=\"active_failed\"}) * 100", "instant": true, "interval": "", "legendFormat": "", @@ -364,7 +364,7 @@ "targets": [ { "exemplar": false, - "expr": "floor(downtime{in=\"hour\", sni=~\"$sni\", kind=\"active_failed\"} * 60 * 60)", + "expr": "floor(downtime{interval=\"anchored\", in=\"hour\", sni=~\"$sni\", kind=\"active_failed\"} * 60 * 60)", "interval": "", "legendFormat": "{{sni}}", "refId": "A" @@ -463,7 +463,7 @@ "targets": [ { "exemplar": false, - "expr": "floor(downtime{in=\"day\", sni=~\"$sni\", kind=\"active_failed\"} * 60 * 60 * 24)", + "expr": "floor(downtime{interval=\"anchored\", in=\"day\", sni=~\"$sni\", kind=\"active_failed\"} * 60 * 60 * 24)", "interval": "", "legendFormat": "{{sni}}", "refId": "A" @@ -562,7 +562,7 @@ "targets": [ { "exemplar": false, - "expr": "floor(downtime{in=\"week\", sni=~\"$sni\", kind=\"active_failed\"} * 60 * 60 * 24 * 7)", + "expr": "floor(downtime{interval=\"anchored\", in=\"week\", sni=~\"$sni\", kind=\"active_failed\"} * 60 * 60 * 24 * 7)", "interval": "", "legendFormat": "{{sni}}", "refId": "A" @@ -661,7 +661,7 @@ "targets": [ { "exemplar": false, - "expr": "floor(downtime{in=\"calendarmonth\", sni=~\"$sni\", kind=\"active_failed\"} * 60 * 60 * 24 * scalar(days_in_month(month())))", + "expr": "floor(downtime{interval=\"anchored\", in=\"calendarmonth\", sni=~\"$sni\", kind=\"active_failed\"} * 60 * 60 * 24 * scalar(days_in_month(month())))", "interval": "", "legendFormat": "{{sni}}", "refId": "A" @@ -760,7 +760,7 @@ "targets": [ { "exemplar": false, - "expr": "(1-downtime{in=\"hour\", sni=~\"$sni\", kind=\"active_failed\"}) * 100", + "expr": "(1-downtime{interval=\"anchored\", in=\"hour\", sni=~\"$sni\", kind=\"active_failed\"}) * 100", "interval": "", "legendFormat": "{{sni}}", "refId": "A" @@ -886,7 +886,7 @@ "targets": [ { "exemplar": false, - "expr": "(1-downtime{in=\"day\", sni=~\"$sni\", kind=\"active_failed\"}) * 100", + "expr": "(1-downtime{interval=\"anchored\", in=\"day\", sni=~\"$sni\", kind=\"active_failed\"}) * 100", "interval": "", "legendFormat": "{{sni}}", "refId": "A" @@ -1012,7 +1012,7 @@ "targets": [ { "exemplar": false, - "expr": "(1-downtime{in=\"week\", sni=~\"$sni\", kind=\"active_failed\"}) * 100", + "expr": "(1-downtime{interval=\"anchored\", in=\"week\", sni=~\"$sni\", kind=\"active_failed\"}) * 100", "interval": "", "legendFormat": "{{sni}}", "refId": "A" @@ -1138,7 +1138,7 @@ "targets": [ { "exemplar": false, - "expr": "(1-downtime{in=\"calendarmonth\", sni=~\"$sni\", kind=\"active_failed\"}) * 100", + "expr": "(1-downtime{interval=\"anchored\", in=\"calendarmonth\", sni=~\"$sni\", kind=\"active_failed\"}) * 100", "interval": "", "legendFormat": "{{sni}}", "refId": "A" @@ -1278,7 +1278,7 @@ "targets": [ { "exemplar": false, - "expr": "(1-downtime{in=\"day\", sni=~\"$sni\", kind=\"active_failed\"}) * 100", + "expr": "(1-downtime{interval=\"anchored\", in=\"day\", sni=~\"$sni\", kind=\"active_failed\"}) * 100", "interval": "", "legendFormat": "{{sni}}:{{in}}", "refId": "A" @@ -1384,7 +1384,7 @@ "h": 9, "w": 24, "x": 0, - "y": 26 + "y": 34 }, "hiddenSeries": false, "id": 15, @@ -1453,7 +1453,7 @@ { "$$hashKey": "object:61", "format": "short", - "label": null, + "label": "foo", "logBase": 1, "max": null, "min": null, @@ -1479,7 +1479,7 @@ { "allValue": "(.+)", "datasource": null, - "definition": "label_values(downtime{}, sni)", + "definition": "label_values(downtime:sni{}, sni)", "description": null, "error": null, "hide": 0, @@ -1489,7 +1489,7 @@ "name": "sni", "options": [], "query": { - "query": "label_values(downtime{}, sni)", + "query": "label_values(downtime:sni{}, sni)", "refId": "StandardVariableQuery" }, "refresh": 1, diff --git a/charts/connectivity-exporter/rules/error-budget.yaml b/charts/connectivity-exporter/rules/error-budget.yaml index 871ea31..eaa9c72 100644 --- a/charts/connectivity-exporter/rules/error-budget.yaml +++ b/charts/connectivity-exporter/rules/error-budget.yaml @@ -93,6 +93,7 @@ groups: - record: downtime labels: + interval: anchored in: hour expr: | sum without(hour) ( @@ -102,6 +103,7 @@ groups: - record: downtime labels: + interval: anchored in: day expr: | sum without(day) ( @@ -111,6 +113,7 @@ groups: - record: downtime labels: + interval: anchored in: week expr: | sum without(week) ( @@ -120,6 +123,7 @@ groups: - record: downtime labels: + interval: anchored in: calendarmonth expr: | sum without(year, month) ( @@ -131,8 +135,87 @@ groups: (service:sli_seconds:total{year!="", month!=""}) )) + - record: service:sli_seconds:moving:total + expr: | + service:sli_seconds + + + ( + max_over_time( + service:sli_seconds:moving:total[10m] + ) + or + service:sli_seconds * 0 + ) + + - record: downtime + labels: + interval: moving + in: hour + expr: | + ( + service:sli_seconds:moving:total + - + ( + service:sli_seconds:moving:total offset 1h + or + service:sli_seconds:moving:total * 0 + ) + ) + / 60 / 60 + + - record: downtime + labels: + interval: moving + in: day + expr: | + ( + service:sli_seconds:moving:total + - + ( + service:sli_seconds:moving:total offset 1d + or + service:sli_seconds:moving:total * 0 + ) + ) + / 60 / 60 / 24 + + - record: downtime + labels: + interval: moving + in: week + expr: | + ( + service:sli_seconds:moving:total + - + ( + service:sli_seconds:moving:total offset 1w + or + service:sli_seconds:moving:total * 0 + ) + ) + / 60 / 60 / 24 / 7 + + - record: downtime + labels: + interval: moving + in: four_weeks + expr: | + ( + service:sli_seconds:moving:total + - + ( + service:sli_seconds:moving:total offset 4w + or + service:sli_seconds:moving:total * 0 + ) + ) + / 60 / 60 / 24 / 7 / 4 + + - record: downtime:interval + expr: count by (interval) (downtime) * 0 + - record: downtime:in - expr: count by (in) (downtime) * 0 + expr: count by (in, interval) (downtime) * 0 - record: downtime:sni expr: count by (sni) (downtime) * 0 From 200abd516e237cff5de132dcfd41daffa113f89d Mon Sep 17 00:00:00 2001 From: Istvan Zoltan Ballok Date: Thu, 19 May 2022 11:12:00 +0200 Subject: [PATCH 2/3] Add an uptime dashboard that supports anchored and moving intervals Co-authored-by: Wesley Bermbach Co-authored-by: Istvan Zoltan Ballok --- .../dashboards/uptime2.json | 565 ++++++++++++++++++ 1 file changed, 565 insertions(+) create mode 100644 charts/connectivity-exporter/dashboards/uptime2.json diff --git a/charts/connectivity-exporter/dashboards/uptime2.json b/charts/connectivity-exporter/dashboards/uptime2.json new file mode 100644 index 0000000..e72035f --- /dev/null +++ b/charts/connectivity-exporter/dashboards/uptime2.json @@ -0,0 +1,565 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "description": "", + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "links": [], + "panels": [ + { + "datasource": null, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 4, + "mappings": [ + { + "from": "", + "id": 1, + "text": "", + "to": "", + "type": 1 + } + ], + "thresholds": { + "mode": "percentage", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 99.95 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 5, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "7.5.13", + "targets": [ + { + "exemplar": false, + "expr": "(1-downtime{interval=\"$interval\", in=~\"$in\", sni=~\"$sni\", kind=\"active_failed\"}) * 100", + "instant": true, + "interval": "", + "legendFormat": "{{in}}", + "refId": "A" + } + ], + "timeFrom": null, + "timeShift": null, + "transformations": [], + "type": "stat" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": null, + "description": "", + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 5 + }, + "hiddenSeries": false, + "id": 8, + "legend": { + "alignAsTable": true, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.5.13", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "$$hashKey": "object:107", + "alias": "SLO", + "legend": false, + "lines": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "exemplar": false, + "expr": "(1-downtime{interval=\"$interval\", in=~\"$in\", sni=~\"$sni\", kind=\"active_failed\"}) * 100", + "interval": "", + "legendFormat": "{{in}} {{sni}}", + "refId": "A" + }, + { + "exemplar": false, + "expr": "vector(99.95)", + "hide": false, + "interval": "", + "legendFormat": "SLO", + "refId": "B" + } + ], + "thresholds": [ + { + "$$hashKey": "object:163", + "colorMode": "ok", + "fill": true, + "line": true, + "op": "gt", + "value": 99.95, + "yaxis": "left" + }, + { + "$$hashKey": "object:175", + "colorMode": "critical", + "fill": true, + "line": true, + "op": "lt", + "value": 99.95, + "yaxis": "left" + } + ], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Uptime", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:60", + "decimals": 2, + "format": "percent", + "label": "", + "logBase": 1, + "max": "100", + "min": null, + "show": true + }, + { + "$$hashKey": "object:61", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 0, + "description": "", + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 13 + }, + "hiddenSeries": false, + "id": 18, + "legend": { + "alignAsTable": true, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.5.13", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "exemplar": false, + "expr": "floor(downtime{interval=\"$interval\", in=~\"$in\", sni=~\"$sni\", kind=\"active_failed\"} * 60 * 60)", + "interval": "", + "legendFormat": "{{in}} {{sni}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Downtime", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:60", + "decimals": 0, + "format": "short", + "label": "seconds", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:61", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "collapsed": true, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 21 + }, + "id": 17, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": null, + "description": "", + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 24, + "x": 0, + "y": 22 + }, + "hiddenSeries": false, + "id": 15, + "legend": { + "alignAsTable": true, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": true, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.5.13", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "exemplar": false, + "expr": "max by (node) (connectivity_exporter_seconds_total{sni=~\"$sni\", kind=\"active_failed\"})", + "interval": "", + "legendFormat": "{{node}}", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Failed Seconds by Node", + "tooltip": { + "shared": false, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:60", + "decimals": 0, + "format": "none", + "label": "", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:61", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "title": "Failed Seconds", + "type": "row" + } + ], + "refresh": false, + "schemaVersion": 27, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "allValue": "(.+)", + "current": { + "selected": false, + "text": "anchored", + "value": "anchored" + }, + "datasource": null, + "definition": "label_values(downtime:interval, interval)", + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": null, + "multi": false, + "name": "interval", + "options": [], + "query": { + "query": "label_values(downtime:interval, interval)", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": "(.+)", + "current": { + "selected": true, + "tags": [], + "text": [ + "week", + "day" + ], + "value": [ + "week", + "day" + ] + }, + "datasource": null, + "definition": "label_values(downtime:in{interval=\"$interval\"}, in)", + "description": null, + "error": null, + "hide": 0, + "includeAll": true, + "label": null, + "multi": true, + "name": "in", + "options": [], + "query": { + "query": "label_values(downtime:in{interval=\"$interval\"}, in)", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": "(.+)", + "current": { + "selected": false, + "text": "api.blue.rejekts.internal.staging.k8s.ondemand.com", + "value": "api.blue.rejekts.internal.staging.k8s.ondemand.com" + }, + "datasource": null, + "definition": "label_values(downtime:sni{}, sni)", + "description": null, + "error": null, + "hide": 0, + "includeAll": false, + "label": null, + "multi": false, + "name": "sni", + "options": [], + "query": { + "query": "label_values(downtime:sni{}, sni)", + "refId": "StandardVariableQuery" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-5m", + "to": "now-1m" + }, + "timepicker": { + "nowDelay": "1m" + }, + "timezone": "utc", + "title": "Uptime2", + "uid": "uptime2" +} From 931e6328a1ed807e5e03f2941a47d12e611d3b26 Mon Sep 17 00:00:00 2001 From: Istvan Zoltan Ballok Date: Thu, 19 May 2022 11:14:05 +0200 Subject: [PATCH 3/3] Rename recording rules to downtime The previous name error budget didn't capture it well that actually the downtime of the sni-s is calculated. Co-authored-by: Wesley Bermbach Co-authored-by: Istvan Zoltan Ballok --- .../rules/{error-budget.yaml => downtime.yaml} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename charts/connectivity-exporter/rules/{error-budget.yaml => downtime.yaml} (99%) diff --git a/charts/connectivity-exporter/rules/error-budget.yaml b/charts/connectivity-exporter/rules/downtime.yaml similarity index 99% rename from charts/connectivity-exporter/rules/error-budget.yaml rename to charts/connectivity-exporter/rules/downtime.yaml index eaa9c72..6c02467 100644 --- a/charts/connectivity-exporter/rules/error-budget.yaml +++ b/charts/connectivity-exporter/rules/downtime.yaml @@ -4,7 +4,7 @@ groups: -- name: error_budget +- name: downtime interval: 30s rules: