diff --git a/assets/grafana/statefulset.dashboard.py b/assets/grafana/statefulset.dashboard.py new file mode 100644 index 0000000000000000000000000000000000000000..a28d70fdf9f5ffb4b6eeb052d34fe19dc62e352f --- /dev/null +++ b/assets/grafana/statefulset.dashboard.py @@ -0,0 +1,440 @@ +import sys +import os.path +sys.path.insert(0, os.path.dirname(__file__)) +from _grafanalib import * + + +dashboard = Dashboard( + title='StatefulSet', + version=1, + graphTooltip=1, + time=Time(start='now-6h'), + templating=Templating(list=[ + { + 'allValue': '.*', + 'current': {}, + 'datasource': '${DS_PROMETHEUS}', + 'hide': 0, + 'includeAll': False, + 'label': 'Namespace', + 'multi': False, + 'name': 'statefulset_namespace', + 'options': [], + 'query': 'label_values(kube_statefulset_metadata_generation, ' + 'namespace)', + 'refresh': 1, + 'regex': '', + 'sort': 0, + 'tagValuesQuery': None, + 'tags': [], + 'tagsQuery': '', + 'type': 'query', + 'useTags': False, + }, + { + 'allValue': None, + 'current': {}, + 'datasource': '${DS_PROMETHEUS}', + 'hide': 0, + 'includeAll': False, + 'label': 'StatefulSet', + 'multi': False, + 'name': 'statefulset_name', + 'options': [], + 'query': 'label_values(kube_statefulset_metadata_generation' + '{namespace="$statefulset_namespace"}, statefulset)', + 'refresh': 1, + 'regex': '', + 'sort': 0, + 'tagValuesQuery': '', + 'tags': [], + 'tagsQuery': 'statefulset', + 'type': 'query', + 'useTags': False, + }, + ]), + rows=[ + Row(panels=[ + SingleStat( + title='CPU', + id=8, + gauge=Gauge(show=False), + postfix='cores', + span=4, + valueFontSize='110%', + mappingType=1, + mappingTypes=[ + { + 'name': 'value to text', + 'value': 1, + }, + { + 'name': 'range to text', + 'value': 2, + }, + ], + valueMaps=[ + { + 'op': '=', + 'text': 'N/A', + 'value': 'null', + }, + ], + rangeMaps=[ + { + 'from': 'null', + 'text': 'N/A', + 'to': 'null', + }, + ], + colors=[ + (245, 54, 54, 0.9), + (237, 129, 40, 0.89), + (50, 172, 45, 0.97), + ], + sparkline=SparkLine( + fillColor=(31, 118, 189, 0.18), + lineColor=(31, 120, 193), + show=True, + ), + targets=[ + { + 'expr': 'sum(rate(container_cpu_usage_seconds_total' + '{namespace=\"$statefulset_namespace\",pod_name=~\"' + '$statefulset_name.*\"}[3m]))', + }, + ], + ), + SingleStat( + title='Memory', + id=9, + postfix='GB', + prefixFontSize='80%', + gauge=Gauge(show=False), + span=4, + valueFontSize='110%', + mappingType=1, + mappingTypes=[ + { + 'name': 'value to text', + 'value': 1, + }, + { + 'name': 'range to text', + 'value': 2, + }, + ], + sparkline=SparkLine( + fillColor=(31, 118, 189, 0.18), + lineColor=(31, 120, 193), + show=True, + ), + valueMaps=[ + { + 'op': '=', + 'text': 'N/A', + 'value': 'null', + }, + ], + rangeMaps=[ + { + 'from': 'null', + 'text': 'N/A', + 'to': 'null', + }, + ], + colors=[ + (245, 54, 54, 0.9), + (237, 129, 40, 0.89), + (50, 172, 45, 0.97), + ], + targets=[ + { + 'expr': 'sum(container_memory_usage_bytes{namespace=' + '\"$statefulset_namespace\",pod_name=~\"$' + 'statefulset_name.*\"}) / 1024^3', + 'intervalFactor': 2, + 'refId': 'A', + 'step': 600, + }, + ], + ), + SingleStat( + title='Network', + format='Bps', + gauge=Gauge(thresholdMarkers=False), + id=7, + postfix='', + span=4, + mappingType=1, + mappingTypes=[ + { + 'name': 'value to text', + 'value': 1, + }, + { + 'name': 'range to text', + 'value': 2, + }, + ], + sparkline=SparkLine( + fillColor=(31, 118, 189, 0.18), + lineColor=(31, 120, 193), + show=True, + ), + valueMaps=[ + { + 'op': '=', + 'text': 'N/A', + 'value': 'null', + }, + ], + rangeMaps=[ + { + 'from': 'null', + 'text': 'N/A', + 'to': 'null', + }, + ], + colors=[ + (245, 54, 54, 0.9), + (237, 129, 40, 0.89), + (50, 172, 45, 0.97), + ], + targets=[ + { + 'expr': 'sum(rate(container_network_transmit_' + 'bytes_total' + '{namespace=\"$statefulset_namespace\",pod_name=~\"' + '$statefulset_name.*\"}[3m])) + ' + 'sum(rate(container_network_receive_bytes_total' + '{namespace=\"$statefulset_namespace\",pod_name=~' + '\"$statefulset_name.*\"}[3m]))', + }, + ], + ), + ], + height=200, + ), + Row( + height=100, panels=[ + SingleStat( + title='Desired Replicas', + id=5, + mappingType=1, + mappingTypes=[ + { + 'name': 'value to text', + 'value': 1, + }, + { + 'name': 'range to text', + 'value': 2, + }, + ], + span=3, + colors=[ + (245, 54, 54, 0.9), + (237, 129, 40, 0.89), + (50, 172, 45, 0.97), + ], + targets=[ + { + 'metric': 'kube_statefulset_replicas', + 'expr': 'max(kube_statefulset_replicas' + '{statefulset="$statefulset_name",namespace=' + '"$statefulset_namespace"}) without ' + '(instance, pod)', + }, + ], + valueMaps=[ + { + 'op': '=', + 'text': 'N/A', + 'value': 'null', + }, + ], + gauge=Gauge(thresholdMarkers=False, show=False), + rangeMaps=[ + { + 'from': 'null', + 'text': 'N/A', + 'to': 'null', + }, + ], + ), + SingleStat( + title='Available Replicas', + colors=[ + (245, 54, 54, 0.9), + (237, 129, 40, 0.89), + (50, 172, 45, 0.97), + ], + gauge=Gauge(show=False), + id=6, + mappingType=1, + mappingTypes=[ + { + 'name': 'value to text', + 'value': 1, + }, + { + 'name': 'range to text', + 'value': 2, + }, + ], + targets=[ + { + 'expr': 'min(kube_statefulset_status_replicas' + '{statefulset=\"$statefulset_name\",' + 'namespace=\"$statefulset_namespace\"}) without ' + '(instance, pod)', + }, + ], + rangeMaps=[ + { + 'from': 'null', + 'text': 'N/A', + 'to': 'null', + }, + ], + span=3, + sparkline=SparkLine(), + valueMaps=[ + { + 'op': '=', + 'text': 'N/A', + 'value': 'null', + } + ], + ), + SingleStat( + title='Observed Generation', + colors=[ + (245, 54, 54, 0.9), + (237, 129, 40, 0.89), + (50, 172, 45, 0.97), + ], + gauge=Gauge(), + id=3, + mappingType=1, + mappingTypes=[ + { + 'name': 'value to text', + 'value': 1, + }, + { + 'name': 'range to text', + 'value': 2, + }, + ], + targets=[ + { + 'expr': 'max(kube_statefulset_status_observed_' + 'generation{statefulset=\"$statefulset_name\",' + 'namespace=\"$statefulset_namespace\"}) without ' + '(instance, pod)', + }, + ], + rangeMaps=[ + { + 'from': "null", + 'text': 'N/A', + 'to': 'null', + }, + ], + span=3, + sparkline=SparkLine(), + valueMaps=[ + { + 'op': '=', + 'text': 'N/A', + 'value': 'null', + } + ], + ), + SingleStat( + title='Metadata Generation', + colors=[ + (245, 54, 54, 0.9), + (237, 129, 40, 0.89), + (50, 172, 45, 0.97), + ], + gauge=Gauge(show=False), + id=2, + mappingType=1, + mappingTypes=[ + { + 'name': 'value to text', + 'value': 1, + }, + { + 'name': 'range to text', + 'value': 2, + }, + ], + targets=[ + { + 'expr': 'max(kube_statefulset_metadata_generation' + '{statefulset=\"$statefulset_name\",namespace=\"' + '$statefulset_namespace\"}) without (instance, ' + 'pod)', + }, + ], + rangeMaps=[ + { + 'from': 'null', + 'text': 'N/A', + 'to': 'null', + }, + ], + span=3, + sparkline=SparkLine(), + valueMaps=[ + { + 'op': '=', + 'text': 'N/A', + 'value': 'null', + }, + ], + ), + ], + ), + Row( + height=350, panels=[ + Graph( + title='Replicas', + dashLength=10, + dashes=False, + id=1, + spaceLength=10, + targets=[ + { + 'expr': 'min(kube_statefulset_status_replicas' + '{statefulset=\"$statefulset_name\",' + 'namespace=\"$statefulset_namespace\"}) without ' + '(instance, pod)', + 'legendFormat': 'available', + 'refId': 'B', + 'step': 30, + }, + { + 'expr': 'max(kube_statefulset_replicas' + '{statefulset=\"$statefulset_name\",namespace=\"' + '$statefulset_namespace\"}) without ' + '(instance, pod)', + 'legendFormat': 'desired', + 'refId': 'E', + 'step': 30, + } + ], + xAxis=XAxis(mode='time'), + yAxes=YAxes( + YAxis(min=None), + YAxis(format='short', min=None, show=False), + ), + ), + ] + ), + ], +) diff --git a/manifests/grafana/grafana-dashboards.yaml b/manifests/grafana/grafana-dashboards.yaml index e76a1103ef8374b9c64471b1c2c8b65a57094d42..aff751da690dc2f9beac8273366bf8721325574c 100644 --- a/manifests/grafana/grafana-dashboards.yaml +++ b/manifests/grafana/grafana-dashboards.yaml @@ -5559,6 +5559,726 @@ data: ], "overwrite": true } + statefulset-dashboard.json: |+ + { + "dashboard": + { + "__inputs": [ + { + "description": "", + "label": "prometheus", + "name": "DS_PROMETHEUS", + "pluginId": "prometheus", + "pluginName": "Prometheus", + "type": "datasource" + } + ], + "annotations": { + "list": [] + }, + "editable": true, + "graphTooltip": 1, + "hideControls": false, + "links": [], + "rows": [ + { + "collapse": false, + "height": "200px", + "panels": [ + { + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "${DS_PROMETHEUS}", + "editable": true, + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "id": 8, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "postfix": "cores", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "span": 4, + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "targets": [ + { + "expr": "sum(rate(container_cpu_usage_seconds_total{namespace=\"$statefulset_namespace\",pod_name=~\"$statefulset_name.*\"}[3m]))", + "intervalFactor": 2, + "refId": "A", + "step": 600 + } + ], + "title": "CPU", + "type": "singlestat", + "valueFontSize": "110%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "avg" + }, + { + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "${DS_PROMETHEUS}", + "editable": true, + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "id": 9, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "postfix": "GB", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "80%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "span": 4, + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "targets": [ + { + "expr": "sum(container_memory_usage_bytes{namespace=\"$statefulset_namespace\",pod_name=~\"$statefulset_name.*\"}) / 1024^3", + "intervalFactor": 2, + "refId": "A", + "step": 600 + } + ], + "title": "Memory", + "type": "singlestat", + "valueFontSize": "110%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "avg" + }, + { + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "${DS_PROMETHEUS}", + "editable": true, + "format": "Bps", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": false + }, + "id": 7, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "span": 4, + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": true + }, + "targets": [ + { + "expr": "sum(rate(container_network_transmit_bytes_total{namespace=\"$statefulset_namespace\",pod_name=~\"$statefulset_name.*\"}[3m])) + sum(rate(container_network_receive_bytes_total{namespace=\"$statefulset_namespace\",pod_name=~\"$statefulset_name.*\"}[3m]))", + "intervalFactor": 2, + "refId": "A", + "step": 600 + } + ], + "title": "Network", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "avg" + } + ], + "showTitle": false, + "title": "Dashboard Row", + "titleSize": "h6" + }, + { + "collapse": false, + "height": "100px", + "panels": [ + { + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "${DS_PROMETHEUS}", + "editable": true, + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": false + }, + "id": 5, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "span": 3, + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "targets": [ + { + "expr": "max(kube_statefulset_replicas{statefulset=\"$statefulset_name\",namespace=\"$statefulset_namespace\"}) without (instance, pod)", + "intervalFactor": 2, + "metric": "kube_statefulset_replicas", + "refId": "A", + "step": 600 + } + ], + "title": "Desired Replicas", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "avg" + }, + { + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "${DS_PROMETHEUS}", + "editable": true, + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "id": 6, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "span": 3, + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "targets": [ + { + "expr": "min(kube_statefulset_status_replicas{statefulset=\"$statefulset_name\",namespace=\"$statefulset_namespace\"}) without (instance, pod)", + "intervalFactor": 2, + "refId": "A", + "step": 600 + } + ], + "title": "Available Replicas", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "avg" + }, + { + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "${DS_PROMETHEUS}", + "editable": true, + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "id": 3, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "span": 3, + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "targets": [ + { + "expr": "max(kube_statefulset_status_observed_generation{statefulset=\"$statefulset_name\",namespace=\"$statefulset_namespace\"}) without (instance, pod)", + "intervalFactor": 2, + "refId": "A", + "step": 600 + } + ], + "title": "Observed Generation", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "avg" + }, + { + "colorBackground": false, + "colorValue": false, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "datasource": "${DS_PROMETHEUS}", + "editable": true, + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "id": 2, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "span": 3, + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false + }, + "targets": [ + { + "expr": "max(kube_statefulset_metadata_generation{statefulset=\"$statefulset_name\",namespace=\"$statefulset_namespace\"}) without (instance, pod)", + "intervalFactor": 2, + "refId": "A", + "step": 600 + } + ], + "title": "Metadata Generation", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "avg" + } + ], + "showTitle": false, + "title": "Dashboard Row", + "titleSize": "h6" + }, + { + "collapse": false, + "height": "350px", + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_PROMETHEUS}", + "editable": true, + "error": false, + "fill": 1, + "grid": { + "threshold1Color": "rgba(216, 200, 27, 0.27)", + "threshold2Color": "rgba(234, 112, 112, 0.22)" + }, + "id": 1, + "isNew": true, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "hideEmpty": false, + "hideZero": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "total": false + }, + "lines": true, + "linewidth": 2, + "links": [], + "nullPointMode": "connected", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "span": 12, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "min(kube_statefulset_status_replicas{statefulset=\"$statefulset_name\",namespace=\"$statefulset_namespace\"}) without (instance, pod)", + "intervalFactor": 2, + "legendFormat": "available", + "refId": "B", + "step": 30 + }, + { + "expr": "max(kube_statefulset_replicas{statefulset=\"$statefulset_name\",namespace=\"$statefulset_namespace\"}) without (instance, pod)", + "intervalFactor": 2, + "legendFormat": "desired", + "refId": "E", + "step": 30 + } + ], + "title": "Replicas", + "tooltip": { + "msResolution": true, + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "none", + "label": "", + "logBase": 1, + "show": true + }, + { + "format": "short", + "label": "", + "logBase": 1, + "show": false + } + ] + } + ], + "showTitle": false, + "title": "Dashboard Row", + "titleSize": "h6" + } + ], + "schemaVersion": 14, + "sharedCrosshair": false, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "allValue": ".*", + "current": {}, + "datasource": "${DS_PROMETHEUS}", + "hide": 0, + "includeAll": false, + "label": "Namespace", + "multi": false, + "name": "statefulset_namespace", + "options": [], + "query": "label_values(kube_statefulset_metadata_generation, namespace)", + "refresh": 1, + "regex": "", + "sort": 0, + "tagValuesQuery": null, + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": {}, + "datasource": "${DS_PROMETHEUS}", + "hide": 0, + "includeAll": false, + "label": "StatefulSet", + "multi": false, + "name": "statefulset_name", + "options": [], + "query": "label_values(kube_statefulset_metadata_generation{namespace=\"$statefulset_namespace\"}, statefulset)", + "refresh": 1, + "regex": "", + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "statefulset", + "type": "query", + "useTags": false + } + ] + }, + "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": "browser", + "title": "StatefulSet", + "version": 1 + } + , + "inputs": [ + { + "name": "DS_PROMETHEUS", + "pluginId": "prometheus", + "type": "datasource", + "value": "prometheus" + } + ], + "overwrite": true + } prometheus-datasource.json: |+ { "access": "proxy",