From 540d1d9b4e9fe06b0b48789c99403013a3fd899d Mon Sep 17 00:00:00 2001 From: Carl Bergquist Date: Wed, 1 Apr 2020 20:55:37 +0200 Subject: [PATCH] Support using multiple datasources for testing bulk alerting. (#23258) --- .gitignore | 2 + .../bulkdash_alerting.jsonnet | 168 ----------------- .../dashboard.libsonnet | 170 ++++++++++++++++++ .../datasources.jsonnet | 14 ++ devenv/setup.sh | 13 +- 5 files changed, 196 insertions(+), 171 deletions(-) delete mode 100644 devenv/bulk_alerting_dashboards/bulkdash_alerting.jsonnet create mode 100644 devenv/bulk_alerting_dashboards/dashboard.libsonnet create mode 100644 devenv/bulk_alerting_dashboards/datasources.jsonnet diff --git a/.gitignore b/.gitignore index e1858a213d3..857a967975a 100644 --- a/.gitignore +++ b/.gitignore @@ -84,6 +84,8 @@ debug.test /devenv/bulk-dashboards/*.json /devenv/bulk_alerting_dashboards/*.json +/devenv/datasources_bulk.yaml +/devenv/bulk_alerting_dashboards/bulk_alerting_datasources.yaml /scripts/build/release_publisher/release_publisher *.patch diff --git a/devenv/bulk_alerting_dashboards/bulkdash_alerting.jsonnet b/devenv/bulk_alerting_dashboards/bulkdash_alerting.jsonnet deleted file mode 100644 index a7acd57745d..00000000000 --- a/devenv/bulk_alerting_dashboards/bulkdash_alerting.jsonnet +++ /dev/null @@ -1,168 +0,0 @@ -{ - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "id": null, - "links": [], - "panels": [ - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 65 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "5m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "avg" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "frequency": "10s", - "handler": 1, - "name": "bulk alerting", - "noDataState": "no_data", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "gdev-prometheus", - "fill": 1, - "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 0 - }, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "$$hashKey": "object:117", - "expr": "go_goroutines", - "format": "time_series", - "intervalFactor": 1, - "refId": "A" - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 50 - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Panel Title", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "schemaVersion": 16, - "style": "dark", - "tags": [], - "templating": { - "list": [] - }, - "time": { - "from": "now-6h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "", - "title": "New dashboard", - "uid": null, - "version": 0 -} \ No newline at end of file diff --git a/devenv/bulk_alerting_dashboards/dashboard.libsonnet b/devenv/bulk_alerting_dashboards/dashboard.libsonnet new file mode 100644 index 00000000000..c9caa8dd2b7 --- /dev/null +++ b/devenv/bulk_alerting_dashboards/dashboard.libsonnet @@ -0,0 +1,170 @@ +{ + alertingDashboard(dashboardCounter, datasourceCounter):: { + title: "alerting-title-" + dashboardCounter, + editable: true, + gnetId: null, + graphTooltip: 0, + id: null, + links: [], + panels: [ + { + alert: { + conditions: [ + { + evaluator: { + params: [ + 65 + ], + type: "gt" + }, + operator: { + type: "and" + }, + query: { + params: [ + "A", + "5m", + "now" + ] + }, + reducer: { + params: [], + type: "avg" + }, + type: "query" + } + ], + executionErrorState: "alerting", + frequency: "24h", + handler: 1, + name: "bulk alerting " + dashboardCounter, + noDataState: "no_data", + notifications: [] + }, + aliasColors: {}, + bars: false, + dashLength: 10, + dashes: false, + datasource: "gfdev-bulkalerting-" + datasourceCounter, + fill: 1, + gridPos: { + h: 9, + w: 12, + x: 0, + y: 0 + }, + id: 1, + legend: { + avg: false, + current: false, + max: false, + min: false, + show: true, + total: false, + values: false + }, + lines: true, + linewidth: 1, + nullPointMode: "null", + percentage: false, + pointradius: 5, + points: false, + renderer: "flot", + seriesOverrides: [], + spaceLength: 10, + stack: false, + steppedLine: false, + targets: [ + { + expr: "go_goroutines", + format: "time_series", + intervalFactor: 1, + refId: "A" + } + ], + thresholds: [ + { + colorMode: "critical", + fill: true, + line: true, + op: "gt", + value: 50 + } + ], + timeFrom: null, + timeShift: null, + title: "Panel Title", + tooltip: { + shared: true, + sort: 0, + value_type: "individual" + }, + type: "graph", + xaxis: { + buckets: null, + mode: "time", + name: null, + show: true, + values: [] + }, + yaxes: [ + { + format: "short", + label: null, + logBase: 1, + max: null, + min: null, + show: true + }, + { + format: "short", + label: null, + logBase: 1, + max: null, + min: null, + show: true + } + ] + } + ], + schemaVersion: 16, + style: "dark", + tags: [], + templating: { + list: [] + }, + time: { + from: "now-6h", + to: "now" + }, + timepicker: { + refresh_intervals: [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + time_options: [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + timezone: "", + uid: null, + version: 0 + }, +} + diff --git a/devenv/bulk_alerting_dashboards/datasources.jsonnet b/devenv/bulk_alerting_dashboards/datasources.jsonnet new file mode 100644 index 00000000000..453e1a812bf --- /dev/null +++ b/devenv/bulk_alerting_dashboards/datasources.jsonnet @@ -0,0 +1,14 @@ +local arr = std.range(1, 100); + +{ + "apiVersion": 1, + "datasources": [ + { + "name": 'gfdev-bulkalerting-' + counter, + "type": "prometheus", + "access": "proxy", + "url": "http://localhost:9090" + } + for counter in arr + ], +} diff --git a/devenv/setup.sh b/devenv/setup.sh index c9cc0d47a6f..e29ad426923 100755 --- a/devenv/setup.sh +++ b/devenv/setup.sh @@ -18,14 +18,21 @@ bulkAlertingDashboard() { requiresJsonnet - COUNTER=0 - MAX=100 + jsonnet -o "bulk_alerting_dashboards/bulk_alerting_datasources.yaml" ./bulk_alerting_dashboards/datasources.jsonnet + + COUNTER=1 + DS=1 + MAX=1000 while [ $COUNTER -lt $MAX ]; do - jsonnet -o "bulk_alerting_dashboards/alerting_dashboard${COUNTER}.json" -e "local bulkDash = import 'bulk_alerting_dashboards/bulkdash_alerting.jsonnet'; bulkDash + { uid: 'bd-${COUNTER}', title: 'alerting-title-${COUNTER}' }" + jsonnet -o "bulk_alerting_dashboards/alerting_dashboard${COUNTER}.json" \ + -e "local bulkDash = import 'bulk_alerting_dashboards/dashboard.libsonnet'; bulkDash.alertingDashboard(${COUNTER}, ${DS})" let COUNTER=COUNTER+1 + let DS=COUNTER/10 + let DS=DS+1 done ln -s -f ../../../devenv/bulk_alerting_dashboards/bulk_alerting_dashboards.yaml ../conf/provisioning/dashboards/custom.yaml + ln -s -f ../../../devenv/bulk_alerting_dashboards/bulk_alerting_datasources.yaml ../conf/provisioning/datasources/custom.yaml } requiresJsonnet() {