Use grafanalib to generate Grafana dashboards
This commit is contained in:
200
assets/grafana/kubernetes-resource-requests.dashboard.py
Normal file
200
assets/grafana/kubernetes-resource-requests.dashboard.py
Normal file
@@ -0,0 +1,200 @@
|
||||
from grafanalib.core import *
|
||||
|
||||
|
||||
dashboard = Dashboard(
|
||||
title='Kubernetes Resource Requests',
|
||||
version=2,
|
||||
graphTooltip=0,
|
||||
refresh=False,
|
||||
schemaVersion=14,
|
||||
time=Time(start='now-3h'),
|
||||
timezone='browser',
|
||||
inputs=[
|
||||
{
|
||||
'name': 'DS_PROMETHEUS',
|
||||
'label': 'prometheus',
|
||||
'description': '',
|
||||
'type': 'datasource',
|
||||
'pluginId': 'prometheus',
|
||||
'pluginName': 'Prometheus'
|
||||
},
|
||||
],
|
||||
rows=[
|
||||
Row(
|
||||
height=300, title='CPU Cores', showTitle=False,
|
||||
titleSize='h6', panels=[
|
||||
Graph(
|
||||
title='CPU Cores',
|
||||
description='This represents the total [CPU resource '
|
||||
'requests](https://kubernetes.io/docs/concepts/configu'
|
||||
'ration/manage-compute-resources-container/#meaning-of-'
|
||||
'cpu) in the cluster.\nFor comparison the total '
|
||||
'[allocatable CPU cores](https://github.com/kubernetes/'
|
||||
'community/blob/master/contributors/design-proposals/'
|
||||
'node-allocatable.md) is also shown.',
|
||||
id=1,
|
||||
dataSource='${DS_PROMETHEUS}',
|
||||
dashLength=10,
|
||||
dashes=False,
|
||||
isNew=False,
|
||||
lineWidth=1,
|
||||
spaceLength=10,
|
||||
nullPointMode='null',
|
||||
span=9,
|
||||
tooltip=Tooltip(
|
||||
msResolution=False, valueType='individual'
|
||||
),
|
||||
yAxes=YAxes(
|
||||
YAxis(format='short', label='CPU Cores', min=None,),
|
||||
YAxis(format='short', min=None),
|
||||
),
|
||||
targets=[
|
||||
{
|
||||
'expr': 'min(sum(kube_node_status_allocatable_'
|
||||
'cpu_cores) by (instance))',
|
||||
'hide': False,
|
||||
'intervalFactor': 2,
|
||||
'legendFormat': 'Allocatable CPU Cores',
|
||||
'refId': 'A',
|
||||
'step': 20,
|
||||
},
|
||||
{
|
||||
'expr': 'max(sum(kube_pod_container_resource_'
|
||||
'requests_cpu_cores) by (instance))',
|
||||
'hide': False,
|
||||
'intervalFactor': 2,
|
||||
'legendFormat': 'Requested CPU Cores',
|
||||
'refId': 'B',
|
||||
'step': 20,
|
||||
},
|
||||
],
|
||||
),
|
||||
SingleStat(
|
||||
title='CPU Cores',
|
||||
dataSource='${DS_PROMETHEUS}',
|
||||
id=2,
|
||||
format='percent',
|
||||
span=3,
|
||||
gauge=Gauge(show=True),
|
||||
sparkline=SparkLine(show=True),
|
||||
valueFontSize='110%',
|
||||
thresholds='80, 90',
|
||||
valueMaps=[
|
||||
{
|
||||
'op': '=',
|
||||
'text': 'N/A',
|
||||
'value': 'null',
|
||||
},
|
||||
],
|
||||
rangeMaps=[
|
||||
{
|
||||
'from': 'null',
|
||||
'text': 'N/A',
|
||||
'to': 'null',
|
||||
},
|
||||
],
|
||||
targets=[
|
||||
{
|
||||
'expr': 'max(sum(kube_pod_container_resource_'
|
||||
'requests_cpu_cores) by (instance)) / min(sum'
|
||||
'(kube_node_status_allocatable_cpu_cores) by '
|
||||
'(instance)) * 100',
|
||||
'intervalFactor': 2,
|
||||
'legendFormat': '',
|
||||
'refId': 'A',
|
||||
'step': 240,
|
||||
},
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
height=300, title='Memory', showTitle=False,
|
||||
titleSize='h6', panels=[
|
||||
Graph(
|
||||
title='Memory',
|
||||
id=3,
|
||||
dataSource='${DS_PROMETHEUS}',
|
||||
description='This represents the total [memory resource '
|
||||
'requests](https://kubernetes.io/docs/concepts/'
|
||||
'configuration/manage-compute-resources-container/'
|
||||
'#meaning-of-memory) in the cluster.\nFor comparison '
|
||||
'the total [allocatable memory](https://github.com/'
|
||||
'kubernetes/community/blob/master/contributors/'
|
||||
'design-proposals/node-allocatable.md) is also shown.',
|
||||
dashLength=10,
|
||||
dashes=False,
|
||||
lineWidth=1,
|
||||
isNew=False,
|
||||
spaceLength=10,
|
||||
span=9,
|
||||
nullPointMode='null',
|
||||
tooltip=Tooltip(
|
||||
msResolution=False, valueType='individual'
|
||||
),
|
||||
yAxes=YAxes(
|
||||
YAxis(format='bytes', label='Memory', min=None),
|
||||
YAxis(format='short', min=None),
|
||||
),
|
||||
targets=[
|
||||
{
|
||||
'expr': 'min(sum(kube_node_status_allocatable_'
|
||||
'memory_bytes) by (instance))',
|
||||
'hide': False,
|
||||
'intervalFactor': 2,
|
||||
'legendFormat': 'Allocatable Memory',
|
||||
'refId': 'A',
|
||||
'step': 20,
|
||||
},
|
||||
{
|
||||
'expr': 'max(sum(kube_pod_container_resource_'
|
||||
'requests_memory_bytes) by (instance))',
|
||||
'hide': False,
|
||||
'intervalFactor': 2,
|
||||
'legendFormat': 'Requested Memory',
|
||||
'refId': 'B',
|
||||
'step': 20,
|
||||
},
|
||||
],
|
||||
),
|
||||
SingleStat(
|
||||
title='Memory',
|
||||
dataSource='${DS_PROMETHEUS}',
|
||||
id=4,
|
||||
format='percent',
|
||||
span=3,
|
||||
gauge=Gauge(show=True),
|
||||
sparkline=SparkLine(show=True),
|
||||
valueFontSize='110%',
|
||||
thresholds='80, 90',
|
||||
valueMaps=[
|
||||
{
|
||||
'op': '=',
|
||||
'text': 'N/A',
|
||||
'value': 'null',
|
||||
},
|
||||
],
|
||||
rangeMaps=[
|
||||
{
|
||||
'from': 'null',
|
||||
'text': 'N/A',
|
||||
'to': 'null',
|
||||
},
|
||||
],
|
||||
targets=[
|
||||
{
|
||||
'expr': 'max(sum(kube_pod_container_resource_'
|
||||
'requests_memory_bytes) by (instance)) / '
|
||||
'min(sum(kube_node_status_allocatable_memory_'
|
||||
'bytes) by (instance)) * 100',
|
||||
'intervalFactor': 2,
|
||||
'legendFormat': '',
|
||||
'refId': 'A',
|
||||
'step': 240,
|
||||
},
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
Reference in New Issue
Block a user