跳到主要内容

在 TKE 上自建 Grafana

概述

腾讯云提供了托管的 Grafana 服务,并且支持与 TKE 高度集成,能够覆盖绝大部分使用场景。如果对版本要求,或者有很多个性化需求的场景,也可以考虑在 TKE 上自建 Grafana,本文介绍具体方法。

使用 helm 安装

Grafana 提供了官方的 helm chart,用法参考 官方文档

如果你使用 kube-prometheus-stackvictoria-metrics-k8s-stack 自建监控系统,它们也都依赖了 Grafana 官方的 chart,其中 Grafana 是作为一个子 chart,Grafana 相关的 values 配置,放到 grafana 字段下即可。

配置 Grafana

下面是一些建议加上的配置:

grafana-values.yaml
adminUser: "admin"
adminPassword: "123456"
defaultDashboardsTimezone: "Asia/Shanghai"
sidecar:
dashboards:
folderAnnotation: "grafana_folder"
provider:
foldersFromFilesStructure: true
testFramework:
enabled: false
  • adminUseradminPassword 分别设置管理员的账号和密码。
  • defaultDashboardsTimezone 设置展示面板所用的时区,国内固定使用 Asia/Shanghai
  • folderAnnotation 是存储 dashboard 的 ConfigMap 的一个注解名称,用于标识该 ConfigMap 下面板 json 文件存储的目录,结合 foldersFromFilesStructure 置为 true,可实现 ConfigMap 中的面板按目录组织。

声明式配置 Grafana Dashboard

如果在 Grafana 上新建 Dashboard 并保存,这个 Dashboard 会被持久化到 Grafana 的存储,但假如希望这些 Dashboard 被多个 Grafana 共用,就需要手动导入再导入,维护起来比较麻烦。

下面介绍声明式配置 Dashboard 的方法,可以让你的 Dashboard 在多个 Grafana 之间共享,无需繁琐的手动导出导入的操作。

首先说下思路:Dashboard 配置的本质是 json 文件,我们可以将 json 存储到 ConfigMap,利用 Grafana Chart 中自带的 sidecar,将 ConfigMap 中的 json 自动同步到 Grafana 保存 Dashboard 的目录中。

制作好 Dashboard 后,我们可以导出 Dashboard 的 json 文件到本地,通过 kustomize 引用并统一加上 grafana_dashboard: 1 的 label,比如要为 EnvoyGateway 加 Dashboard,使用以下 kustomize 的结构组织文件:

envoygateway
├── dashboards
│ ├── envoy-clusters.json
│ ├── envoy-global.json
│ └── envoy-pod-resource.json
└── kustomization.yaml

kustomization.yaml 中用 configMapGenerator 用这些 dashboard json 文件生成 ConfigMap,并统一打上 grafana_dashboard: 1 的 label 和 grafana_folder: Envoy 的 annotation:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

namespace: monitoring

generatorOptions:
disableNameSuffixHash: true
labels:
grafana_dashboard: "1"
commonAnnotations:
grafana_folder: "Envoy"

configMapGenerator:
- files:
- dashboards/envoy-clusters.json
name: dashboard-envoy-clusters
- files:
- dashboards/envoy-global.json
name: dashboard-envoy-global
- files:
- dashboards/envoy-pod-resource.json
name: dashboard-envoy-pod-resource

配置 Grafana 默认监控大盘

有时候我们希望进入 Grafana 主页后能展示一个默认的监控大盘,能够比较直观看到我们集群或系统的概况,这时可以用以下方法来配置默认的 dashboard。

首先进入 Grafana 并选择希望设置为默认的面板,然后复制下路径,粘贴到 values 配置里,示例:

grafana-homepage-values.yaml
grafana:
grafana.ini:
users:
home_page: /d/G9PMkKi7k/e99b86-e7bea4-e6a682-e8a788 # 首页自动跳转到该面板的路径

配置 TKE 监控面板

在 GitHub 上有开源的 TKE Grafana 监控面板 grafana-dashboards/tke,通过以下命令将面板添加到 Grafana:

git clone --depth 1 git@github.com:grafana-dashboards/tke.git grafana-dashboards-tke
kubectl apply -k ./grafana-dashboards-tke