如何使用 helm 将自定义仪表板导入 grafana
How to import custom dashboards to grafana using helm
我正在尝试了解 helm,我想知道是否有人可以 ELI5 给我一些东西或帮助我。
所以我在下面做了 运行:
helm repo add coreos https://s3-eu-west-1.amazonaws.com/coreos-charts/stable/
然后我使用下面的方法安装了 kube-prometheus:
helm install coreos/kube-prometheus --name kube-prometheus -f values.yaml --namespace monitoringtest
一切正常,但我正在尝试从 json 文件中添加一些自定义仪表板,但我很难理解如何操作。
我在关注这个:https://blogcodevalue.wordpress.com/2018/09/16/automate-grafana-dashboard-import-process/
在我的values.yaml下面添加了
serverDashboardConfigmaps:
- example-dashboards
我明白如果我这样做:
helm upgrade --install kube-prometheus -f values.yaml --namespace monitoringtest coreos/kube-prometheus
这应该会导致 grafana 选择一个名为 example-dashboards
的配置映射并从 custom-dashboards
文件夹加载 *.json 文件。
apiVersion: v1
kind: ConfigMap
metadata:
name: example-dashboards
data:
{{ (.Files.Glob "custom-dashboards/*.json").AsConfig | indent 2 }}
# Or
#
# data:
# custom-dashboard.json: |-
# {{ (.Files.Get "custom.json") | indent 4 }}
#
# The filename (and consequently the key under data) must be in the format `xxx-dashboard.json` or `xxx-datasource.json`
# for them to be picked up.
现在两个问题:
如何将上面的 configmap 添加到此 helm 版本中?
此 custom-dashboards
文件夹位于何处?它是在我的笔记本电脑上然后发送到 grafana 吗?
我需要将所有 https://s3-eu-west-1.amazonaws.com/coreos-charts/stable/
复制到我的笔记本电脑上吗?
抱歉解释了所有内容,但我只是想了解这一点。
我部分弄明白了。我可以从 configmap 加载仪表板。还不是来自单独的 json 文件,但这是一个进步。
对于任何感兴趣的人,我将其放在我的 github 页面上:https://github.com/tretos53/notes/blob/master/Grafana/Readme.MD
您可以在此处的 prometheus-operator 图表中找到一个很好的示例来说明如何执行此操作:
https://github.com/helm/charts/tree/master/stable/prometheus-operator/templates/grafana
它是一个 ConfigMapList,它从给定目录中获取所有 JSON,并将它们存储到 ConfigMap 中,供 Grafana 读取。
{{- $files := .Files.Glob "dashboards/*.json" }}
{{- if $files }}
apiVersion: v1
kind: ConfigMapList
items:
{{- range $path, $fileContents := $files }}
{{- $dashboardName := regexReplaceAll "(^.*/)(.*)\.json$" $path "" }}
- apiVersion: v1
kind: ConfigMap
metadata:
name: {{ printf "%s-%s" (include "prometheus-operator.fullname" $) $dashboardName | trunc 63 | trimSuffix "-" }}
namespace: {{ template "prometheus-operator.namespace" . }}
labels:
{{- if $.Values.grafana.sidecar.dashboards.label }}
{{ $.Values.grafana.sidecar.dashboards.label }}: "1"
{{- end }}
app: {{ template "prometheus-operator.name" $ }}-grafana
{{ include "prometheus-operator.labels" $ | indent 6 }}
data:
{{ $dashboardName }}.json: {{ $.Files.Get $path | toJson }}
{{- end }}
{{- end }}
请注意,ConfigMap 的大小可能是有限的:
在 2021 年最新版本的 kube-prometheus-stack
图表中,根据 this answer on github,您应该只创建一个带有仪表板数据和正确标签的 configmap,它会被 grafana pod 中的 sidecar 检查。
示例:
apiVersion: v1
kind: ConfigMap
metadata:
name: grafana-dashboards-custom-1
namespace: monitoring
labels:
grafana_dashboard: "1"
prometheus: my-value
release: prometheus
data:
app-status.json: |-
{
"annotations": {
"list": [
{
prometheus: my-value
来自这个 helm 图表值:
prometheus:
prometheusSpec:
serviceMonitorSelector:
matchLabels:
prometheus: my-value
有多种方法可以做到这一点。它还取决于 Grafana/Prometheus Stack Chart 版本。信息在这里:https://github.com/grafana/helm-charts/tree/main/charts/grafana#import-dashboards
(Grafana 图表可以覆盖 kube-prometheus-stack
值,因为后者依赖于 Grafana)
最适合我的是 Sidecar for dashboards
。
如果您还想为所有 Grafana 组织导入仪表板,则需要使用 dashboardProviders: {}
一些细节:https://grafana.com/tutorials/provision-dashboards-and-data-sources/
我正在尝试了解 helm,我想知道是否有人可以 ELI5 给我一些东西或帮助我。
所以我在下面做了 运行:
helm repo add coreos https://s3-eu-west-1.amazonaws.com/coreos-charts/stable/
然后我使用下面的方法安装了 kube-prometheus:
helm install coreos/kube-prometheus --name kube-prometheus -f values.yaml --namespace monitoringtest
一切正常,但我正在尝试从 json 文件中添加一些自定义仪表板,但我很难理解如何操作。
我在关注这个:https://blogcodevalue.wordpress.com/2018/09/16/automate-grafana-dashboard-import-process/
在我的values.yaml下面添加了
serverDashboardConfigmaps:
- example-dashboards
我明白如果我这样做:
helm upgrade --install kube-prometheus -f values.yaml --namespace monitoringtest coreos/kube-prometheus
这应该会导致 grafana 选择一个名为 example-dashboards
的配置映射并从 custom-dashboards
文件夹加载 *.json 文件。
apiVersion: v1
kind: ConfigMap
metadata:
name: example-dashboards
data:
{{ (.Files.Glob "custom-dashboards/*.json").AsConfig | indent 2 }}
# Or
#
# data:
# custom-dashboard.json: |-
# {{ (.Files.Get "custom.json") | indent 4 }}
#
# The filename (and consequently the key under data) must be in the format `xxx-dashboard.json` or `xxx-datasource.json`
# for them to be picked up.
现在两个问题:
如何将上面的 configmap 添加到此 helm 版本中?
此 custom-dashboards
文件夹位于何处?它是在我的笔记本电脑上然后发送到 grafana 吗?
我需要将所有 https://s3-eu-west-1.amazonaws.com/coreos-charts/stable/
复制到我的笔记本电脑上吗?
抱歉解释了所有内容,但我只是想了解这一点。
我部分弄明白了。我可以从 configmap 加载仪表板。还不是来自单独的 json 文件,但这是一个进步。
对于任何感兴趣的人,我将其放在我的 github 页面上:https://github.com/tretos53/notes/blob/master/Grafana/Readme.MD
您可以在此处的 prometheus-operator 图表中找到一个很好的示例来说明如何执行此操作:
https://github.com/helm/charts/tree/master/stable/prometheus-operator/templates/grafana
它是一个 ConfigMapList,它从给定目录中获取所有 JSON,并将它们存储到 ConfigMap 中,供 Grafana 读取。
{{- $files := .Files.Glob "dashboards/*.json" }}
{{- if $files }}
apiVersion: v1
kind: ConfigMapList
items:
{{- range $path, $fileContents := $files }}
{{- $dashboardName := regexReplaceAll "(^.*/)(.*)\.json$" $path "" }}
- apiVersion: v1
kind: ConfigMap
metadata:
name: {{ printf "%s-%s" (include "prometheus-operator.fullname" $) $dashboardName | trunc 63 | trimSuffix "-" }}
namespace: {{ template "prometheus-operator.namespace" . }}
labels:
{{- if $.Values.grafana.sidecar.dashboards.label }}
{{ $.Values.grafana.sidecar.dashboards.label }}: "1"
{{- end }}
app: {{ template "prometheus-operator.name" $ }}-grafana
{{ include "prometheus-operator.labels" $ | indent 6 }}
data:
{{ $dashboardName }}.json: {{ $.Files.Get $path | toJson }}
{{- end }}
{{- end }}
请注意,ConfigMap 的大小可能是有限的:
在 2021 年最新版本的 kube-prometheus-stack
图表中,根据 this answer on github,您应该只创建一个带有仪表板数据和正确标签的 configmap,它会被 grafana pod 中的 sidecar 检查。
示例:
apiVersion: v1
kind: ConfigMap
metadata:
name: grafana-dashboards-custom-1
namespace: monitoring
labels:
grafana_dashboard: "1"
prometheus: my-value
release: prometheus
data:
app-status.json: |-
{
"annotations": {
"list": [
{
prometheus: my-value
来自这个 helm 图表值:
prometheus:
prometheusSpec:
serviceMonitorSelector:
matchLabels:
prometheus: my-value
有多种方法可以做到这一点。它还取决于 Grafana/Prometheus Stack Chart 版本。信息在这里:https://github.com/grafana/helm-charts/tree/main/charts/grafana#import-dashboards
(Grafana 图表可以覆盖 kube-prometheus-stack
值,因为后者依赖于 Grafana)
最适合我的是 Sidecar for dashboards
。
如果您还想为所有 Grafana 组织导入仪表板,则需要使用 dashboardProviders: {}
一些细节:https://grafana.com/tutorials/provision-dashboards-and-data-sources/