This repository has been archived on 2023-04-02. You can view files and clone it, but cannot push or open issues or pull requests.
gitops-tbrnt/monitoring/vendor/github.com/kubernetes-monitoring/kubernetes-mixin/dashboards/network-usage/workload-total.libsonnet

429 lines
14 KiB
Plaintext

local grafana = import 'github.com/grafana/grafonnet-lib/grafonnet/grafana.libsonnet';
local dashboard = grafana.dashboard;
local row = grafana.row;
local prometheus = grafana.prometheus;
local template = grafana.template;
local graphPanel = grafana.graphPanel;
local annotation = grafana.annotation;
local singlestat = grafana.singlestat;
{
grafanaDashboards+:: {
'workload-total.json':
local newBarplotPanel(graphTitle, graphQuery, graphFormat='Bps', legendFormat='{{namespace}}') =
local target =
prometheus.target(
graphQuery
) + {
intervalFactor: 1,
legendFormat: legendFormat,
step: 10,
};
graphPanel.new(
title=graphTitle,
span=24,
datasource='$datasource',
fill=2,
min_span=24,
format=graphFormat,
min=0,
max=null,
show_xaxis=false,
x_axis_mode='series',
x_axis_values='current',
lines=false,
bars=true,
stack=false,
legend_show=true,
legend_values=true,
legend_min=false,
legend_max=false,
legend_current=true,
legend_avg=false,
legend_alignAsTable=true,
legend_rightSide=true,
legend_sort='current',
legend_sortDesc=true,
nullPointMode='null'
).addTarget(target) + {
legend+: {
hideEmpty: true,
hideZero: true,
},
paceLength: 10,
tooltip+: {
sort: 2,
},
};
local newGraphPanel(graphTitle, graphQuery, graphFormat='Bps') =
local target =
prometheus.target(
graphQuery
) + {
intervalFactor: 1,
legendFormat: '{{pod}}',
step: 10,
};
graphPanel.new(
title=graphTitle,
span=12,
datasource='$datasource',
fill=2,
linewidth=2,
min_span=12,
format=graphFormat,
min=0,
max=null,
x_axis_mode='time',
x_axis_values='total',
lines=true,
stack=true,
legend_show=true,
nullPointMode='connected'
).addTarget(target) + {
legend+: {
hideEmpty: true,
hideZero: true,
},
paceLength: 10,
tooltip+: {
sort: 2,
},
};
local clusterTemplate =
template.new(
name='cluster',
datasource='$datasource',
query='label_values(kube_pod_info, %s)' % $._config.clusterLabel,
hide=if $._config.showMultiCluster then '' else '2',
refresh=1
);
local namespaceTemplate =
template.new(
name='namespace',
datasource='$datasource',
query='label_values(container_network_receive_packets_total{%(clusterLabel)s="$cluster"}, namespace)' % $._config,
allValues='.+',
current='kube-system',
hide='',
refresh=1,
includeAll=true,
sort=1
) + {
auto: false,
auto_count: 30,
auto_min: '10s',
definition: 'label_values(container_network_receive_packets_total{%(clusterLabel)s="$cluster"}, namespace)' % $._config,
skipUrlSync: false,
};
local workloadTemplate =
template.new(
name='workload',
datasource='$datasource',
query='label_values(namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace=~"$namespace"}, workload)' % $._config,
current='',
hide='',
refresh=1,
includeAll=false,
sort=1
) + {
auto: false,
auto_count: 30,
auto_min: '10s',
definition: 'label_values(namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace=~"$namespace"}, workload)' % $._config,
skipUrlSync: false,
};
local typeTemplate =
template.new(
name='type',
datasource='$datasource',
query='label_values(namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace=~"$namespace", workload=~"$workload"}, workload_type)' % $._config,
current='deployment',
hide='',
refresh=1,
includeAll=false,
sort=0
) + {
auto: false,
auto_count: 30,
auto_min: '10s',
definition: 'label_values(namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace=~"$namespace", workload=~"$workload"}, workload_type)' % $._config,
skipUrlSync: false,
};
local resolutionTemplate =
template.new(
name='resolution',
datasource='$datasource',
query='30s,5m,1h',
current='5m',
hide='',
refresh=2,
includeAll=false,
sort=1
) + {
auto: false,
auto_count: 30,
auto_min: '10s',
skipUrlSync: false,
type: 'interval',
options: [
{
selected: false,
text: '30s',
value: '30s',
},
{
selected: true,
text: '5m',
value: '5m',
},
{
selected: false,
text: '1h',
value: '1h',
},
],
};
local intervalTemplate =
template.new(
name='interval',
datasource='$datasource',
query='4h',
current='5m',
hide=2,
refresh=2,
includeAll=false,
sort=1
) + {
auto: false,
auto_count: 30,
auto_min: '10s',
skipUrlSync: false,
type: 'interval',
options: [
{
selected: true,
text: '4h',
value: '4h',
},
],
};
//##### Current Bandwidth Row ######
local currentBandwidthRow =
row.new(
title='Current Bandwidth'
);
//##### Average Bandwidth Row ######
local averageBandwidthRow =
row.new(
title='Average Bandwidth',
collapse=true,
);
//##### Bandwidth History Row ######
local bandwidthHistoryRow =
row.new(
title='Bandwidth HIstory',
);
//##### Packet Row ######
// collapsed, so row must include panels
local packetRow =
row.new(
title='Packets',
collapse=true,
);
//##### Error Row ######
// collapsed, so row must include panels
local errorRow =
row.new(
title='Errors',
collapse=true,
);
dashboard.new(
title='%(dashboardNamePrefix)sNetworking / Workload' % $._config.grafanaK8s,
tags=($._config.grafanaK8s.dashboardTags),
editable=true,
schemaVersion=18,
refresh=($._config.grafanaK8s.refresh),
time_from='now-1h',
time_to='now',
)
.addTemplate(
{
current: {
text: 'default',
value: 'default',
},
hide: 0,
label: null,
name: 'datasource',
options: [],
query: 'prometheus',
refresh: 1,
regex: '',
type: 'datasource',
},
)
.addTemplate(clusterTemplate)
.addTemplate(namespaceTemplate)
.addTemplate(workloadTemplate)
.addTemplate(typeTemplate)
.addTemplate(resolutionTemplate)
.addTemplate(intervalTemplate)
.addAnnotation(annotation.default)
.addPanel(currentBandwidthRow, gridPos={ h: 1, w: 24, x: 0, y: 0 })
.addPanel(
newBarplotPanel(
graphTitle='Current Rate of Bytes Received',
graphQuery=|||
sort_desc(sum(irate(container_network_receive_bytes_total{%(clusterLabel)s="$cluster",namespace=~"$namespace"}[$interval:$resolution])
* on (namespace,pod)
group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
||| % $._config,
legendFormat='{{ pod }}',
),
gridPos={ h: 9, w: 12, x: 0, y: 1 }
)
.addPanel(
newBarplotPanel(
graphTitle='Current Rate of Bytes Transmitted',
graphQuery=|||
sort_desc(sum(irate(container_network_transmit_bytes_total{%(clusterLabel)s="$cluster",namespace=~"$namespace"}[$interval:$resolution])
* on (namespace,pod)
group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
||| % $._config,
legendFormat='{{ pod }}',
),
gridPos={ h: 9, w: 12, x: 12, y: 1 }
)
.addPanel(
averageBandwidthRow
.addPanel(
newBarplotPanel(
graphTitle='Average Rate of Bytes Received',
graphQuery=|||
sort_desc(avg(irate(container_network_receive_bytes_total{%(clusterLabel)s="$cluster",namespace=~"$namespace"}[$interval:$resolution])
* on (namespace,pod)
group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
||| % $._config,
legendFormat='{{ pod }}',
),
gridPos={ h: 9, w: 12, x: 0, y: 11 }
)
.addPanel(
newBarplotPanel(
graphTitle='Average Rate of Bytes Transmitted',
graphQuery=|||
sort_desc(avg(irate(container_network_transmit_bytes_total{%(clusterLabel)s="$cluster",namespace=~"$namespace"}[$interval:$resolution])
* on (namespace,pod)
group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
||| % $._config,
legendFormat='{{ pod }}',
),
gridPos={ h: 9, w: 12, x: 12, y: 11 }
),
gridPos={ h: 1, w: 24, x: 0, y: 10 },
)
.addPanel(
bandwidthHistoryRow, gridPos={ h: 1, w: 24, x: 0, y: 11 }
)
.addPanel(
newGraphPanel(
graphTitle='Receive Bandwidth',
graphQuery=|||
sort_desc(sum(irate(container_network_receive_bytes_total{%(clusterLabel)s="$cluster",namespace=~"$namespace"}[$interval:$resolution])
* on (namespace,pod)
group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
||| % $._config,
),
gridPos={ h: 9, w: 12, x: 0, y: 12 }
)
.addPanel(
newGraphPanel(
graphTitle='Transmit Bandwidth',
graphQuery=|||
sort_desc(sum(irate(container_network_transmit_bytes_total{%(clusterLabel)s="$cluster",namespace=~"$namespace"}[$interval:$resolution])
* on (namespace,pod)
group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
||| % $._config,
),
gridPos={ h: 9, w: 12, x: 12, y: 12 }
)
.addPanel(
packetRow
.addPanel(
newGraphPanel(
graphTitle='Rate of Received Packets',
graphQuery=|||
sort_desc(sum(irate(container_network_receive_packets_total{%(clusterLabel)s="$cluster",namespace=~"$namespace"}[$interval:$resolution])
* on (namespace,pod)
group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
||| % $._config,
graphFormat='pps'
),
gridPos={ h: 9, w: 12, x: 0, y: 22 }
)
.addPanel(
newGraphPanel(
graphTitle='Rate of Transmitted Packets',
graphQuery=|||
sort_desc(sum(irate(container_network_transmit_packets_total{%(clusterLabel)s="$cluster",namespace=~"$namespace"}[$interval:$resolution])
* on (namespace,pod)
group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
||| % $._config,
graphFormat='pps'
),
gridPos={ h: 9, w: 12, x: 12, y: 22 }
),
gridPos={ h: 1, w: 24, x: 0, y: 21 }
)
.addPanel(
errorRow
.addPanel(
newGraphPanel(
graphTitle='Rate of Received Packets Dropped',
graphQuery=|||
sort_desc(sum(irate(container_network_receive_packets_dropped_total{%(clusterLabel)s="$cluster",namespace=~"$namespace"}[$interval:$resolution])
* on (namespace,pod)
group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
||| % $._config,
graphFormat='pps'
),
gridPos={ h: 9, w: 12, x: 0, y: 23 }
)
.addPanel(
newGraphPanel(
graphTitle='Rate of Transmitted Packets Dropped',
graphQuery=|||
sort_desc(sum(irate(container_network_transmit_packets_dropped_total{%(clusterLabel)s="$cluster",namespace=~"$namespace"}[$interval:$resolution])
* on (namespace,pod)
group_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{%(clusterLabel)s="$cluster",namespace=~"$namespace", workload=~"$workload", workload_type="$type"}) by (pod))
||| % $._config,
graphFormat='pps'
),
gridPos={ h: 9, w: 12, x: 12, y: 23 }
),
gridPos={ h: 1, w: 24, x: 0, y: 22 }
),
},
}