infra/charts/victoria-metrics-k8s-stack/templates/grafana/dashboard.yaml
Konstantin Averkiev c45fd1a6ac added vm stack
2025-07-08 17:29:32 +03:00

94 lines
2.9 KiB
YAML

{{- if .Values.defaultDashboards.enabled }}
{{- /*
Create custom template context
*/}}
{{- $ctx := dict "helm" . -}}
{{- /*
Loop through all dashboard files, that were crafted with hack/sync_grafana_dashboards.py
*/}}
{{- range $dashboardFile, $_ := .Files.Glob "files/dashboards/**.yaml" -}}
{{- /*
Get dashboard name
*/}}
{{- $dashboardBase := base $dashboardFile }}
{{- $dashboardName := (trimSuffix (ext $dashboardBase) $dashboardBase) -}}
{{- /*
Get dashboard data from file
*/}}
{{- $dashboardData := fromYaml (tpl ($.Files.Get $dashboardFile) $) -}}
{{- /*
Save condition for a dashboard from file
*/}}
{{- $dashboardCondition := $dashboardData.condition }}
{{- if hasKey (index ((($.Values).defaultDashboards).dashboards) $dashboardName) "enabled" }}
{{- $dashboardCondition = index $.Values.defaultDashboards.dashboards $dashboardName "enabled" }}
{{- end }}
{{- /*
Delete condition from dashboard
*/}}
{{- $_ := unset $dashboardData "condition" -}}
{{- if and $.Values.grafana.sidecar.dashboards.enabled $.Values.grafana.dashboards -}}
{{ fail `It is not possible to use both "grafana.sidecar.dashboards.enabled: true" and "grafana.dashboards" at the same time.
Disable either sidecar or dashboards configuration. See more details at https://docs.victoriametrics.com/helm/victoriametrics-k8s-stack/#adding-external-dashboards` }}
{{- end -}}
{{- /*
Check if dashboard is enabled
*/}}
{{- if $dashboardCondition }}
{{- $dashboardResult := toRawJson $dashboardData -}}
{{- $app := ((printf "%s-grafana" (include "vm.name" $)) | trunc 63 | trimSuffix "-") }}
{{- $_ := set $ctx "extraLabels" (dict "app" $app) }}
{{- if $.Values.defaultDashboards.grafanaOperator.enabled }}
---
apiVersion: grafana.integreatly.org/v1beta1
kind: GrafanaDashboard
metadata:
namespace: {{ include "vm.namespace" $ }}
name: {{ printf "%s-%s" (include "vm.fullname" $ctx) $dashboardName | replace "_" "" }}
labels: {{ include "vm.labels" $ctx | nindent 4 }}
{{- with $.Values.defaultDashboards.annotations }}
annotations:
{{- range $key, $val := . }}
{{ $key }}: {{ $val | quote }}
{{- end }}
{{- end }}
spec:
json: | {{ $dashboardResult | nindent 4 }}
{{- toYaml $.Values.defaultDashboards.grafanaOperator.spec | nindent 2 }}
{{- else }}
---
apiVersion: v1
kind: ConfigMap
metadata:
namespace: {{ include "vm.namespace" $ }}
name: {{ printf "%s-%s" (include "vm.fullname" $) $dashboardName }}
labels:
{{- if $.Values.grafana.sidecar.dashboards.label }}
{{ $.Values.grafana.sidecar.dashboards.label }}: "1"
{{- end }}
{{- range $key, $val := $.Values.defaultDashboards.labels }}
{{ $key }}: {{ $val | quote }}
{{- end }}
{{- include "vm.labels" $ctx | nindent 4 }}
{{- with $.Values.defaultDashboards.annotations }}
annotations:
{{- range $key, $val := . }}
{{ $key }}: {{ $val | quote }}
{{- end }}
{{- end }}
data:
{{ $dashboardName }}.json: | {{ $dashboardResult | nindent 4 }}
{{- end }}
{{- end }}
{{- end }}
{{- end }}