本文永久链接: https://www.xtplayer.cn/prometheus/grafana-automatically-loads-custom-metric-dashboard-json-configmaps/

如果直接在 Grafana UI 中创建某个应用的监控图表集,这种方法创建的监控图表不能持久,Grafana Pod 重启后监控图表将丢失。

创建监控图表 ConfigMap

想要持久监控图表,可以在创建好监控图表后,将其 json 导出,然后按照如下的 ConfigMap 示例编辑。

  • 添加 labels grafana_dashboard: “1”:Grafana 中的 sidecar 会读取带有此 labels 的 ConfigMap,并将其加载到 Grafana。
  • 添加 grafana_folder:如果多个监控图表属于某个应用或者 Pod,可以添加此参数将多个 ConfigMap 配置归纳到某个目录下。
apiVersion: v1
kind: ConfigMap
metadata:
name: my-custom-dashboard
namespace: monitoring # 与你配置的监听范围一致
labels:
grafana_dashboard: "1" # 对应 sidecar.dashboards.label 的配置
annotations:
# 可选:指定导入到 Grafana 哪个文件夹下
grafana_folder: "My-App-Folder"
data:
my-dashboard.json: |-
{
"id": null,
"title": "Production Metrics",
"tags": [],
"style": "dark",
"timezone": "browser",
"editable": true,
"panels": [],
"schemaVersion": 38,
"version": 0
}

启用 Grafana 自动识别其他命名空间中的监控图表配置映射

在 Rancher UI 部署的 rancher-monitoring App,默认配置下只识别 cattle-dashboards 命名空间下的 dashboard.json configmap。要想其他命名空间中的 dashboard.json configmap 被自动识别,需要修改grafana.sidecar.dashboards.searchNamespace 参数,将其设置为 ALL,默认为 cattle-dashboards。或者按如下方式,指定多个命名空间。

sidecar:
dashboards:
enabled: true
# searchNamespace: ALL
# 或者显式提供命名空间列表
searchNamespace:
- cattle-dashboards
- monitoring
- dev-teams
- staging-apps
label: grafana_dashboard
labelValue: "1"