Merge pull request #733 from knatsakis/master
kube-prometheus: add stateful sets dashboard
This commit is contained in:
440
assets/grafana/statefulset.dashboard.py
Normal file
440
assets/grafana/statefulset.dashboard.py
Normal file
@@ -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),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)
|
||||||
@@ -5559,6 +5559,726 @@ data:
|
|||||||
],
|
],
|
||||||
"overwrite": true
|
"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: |+
|
prometheus-datasource.json: |+
|
||||||
{
|
{
|
||||||
"access": "proxy",
|
"access": "proxy",
|
||||||
|
|||||||
Reference in New Issue
Block a user