256 lines
9.3 KiB
Python
256 lines
9.3 KiB
Python
from grafanalib.core import *
|
|
|
|
|
|
dashboard = Dashboard(
|
|
title='Pods',
|
|
version=1,
|
|
graphTooltip=1,
|
|
refresh=False,
|
|
editable=False,
|
|
schemaVersion=14,
|
|
time=Time(start='now-6h'),
|
|
timezone='browser',
|
|
inputs=[
|
|
{
|
|
'name': 'prometheus',
|
|
'label': 'prometheus',
|
|
'description': '',
|
|
'type': 'datasource',
|
|
'pluginId': 'prometheus',
|
|
'pluginName': 'Prometheus'
|
|
},
|
|
],
|
|
templating=Templating(list=[
|
|
{
|
|
'allValue': '.*',
|
|
'current': {},
|
|
'datasource': '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': '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': '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, editable=False,
|
|
titleSize='h6', panels=[
|
|
Graph(
|
|
title='Memory Usage',
|
|
dataSource='prometheus',
|
|
id=1,
|
|
isNew=False,
|
|
editable=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,
|
|
},
|
|
{
|
|
'expr': 'kube_pod_container_resource_limits_'
|
|
'memory_bytes{pod="$pod", container=~'
|
|
'"$container"}',
|
|
'interval': '10s',
|
|
'intervalFactor': 2,
|
|
'legendFormat': 'Limit: {{ container }}',
|
|
'metric': 'kube_pod_container_resource_'
|
|
'limits_memory_bytes',
|
|
'refId': 'C',
|
|
'step': 20,
|
|
},
|
|
],
|
|
),
|
|
],
|
|
),
|
|
Row(
|
|
height=250, title='Row', showTitle=False, editable=False,
|
|
titleSize='h6', panels=[
|
|
Graph(
|
|
title='CPU Usage',
|
|
dataSource='prometheus',
|
|
id=2,
|
|
isNew=False,
|
|
editable=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
|
|
},
|
|
{
|
|
'expr': 'kube_pod_container_resource_requests_'
|
|
'cpu_cores{pod="$pod", container=~'
|
|
'"$container"}',
|
|
'interval': '10s',
|
|
'intervalFactor': 2,
|
|
'legendFormat': 'Requested: {{ container }}',
|
|
'metric': 'kube_pod_container_resource_'
|
|
'requests_cpu_cores',
|
|
'refId': 'B',
|
|
'step': 20,
|
|
},
|
|
{
|
|
'expr': 'kube_pod_container_resource_limits_'
|
|
'cpu_cores{pod="$pod", container=~'
|
|
'"$container"}',
|
|
'interval': '10s',
|
|
'intervalFactor': 2,
|
|
'legendFormat': 'Limit: {{ container }}',
|
|
'metric': 'kube_pod_container_resource_'
|
|
'limits_memory_bytes',
|
|
'refId': 'C',
|
|
'step': 20,
|
|
},
|
|
],
|
|
),
|
|
],
|
|
),
|
|
Row(
|
|
height=250, title='New Row', showTitle=False, editable=False,
|
|
titleSize='h6', panels=[
|
|
Graph(
|
|
title='Network I/O',
|
|
dataSource='prometheus',
|
|
id=3,
|
|
isNew=False,
|
|
editable=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
|
|
},
|
|
],
|
|
),
|
|
],
|
|
),
|
|
],
|
|
)
|