Use grafanalib to generate Grafana dashboards
This commit is contained in:
215
assets/grafana/pods.dashboard.py
Normal file
215
assets/grafana/pods.dashboard.py
Normal file
@@ -0,0 +1,215 @@
|
||||
from grafanalib.core import *
|
||||
|
||||
|
||||
dashboard = Dashboard(
|
||||
title='Pods',
|
||||
version=1,
|
||||
graphTooltip=1,
|
||||
refresh=False,
|
||||
schemaVersion=14,
|
||||
time=Time(start='now-6h'),
|
||||
timezone='browser',
|
||||
inputs=[
|
||||
{
|
||||
'name': 'DS_PROMETHEUS',
|
||||
'label': 'prometheus',
|
||||
'description': '',
|
||||
'type': 'datasource',
|
||||
'pluginId': 'prometheus',
|
||||
'pluginName': 'Prometheus'
|
||||
},
|
||||
],
|
||||
templating=Templating(list=[
|
||||
{
|
||||
'allValue': '.*',
|
||||
'current': {},
|
||||
'datasource': '${DS_PROMETHEUS}',
|
||||
'hide': 0,
|
||||
'includeAll': True,
|
||||
'label': 'Namespace',
|
||||
'multi': False,
|
||||
'name': 'namespace',
|
||||
'options': [],
|
||||
'query': 'label_values(kube_pod_info, namespace)',
|
||||
'refresh': 1,
|
||||
'regex': '',
|
||||
'sort': 0,
|
||||
'tagValuesQuery': '',
|
||||
'tags': [],
|
||||
'tagsQuery': '',
|
||||
'type': 'query',
|
||||
'useTags': False,
|
||||
},
|
||||
{
|
||||
'allValue': None,
|
||||
'current': {},
|
||||
'datasource': '${DS_PROMETHEUS}',
|
||||
'hide': 0,
|
||||
'includeAll': False,
|
||||
'label': 'Pod',
|
||||
'multi': False,
|
||||
'name': 'pod',
|
||||
'options': [],
|
||||
'query': 'label_values(kube_pod_info{namespace=~"$namespace"}, '
|
||||
'pod)',
|
||||
'refresh': 1,
|
||||
'regex': '',
|
||||
'sort': 0,
|
||||
'tagValuesQuery': '',
|
||||
'tags': [],
|
||||
'tagsQuery': '',
|
||||
'type': 'query',
|
||||
'useTags': False,
|
||||
},
|
||||
{
|
||||
'allValue': '.*',
|
||||
'current': {},
|
||||
'datasource': '${DS_PROMETHEUS}',
|
||||
'hide': 0,
|
||||
'includeAll': True,
|
||||
'label': 'Container',
|
||||
'multi': False,
|
||||
'name': 'container',
|
||||
'options': [],
|
||||
'query': 'label_values(kube_pod_container_info{namespace='
|
||||
'"$namespace", pod="$pod"}, container)',
|
||||
'refresh': 1,
|
||||
'regex': '',
|
||||
'sort': 0,
|
||||
'tagValuesQuery': '',
|
||||
'tags': [],
|
||||
'tagsQuery': '',
|
||||
'type': 'query',
|
||||
'useTags': False,
|
||||
},
|
||||
]),
|
||||
rows=[
|
||||
Row(
|
||||
height=250, title='Row', showTitle=False,
|
||||
titleSize='h6', panels=[
|
||||
Graph(
|
||||
title='Memory Usage',
|
||||
dataSource='${DS_PROMETHEUS}',
|
||||
id=1,
|
||||
isNew=False,
|
||||
spaceLength=10,
|
||||
span=12,
|
||||
dashLength=10,
|
||||
dashes=False,
|
||||
tooltip=Tooltip(msResolution=True, valueType='cumulative'),
|
||||
legend=Legend(
|
||||
alignAsTable=True, avg=True, current=True,
|
||||
rightSide=True, total=False, values=True,
|
||||
),
|
||||
yAxes=YAxes(
|
||||
YAxis(
|
||||
format='bytes', min=None,
|
||||
),
|
||||
YAxis(format='short', min=None),
|
||||
),
|
||||
targets=[
|
||||
{
|
||||
'expr': 'sum by(container_name) (container_'
|
||||
'memory_usage_bytes{pod_name="$pod", '
|
||||
'container_name=~"$container", '
|
||||
'container_name!="POD"})',
|
||||
'interval': '10s',
|
||||
'intervalFactor': 1,
|
||||
'legendFormat': 'Current: {{ container_name }}',
|
||||
'metric': 'container_memory_usage_bytes',
|
||||
'refId': 'A',
|
||||
'step': 15,
|
||||
},
|
||||
{
|
||||
'expr': 'kube_pod_container_resource_requests_'
|
||||
'memory_bytes{pod="$pod", container=~'
|
||||
'"$container"}',
|
||||
'interval': '10s',
|
||||
'intervalFactor': 2,
|
||||
'legendFormat': 'Requested: {{ container }}',
|
||||
'metric': 'kube_pod_container_resource_'
|
||||
'requests_memory_bytes',
|
||||
'refId': 'B',
|
||||
'step': 20,
|
||||
},
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
height=250, title='Row', showTitle=False,
|
||||
titleSize='h6', panels=[
|
||||
Graph(
|
||||
title='CPU Usage',
|
||||
dataSource='${DS_PROMETHEUS}',
|
||||
id=2,
|
||||
isNew=False,
|
||||
spaceLength=10,
|
||||
span=12,
|
||||
dashLength=10,
|
||||
dashes=False,
|
||||
legend=Legend(
|
||||
alignAsTable=True, avg=True, current=True,
|
||||
rightSide=True, total=False, values=True,
|
||||
),
|
||||
tooltip=Tooltip(msResolution=True, valueType='cumulative'),
|
||||
yAxes=YAxes(
|
||||
YAxis(
|
||||
format='short', min=None,
|
||||
),
|
||||
YAxis(format='short', min=None),
|
||||
),
|
||||
targets=[
|
||||
{
|
||||
'expr': 'sum by (container_name)('
|
||||
'rate(container_cpu_usage_seconds_total'
|
||||
'{image!="",container_name!="POD",pod_name='
|
||||
'"$pod"}[1m]))',
|
||||
'intervalFactor': 2,
|
||||
'legendFormat': '{{ container_name }}',
|
||||
'refId': 'A',
|
||||
'step': 30
|
||||
},
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
height=250, title='New Row', showTitle=False,
|
||||
titleSize='h6', panels=[
|
||||
Graph(
|
||||
title='Network I/O',
|
||||
dataSource='${DS_PROMETHEUS}',
|
||||
id=3,
|
||||
isNew=False,
|
||||
spaceLength=10,
|
||||
span=12,
|
||||
dashLength=10,
|
||||
dashes=False,
|
||||
legend=Legend(
|
||||
alignAsTable=True, avg=True, current=True,
|
||||
rightSide=True, total=False, values=True,
|
||||
),
|
||||
tooltip=Tooltip(msResolution=True, valueType='cumulative'),
|
||||
yAxes=YAxes(
|
||||
YAxis(
|
||||
format='bytes', min=None,
|
||||
),
|
||||
YAxis(format='short', min=None),
|
||||
),
|
||||
targets=[
|
||||
{
|
||||
'expr': 'sort_desc(sum by (pod_name) (rate'
|
||||
'(container_network_receive_bytes_total{'
|
||||
'pod_name="$pod"}[1m])))',
|
||||
'intervalFactor': 2,
|
||||
'legendFormat': '{{ pod_name }}',
|
||||
'refId': 'A',
|
||||
'step': 30
|
||||
},
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
Reference in New Issue
Block a user