持久化 Grafana 仪表板

要在重启 Grafana 实例后保存 Grafana 仪表板,请将仪表板的配置 JSON 添加到 ConfigMap 中。ConfigMap 还支持使用基于 GitOps 或 CD 的方法来部署仪表板,从而让你对仪表板进行版本控制。

创建持久化 Grafana 仪表板

先决条件:
  • 已安装 Monitoring 应用。

  • 要创建持久化仪表板,你必须在包含 Grafana 仪表板的项目或命名空间中至少具有管理 ConfigMap 的 Rancher RBAC 权限。这与 Monitoring Chart 公开的 monitoring-dashboard-editmonitoring-dashboard-admin Kubernetes 原生 RBAC 角色对应。

  • 要查看指向外部监控 UI(包括 Grafana 仪表板)的链接,你至少需要一个 project-member 角色

1. 获取要持久化的仪表板的 JSON 模型

要创建持久化仪表板,你需要获取要持久化的仪表板的 JSON 模型。你可以使用预制仪表板或自行构建仪表板。

要使用预制仪表板,请转到 https://grafana.com/grafana/dashboards,打开详细信息页面,然后单击 Download JSON 按钮来获取下一步所需的 JSON 模型。

要使用你自己的仪表板:

  1. 点击链接打开 Grafana。在集群详细信息页面上,单击 Monitoring

  2. 登录到 Grafana。请注意,Grafana 实例的默认 Admin 用户名和密码是 admin/prom-operator。你还可以在部署或升级 Chart 时替换凭证。

    无论谁拥有密码,你都需要在部署了 Rancher Monitoring 的项目中至少具有管理服务查看监控的权限才能访问 Grafana 实例。你还可以在部署或升级 Chart 时替换凭证。

  3. 使用 Grafana UI 创建仪表板。完成后,单击顶部导航菜单中的齿轮图标转到仪表板设置页面。在左侧导航菜单中,单击 JSON Model

  4. 复制出现的 JSON 数据结构。

2. 使用 Grafana JSON 模型创建 ConfigMap

在包含 Grafana 仪表板的命名空间中创建一个 ConfigMap(默认为 cattle-dashboards )。

ConfigMap 与以下内容类似:

apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    grafana_dashboard: "1"
  name: <dashboard-name>
  namespace: cattle-dashboards # 如果不使用默认命名空间,则修改此值
data:
  <dashboard-name>.json: |-
    <copied-json>

默认情况下,Grafana 配置为监控 cattle-dashboards 命名空间中带有 grafana_dashboard 标签的所有 ConfigMap。

要让 Grafana 监控所有命名空间中的 ConfigMap,请参阅本节

要在 Rancher UI 中创建 ConfigMap:

  1. 在左上角,单击 ☰ > 集群管理

  2. 集群页面上,转到要可视化的集群,然后单击 Explore

  3. 单击menu:更多资源[核心 > 配置映射]。

  4. 单击创建

  5. 设置与上例类似的键值对。输入 <dashboard-name>.json 的值时,点击从文件读取并上传 JSON 数据模型。

  6. 单击创建

结果:创建 ConfigMap 后,即使 Grafana pod 重启了,ConfigMap 也能显示在 Grafana UI 上并持久化。

无法在 Grafana UI 中删除或编辑使用 ConfigMap 持久化了的仪表板。

如果你在 Grafana UI 中删除仪表板,你将看到 "Dashboard cannot be deleted because it was provisioned" 的错误消息。如需删除仪表板,你需要删除 ConfigMap。

为 Grafana 仪表板 ConfigMap 配置命名空间

要让 Grafana 监控所有命名空间中的 ConfigMap,请在 rancher-monitoring Helm chart 中指定以下值:

grafana.sidecar.dashboards.searchNamespace=ALL

请注意,Monitoring Chart 用于添加 Grafana 仪表板的 RBAC 角色仅能让用户将仪表板添加到定义在 grafana.dashboards.namespace 中的命名空间,默认为 cattle-dashboards