infra/charts/victoria-metrics-k8s-stack/files/dashboards/generated/kubernetes-system-api-server.yaml
Konstantin Averkiev c45fd1a6ac added vm stack
2025-07-08 17:29:32 +03:00

1026 lines
23 KiB
YAML

{{- $Values := (.helm).Values | default .Values }}
{{- $clusterLabel := ($Values.global).clusterLabel | default "cluster" }}
{{- $multicluster := ((($Values.grafana).sidecar).dashboards).multicluster | default false }}
{{- $defaultDatasource := "prometheus" -}}
{{- range (((($Values.grafana).sidecar).datasources).victoriametrics | default list) }}
{{- if and .isDefault .type }}{{ $defaultDatasource = .type }}{{- end }}
{{- end }}
__elements: []
__inputs:
- description: ''
label: Prometheus
name: DS_PROMETHEUS
pluginId: prometheus
pluginName: Prometheus
type: datasource
__requires:
- id: grafana
name: Grafana
type: grafana
version: 8.4.4
- id: prometheus
name: Prometheus
type: datasource
version: 5.0.0
- id: timeseries
name: Time series
type: panel
version: ''
- id: stat
name: Stat
type: panel
version: ''
annotations:
list:
- builtIn: 1
datasource:
type: datasource
uid: grafana
enable: true
hide: true
iconColor: rgba(0, 211, 255, 1)
name: Annotations & Alerts
target:
limit: 100
matchAny: false
tags: []
type: dashboard
type: dashboard
- datasource:
type: datasource
uid: grafana
enable: true
hide: false
iconColor: '#5c4ee5'
name: terraform
target:
limit: 100
matchAny: false
tags:
- terraform
type: tags
- datasource:
type: datasource
uid: grafana
enable: true
hide: false
iconColor: red
name: oncall
target:
limit: 100
matchAny: false
tags:
- oncall
type: tags
condition: {{ ($Values.kubeApiServer).enabled }}
description: 'This is a modern API Server dashboard for your Kubernetes cluster(s). Made for kube-prometheus-stack and take advantage of the latest Grafana features. GitHub repository: https://github.com/dotdc/grafana-dashboards-kubernetes'
editable: false
fiscalYearStartMonth: 0
graphTooltip: 1
links: []
liveNow: false
panels:
- datasource:
type: {{ $defaultDatasource }}
uid: ${datasource}
fieldConfig:
defaults:
mappings:
- options:
'0':
text: DOWN
'1':
text: UP
type: value
thresholds:
mode: absolute
steps:
- color: red
value: null
- color: green
value: 1
overrides: []
gridPos:
h: 8
w: 12
x: 0
'y': 0
id: 42
options:
colorMode: background
graphMode: none
justifyMode: auto
orientation: horizontal
reduceOptions:
calcs:
- lastNotNull
fields: ''
values: false
textMode: value_and_name
pluginVersion: 10.0.1
targets:
- datasource:
type: {{ $defaultDatasource }}
uid: ${datasource}
exemplar: true
expr: up{job=~"kubernetes-apiservers|apiserver", {{ $clusterLabel }}=~"$cluster"}
interval: ''
legendFormat: '{{`{{`}} instance {{`}}`}}'
refId: A
title: API Server - Health Status
type: stat
- datasource:
type: {{ $defaultDatasource }}
uid: ${datasource}
fieldConfig:
defaults:
custom:
align: auto
cellOptions:
type: auto
inspect: false
mappings: []
thresholds:
mode: absolute
steps:
- color: green
value: null
- color: red
value: 80
overrides:
- matcher:
id: byName
options: __name__
properties:
- id: custom.width
value: 188
gridPos:
h: 8
w: 12
x: 12
'y': 0
id: 60
options:
cellHeight: sm
footer:
countRows: false
fields: ''
reducer:
- sum
show: false
showHeader: true
sortBy:
- desc: false
displayName: removed_release
pluginVersion: 10.0.1
targets:
- datasource:
type: {{ $defaultDatasource }}
uid: ${datasource}
exemplar: true
expr: apiserver_requested_deprecated_apis{ {{ $clusterLabel }}=~"$cluster"}
interval: ''
legendFormat: ''
refId: A
title: Deprecated Kubernetes Resources
transformations:
- id: labelsToFields
options:
keepLabels:
- group
- job
- removed_release
- resource
- version
- name
mode: columns
- id: merge
options: {}
- id: organize
options:
excludeByName:
Time: true
Value: true
job: true
indexByName:
Time: 6
Value: 7
group: 1
job: 5
namespace: 0
removed_release: 4
resource: 3
version: 2
renameByName: {}
- id: groupBy
options:
fields:
group:
aggregations:
- lastNotNull
operation: groupby
job:
aggregations: []
operation: groupby
namespace:
aggregations:
- lastNotNull
operation: groupby
removed_release:
aggregations: []
operation: groupby
resource:
aggregations:
- lastNotNull
operation: groupby
version:
aggregations: []
operation: groupby
type: table
- datasource:
type: {{ $defaultDatasource }}
uid: ${datasource}
fieldConfig:
defaults:
color:
mode: palette-classic
custom:
axisCenteredZero: false
axisColorMode: text
axisLabel: ''
axisPlacement: auto
barAlignment: 0
drawStyle: line
fillOpacity: 25
gradientMode: opacity
hideFrom:
legend: false
tooltip: false
viz: false
lineInterpolation: smooth
lineWidth: 2
pointSize: 5
scaleDistribution:
type: linear
showPoints: never
spanNulls: false
stacking:
group: A
mode: none
thresholdsStyle:
mode: 'off'
mappings: []
thresholds:
mode: absolute
steps:
- color: green
value: null
- color: red
value: 80
unit: short
overrides: []
gridPos:
h: 8
w: 12
x: 0
'y': 8
id: 38
options:
legend:
calcs: []
displayMode: list
placement: bottom
showLegend: true
tooltip:
mode: multi
sort: desc
pluginVersion: 8.3.3
targets:
- datasource:
type: {{ $defaultDatasource }}
uid: ${datasource}
exemplar: true
expr: sum by (code) (rate(apiserver_request_total{ {{ $clusterLabel }}=~"$cluster"}[$__rate_interval]))
interval: $resolution
legendFormat: '{{`{{`}} code {{`}}`}}'
refId: A
title: API Server - HTTP Requests by code
type: timeseries
- datasource:
type: {{ $defaultDatasource }}
uid: ${datasource}
fieldConfig:
defaults:
color:
mode: palette-classic
custom:
axisCenteredZero: false
axisColorMode: text
axisLabel: ''
axisPlacement: auto
barAlignment: 0
drawStyle: line
fillOpacity: 25
gradientMode: opacity
hideFrom:
legend: false
tooltip: false
viz: false
lineInterpolation: smooth
lineWidth: 2
pointSize: 5
scaleDistribution:
type: linear
showPoints: never
spanNulls: false
stacking:
group: A
mode: none
thresholdsStyle:
mode: 'off'
mappings: []
thresholds:
mode: absolute
steps:
- color: green
value: null
- color: red
value: 80
unit: short
overrides: []
gridPos:
h: 8
w: 12
x: 12
'y': 8
id: 39
options:
legend:
calcs: []
displayMode: list
placement: bottom
showLegend: true
tooltip:
mode: multi
sort: desc
pluginVersion: 8.3.3
targets:
- datasource:
type: {{ $defaultDatasource }}
uid: ${datasource}
exemplar: true
expr: sum by (verb) (rate(apiserver_request_total{ {{ $clusterLabel }}=~"$cluster"}[$__rate_interval]))
interval: $resolution
legendFormat: '{{`{{`}} verb{{`}}`}}'
refId: A
title: API Server - HTTP Requests by verb
type: timeseries
- datasource:
type: {{ $defaultDatasource }}
uid: ${datasource}
fieldConfig:
defaults:
color:
mode: palette-classic
custom:
axisCenteredZero: false
axisColorMode: text
axisLabel: ''
axisPlacement: auto
barAlignment: 0
drawStyle: line
fillOpacity: 25
gradientMode: opacity
hideFrom:
legend: false
tooltip: false
viz: false
lineInterpolation: smooth
lineWidth: 2
pointSize: 5
scaleDistribution:
type: linear
showPoints: never
spanNulls: false
stacking:
group: A
mode: none
thresholdsStyle:
mode: 'off'
mappings: []
thresholds:
mode: absolute
steps:
- color: green
value: null
- color: red
value: 80
unit: ms
overrides: []
gridPos:
h: 8
w: 12
x: 0
'y': 16
id: 53
options:
legend:
calcs: []
displayMode: list
placement: bottom
showLegend: true
tooltip:
mode: single
sort: none
pluginVersion: 8.3.3
targets:
- datasource:
type: {{ $defaultDatasource }}
uid: ${datasource}
exemplar: true
expr: |-
sum(rate(apiserver_request_duration_seconds_sum{job=~"kubernetes-apiservers|apiserver", {{ $clusterLabel }}=~"$cluster"}[$__rate_interval])) by (instance)
/
sum(rate(apiserver_request_duration_seconds_count{job=~"kubernetes-apiservers|apiserver", {{ $clusterLabel }}=~"$cluster"}[$__rate_interval])) by (instance)
interval: $resolution
legendFormat: '{{`{{`}} instance {{`}}`}}'
refId: A
title: API Server - HTTP Requests Latency by instance
type: timeseries
- datasource:
type: {{ $defaultDatasource }}
uid: ${datasource}
fieldConfig:
defaults:
color:
mode: palette-classic
custom:
axisCenteredZero: false
axisColorMode: text
axisLabel: ''
axisPlacement: auto
barAlignment: 0
drawStyle: line
fillOpacity: 25
gradientMode: opacity
hideFrom:
legend: false
tooltip: false
viz: false
lineInterpolation: smooth
lineWidth: 2
pointSize: 5
scaleDistribution:
type: linear
showPoints: never
spanNulls: false
stacking:
group: A
mode: none
thresholdsStyle:
mode: 'off'
mappings: []
thresholds:
mode: absolute
steps:
- color: green
value: null
- color: red
value: 80
unit: ms
overrides: []
gridPos:
h: 8
w: 12
x: 12
'y': 16
id: 54
options:
legend:
calcs: []
displayMode: list
placement: bottom
showLegend: true
tooltip:
mode: multi
sort: desc
pluginVersion: 8.3.3
targets:
- datasource:
type: {{ $defaultDatasource }}
uid: ${datasource}
exemplar: true
expr: |-
sum(rate(apiserver_request_duration_seconds_sum{job=~"kubernetes-apiservers|apiserver", {{ $clusterLabel }}=~"$cluster"}[$__rate_interval])) by (verb)
/
sum(rate(apiserver_request_duration_seconds_count{job=~"kubernetes-apiservers|apiserver", {{ $clusterLabel }}=~"$cluster"}[$__rate_interval])) by (verb)
interval: $resolution
legendFormat: '{{`{{`}} verb {{`}}`}}'
refId: A
title: API Server - HTTP Requests Latency by verb
type: timeseries
- datasource:
type: {{ $defaultDatasource }}
uid: ${datasource}
fieldConfig:
defaults:
color:
mode: palette-classic
custom:
axisCenteredZero: false
axisColorMode: text
axisLabel: ''
axisPlacement: auto
barAlignment: 0
drawStyle: line
fillOpacity: 25
gradientMode: opacity
hideFrom:
legend: false
tooltip: false
viz: false
lineInterpolation: smooth
lineWidth: 2
pointSize: 5
scaleDistribution:
type: linear
showPoints: never
spanNulls: false
stacking:
group: A
mode: none
thresholdsStyle:
mode: 'off'
mappings: []
thresholds:
mode: absolute
steps:
- color: green
value: null
- color: red
value: 80
unit: short
overrides: []
gridPos:
h: 8
w: 12
x: 0
'y': 24
id: 50
options:
legend:
calcs: []
displayMode: list
placement: bottom
showLegend: true
tooltip:
mode: single
sort: none
pluginVersion: 8.3.3
targets:
- datasource:
type: {{ $defaultDatasource }}
uid: ${datasource}
exemplar: true
expr: |-
sum by(instance) (rate(apiserver_request_total{code=~"5..", job=~"kubernetes-apiservers|apiserver", {{ $clusterLabel }}=~"$cluster"}[$__rate_interval]))
/ sum by(instance) (rate(apiserver_request_total{job=~"kubernetes-apiservers|apiserver", {{ $clusterLabel }}=~"$cluster"}[$__rate_interval]))
interval: $resolution
legendFormat: '{{`{{`}} instance {{`}}`}}'
refId: A
title: API Server - Errors by Instance
type: timeseries
- datasource:
type: {{ $defaultDatasource }}
uid: ${datasource}
fieldConfig:
defaults:
color:
mode: palette-classic
custom:
axisCenteredZero: false
axisColorMode: text
axisLabel: ''
axisPlacement: auto
barAlignment: 0
drawStyle: line
fillOpacity: 25
gradientMode: opacity
hideFrom:
legend: false
tooltip: false
viz: false
lineInterpolation: smooth
lineWidth: 2
pointSize: 5
scaleDistribution:
type: linear
showPoints: never
spanNulls: false
stacking:
group: A
mode: none
thresholdsStyle:
mode: 'off'
mappings: []
thresholds:
mode: absolute
steps:
- color: green
value: null
- color: red
value: 80
unit: short
overrides: []
gridPos:
h: 8
w: 12
x: 12
'y': 24
id: 51
options:
legend:
calcs: []
displayMode: list
placement: bottom
showLegend: true
tooltip:
mode: multi
sort: none
pluginVersion: 8.3.3
targets:
- datasource:
type: {{ $defaultDatasource }}
uid: ${datasource}
exemplar: true
expr: |-
sum by(verb) (rate(apiserver_request_total{code=~"5..",job=~"kubernetes-apiservers|apiserver", {{ $clusterLabel }}=~"$cluster"}[$__rate_interval]))
/ sum by(verb) (rate(apiserver_request_total{job=~"kubernetes-apiservers|apiserver", {{ $clusterLabel }}=~"$cluster"}[$__rate_interval]))
interval: $resolution
legendFormat: '{{`{{`}} verb {{`}}`}}'
refId: A
title: API Server - Errors by verb
type: timeseries
- datasource:
type: {{ $defaultDatasource }}
uid: ${datasource}
fieldConfig:
defaults:
color:
mode: palette-classic
custom:
axisCenteredZero: false
axisColorMode: text
axisLabel: ''
axisPlacement: auto
barAlignment: 0
drawStyle: line
fillOpacity: 25
gradientMode: opacity
hideFrom:
legend: false
tooltip: false
viz: false
lineInterpolation: smooth
lineWidth: 2
pointSize: 5
scaleDistribution:
type: linear
showPoints: never
spanNulls: false
stacking:
group: A
mode: normal
thresholdsStyle:
mode: 'off'
mappings: []
thresholds:
mode: absolute
steps:
- color: green
value: null
- color: red
value: 80
unit: short
overrides: []
gridPos:
h: 8
w: 12
x: 0
'y': 32
id: 40
options:
legend:
calcs: []
displayMode: list
placement: bottom
showLegend: true
tooltip:
mode: single
sort: none
pluginVersion: 8.3.3
targets:
- datasource:
type: {{ $defaultDatasource }}
uid: ${datasource}
exemplar: true
expr: sum(rate(apiserver_request_total{ {{ $clusterLabel }}=~"$cluster"}[$__rate_interval])) by (instance)
interval: $resolution
legendFormat: '{{`{{`}} instance {{`}}`}}'
refId: A
title: API Server - Stacked HTTP Requests by instance
type: timeseries
- datasource:
type: {{ $defaultDatasource }}
uid: ${datasource}
fieldConfig:
defaults:
color:
mode: palette-classic
custom:
axisCenteredZero: false
axisColorMode: text
axisLabel: ''
axisPlacement: auto
barAlignment: 0
drawStyle: line
fillOpacity: 25
gradientMode: opacity
hideFrom:
legend: false
tooltip: false
viz: false
lineInterpolation: smooth
lineWidth: 2
pointSize: 5
scaleDistribution:
type: linear
showPoints: never
spanNulls: false
stacking:
group: A
mode: none
thresholdsStyle:
mode: 'off'
mappings: []
thresholds:
mode: absolute
steps:
- color: green
value: null
- color: red
value: 80
unit: short
overrides: []
gridPos:
h: 8
w: 12
x: 12
'y': 32
id: 56
options:
legend:
calcs: []
displayMode: list
placement: bottom
showLegend: true
tooltip:
mode: single
sort: none
pluginVersion: 8.3.3
targets:
- datasource:
type: {{ $defaultDatasource }}
uid: ${datasource}
exemplar: true
expr: sum(rate(workqueue_depth{job=~"kubernetes-apiservers|apiserver", {{ $clusterLabel }}=~"$cluster"}[$__rate_interval])) by (instance)
interval: $resolution
legendFormat: '{{`{{`}} instance {{`}}`}}'
refId: A
title: API Server - Work Queue by instance
type: timeseries
- datasource:
type: {{ $defaultDatasource }}
uid: ${datasource}
fieldConfig:
defaults:
color:
mode: palette-classic
custom:
axisCenteredZero: false
axisColorMode: text
axisLabel: ''
axisPlacement: auto
barAlignment: 0
drawStyle: line
fillOpacity: 25
gradientMode: opacity
hideFrom:
legend: false
tooltip: false
viz: false
lineInterpolation: smooth
lineWidth: 2
pointSize: 5
scaleDistribution:
type: linear
showPoints: never
spanNulls: false
stacking:
group: A
mode: none
thresholdsStyle:
mode: 'off'
decimals: 2
mappings: []
thresholds:
mode: absolute
steps:
- color: green
value: null
- color: red
value: 80
unit: percent
overrides: []
gridPos:
h: 8
w: 12
x: 0
'y': 40
id: 47
options:
legend:
calcs: []
displayMode: list
placement: bottom
showLegend: true
tooltip:
mode: single
sort: none
pluginVersion: 8.3.3
targets:
- datasource:
type: {{ $defaultDatasource }}
uid: ${datasource}
exemplar: true
expr: rate(process_cpu_seconds_total{job=~"kubernetes-apiservers|apiserver", {{ $clusterLabel }}=~"$cluster"}[$__rate_interval])
interval: $resolution
legendFormat: '{{`{{`}} instance {{`}}`}}'
refId: A
title: API Server - CPU Usage by instance
type: timeseries
- datasource:
type: {{ $defaultDatasource }}
uid: ${datasource}
fieldConfig:
defaults:
color:
mode: palette-classic
custom:
axisCenteredZero: false
axisColorMode: text
axisLabel: ''
axisPlacement: auto
barAlignment: 0
drawStyle: line
fillOpacity: 25
gradientMode: opacity
hideFrom:
legend: false
tooltip: false
viz: false
lineInterpolation: smooth
lineWidth: 2
pointSize: 5
scaleDistribution:
type: linear
showPoints: never
spanNulls: false
stacking:
group: A
mode: none
thresholdsStyle:
mode: 'off'
mappings: []
thresholds:
mode: absolute
steps:
- color: green
value: null
- color: red
value: 80
unit: bytes
overrides: []
gridPos:
h: 8
w: 12
x: 12
'y': 40
id: 48
options:
legend:
calcs: []
displayMode: list
placement: bottom
showLegend: true
tooltip:
mode: single
sort: none
pluginVersion: 8.3.3
targets:
- datasource:
type: {{ $defaultDatasource }}
uid: ${datasource}
exemplar: true
expr: process_resident_memory_bytes{job=~"kubernetes-apiservers|apiserver", {{ $clusterLabel }}=~"$cluster"}
interval: $resolution
legendFormat: '{{`{{`}} instance {{`}}`}}'
refId: A
title: API Server - Memory Usage by instance
type: timeseries
refresh: 30s
schemaVersion: 38
style: dark
tags:
- Kubernetes
- Prometheus
- vm-k8s-stack
templating:
list:
- current:
selected: false
text: Prometheus
value: Prometheus
hide: 0
includeAll: false
label: ''
multi: false
name: datasource
options: []
query: {{ $defaultDatasource }}
queryValue: ''
refresh: 1
regex: ''
skipUrlSync: false
type: datasource
- current:
isNone: true
selected: false
text: None
value: ''
datasource:
type: prometheus
uid: ${datasource}
definition: label_values(kube_node_info,{{ $clusterLabel }})
hide: {{ ternary 0 2 $multicluster }}
includeAll: false
multi: false
name: cluster
options: []
query: {{ ternary (b64dec "eyJxcnlUeXBlIjogMSwgInF1ZXJ5IjogImxhYmVsX3ZhbHVlcyhrdWJlX25vZGVfaW5mbyxjbHVzdGVyKSIsICJyZWZJZCI6ICJQcm9tZXRoZXVzVmFyaWFibGVRdWVyeUVkaXRvci1WYXJpYWJsZVF1ZXJ5In0=" | replace "cluster" $clusterLabel) ".*" $multicluster }}
refresh: 1
regex: ''
skipUrlSync: false
sort: 1
type: {{ ternary "query" "constant" $multicluster }}
- current:
selected: true
text: 30s
value: 30s
hide: 0
includeAll: false
multi: false
name: resolution
options:
- selected: false
text: 1s
value: 1s
- selected: false
text: 15s
value: 15s
- selected: true
text: 30s
value: 30s
- selected: false
text: 1m
value: 1m
- selected: false
text: 3m
value: 3m
- selected: false
text: 5m
value: 5m
query: 1s, 15s, 30s, 1m, 3m, 5m
queryValue: ''
skipUrlSync: false
type: custom
time:
from: now-1h
to: now
timepicker: {}
timezone: {{ default "utc" ($Values.defaultDashboards).defaultTimezone }}
title: Kubernetes / System / API Server
uid: k8s_system_apisrv
version: 19
weekStart: ''