使用 Helm Charts 部署 Grafana
本主题包含使用 Helm Charts 在 Kubernetes 上安装和运行 Grafana 的说明。
Helm 是一个用于管理 Kubernetes 应用程序的开源命令行工具。它是 CNCF Landscape 中的一个毕业项目。
注意
Grafana 开源社区提供了用于在 Kubernetes 上运行 Grafana 的 Helm Charts。请注意,代码不提供任何保证。如果遇到任何问题,可以向官方 GitHub 仓库报告。
观看此视频了解如何使用 Helm Charts 安装 Grafana
开始之前
要使用 Helm 安装 Grafana,请确保已完成以下事项
- 在您的机器上安装 Kubernetes 服务器。有关安装 Kubernetes 的信息,请参阅 安装 Kubernetes。
- 安装 Helm 的最新稳定版本。有关安装 Helm 的信息,请参阅 安装 Helm。
使用 Helm 安装 Grafana
使用 Helm 安装 Grafana 时,您将完成以下任务
设置 Grafana Helm 仓库,它提供了一个安装 Grafana 的空间。
使用 Helm 部署 Grafana,这将把 Grafana 安装到命名空间中。
访问 Grafana,提供登录 Grafana 的步骤。
设置 Grafana Helm 仓库
为了设置 Grafana Helm 仓库以便在您的机器上下载正确的 Grafana Helm charts,请完成以下步骤
要添加 Grafana 仓库,请使用以下命令语法
helm repo add <DESIRED-NAME> <HELM-REPO-URL>
以下示例添加 `grafana` Helm 仓库。
helm repo add grafana https://grafana.github.io/helm-charts
运行以下命令验证仓库是否已添加
helm repo list
添加仓库后,您应该会看到类似以下的输出
NAME URL grafana https://grafana.github.io/helm-charts
运行以下命令更新仓库以下载最新的 Grafana Helm charts
helm repo update
部署 Grafana Helm charts
设置好 Grafana Helm 仓库后,您就可以开始在 Kubernetes 集群上部署它了。
部署 Grafana Helm charts 时,请使用单独的命名空间,而不是依赖默认命名空间。默认命名空间可能已经运行着其他应用程序,这可能导致冲突和其他潜在问题。
在 Kubernetes 中创建新的命名空间,可以更好地组织、分配和管理集群资源。更多信息请参阅 命名空间。
要创建命名空间,请运行以下命令
kubectl create namespace monitoring
您将看到类似以下的输出,这意味着命名空间已成功创建
namespace/monitoring created
使用以下命令搜索官方 `grafana/grafana` 仓库
helm search repo <repo-name/package-name>
例如,以下命令提供 Grafana Helm Charts 列表,您将从中安装最新版本的 Grafana chart。
helm search repo grafana/grafana
运行以下命令将 Grafana Helm Chart 部署到您的命名空间中。
helm install my-grafana grafana/grafana --namespace monitoring
其中
helm install
: 通过在 Kubernetes 集群上部署来安装 chartmy-grafana
: 您提供的逻辑 chart 名称grafana/grafana
: 要安装的仓库和包名称--namespace
: 您希望部署 chart 的 Kubernetes 命名空间(例如monitoring
)
要验证部署状态,请运行以下命令并检查 STATUS 列中是否显示
deployed
helm list -n monitoring
您应该会看到类似以下的输出
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION my-grafana monitoring 1 2024-01-13 23:06:42.737989554 +0000 UTC deployed grafana-6.59.0 10.1.0
要检查命名空间中所有对象的整体状态,请运行以下命令
kubectl get all -n monitoring
如果在 STATUS 列中遇到错误或警告,请检查日志并参阅本文档的故障排除部分。
访问 Grafana
本节介绍通过网页浏览器访问 Grafana 所需完成的步骤。
运行以下
helm get notes
命令helm get notes my-grafana -n monitoring
此命令将打印出 chart 说明。您将看到
NOTES
输出,其中提供了完整的说明,包括- 如何解码 Grafana 管理员账户的登录密码
- 通过网页浏览器访问 Grafana 服务
要获取 Grafana 管理员密码,请运行以下命令
kubectl get secret --namespace monitoring my-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
它将给您一个解码后的
base64
字符串输出,这是管理员账户的密码。将解码后的密码保存到您机器上的文件中。
要通过网页浏览器访问 Grafana 服务,请运行以下命令
export POD_NAME=$(kubectl get pods --namespace monitoring -l "app.kubernetes.io/name=grafana,app.kubernetes.io/instance=my-grafana" -o jsonpath="{.items[0].metadata.name}")
上述命令将导出一个名为
POD_NAME
的 shell 变量,该变量将保存已部署 pod 的完整名称。运行以下端口转发命令将 Grafana pod 转发到监听端口
3000
kubectl --namespace monitoring port-forward $POD_NAME 3000
有关端口转发的更多信息,请参阅 使用端口转发访问集群中的应用程序。
在浏览器中导航到
127.0.0.1:3000
。Grafana 登录页面出现。
要登录,用户名输入
admin
。密码请粘贴您之前解码后保存到文件中的内容。
自定义 Grafana 默认配置
Helm 是一个流行的 Kubernetes 包管理器。它将 Kubernetes 资源清单打包以便在不同环境中重复使用。这些清单使用模板语言编写,允许您通过 values.yaml
文件或使用 Helm 内联提供配置值,以替换清单中应包含这些配置的占位符。
values.yaml
文件允许您通过为各种参数指定值(如镜像版本、资源限制、服务配置等)来自定义 chart 的配置。
通过修改 values.yaml
文件中的值,您可以使用 `helm install` 或 `upgrade` 命令根据您的特定要求调整 Helm chart 的部署。有关配置 Helm 的更多信息,请参阅 值文件。
下载 values.yaml 文件
为了进行任何配置更改,请从 Grafana Helm Charts 仓库下载 values.yaml
文件
https://github.com/grafana/helm-charts/blob/main/charts/grafana/values.yaml
注意
根据您的用例需求,您可以使用包含配置更改的单个 YAML 文件,或者创建多个 YAML 文件。
启用持久存储(推荐)
默认情况下,持久存储是禁用的,这意味着 Grafana 使用临时存储,所有数据将存储在容器的文件系统中。如果容器停止、重启或崩溃,这些数据将丢失。
强烈建议您在 Grafana Helm charts 中启用持久存储,以确保您的数据在容器重启或故障时不会丢失。
在 Grafana Helm charts 中启用持久存储可确保在生产环境中运行 Grafana 的可靠解决方案。
要在 Grafana Helm charts 中启用持久存储,请完成以下步骤
在您喜欢的编辑器中打开
values.yaml
文件。编辑值并在
persistence
部分下,将enable
标志从false
更改为true
....... ............ ...... persistence: type: pvc enabled: true # storageClassName: default ....... ............ ......
运行以下 `helm upgrade` 命令并指定
values.yaml
文件以使更改生效helm upgrade my-grafana grafana/grafana -f values.yaml -n monitoring
PVC 现在将存储您的所有数据,例如面板、数据源等。
安装插件(例如 Zabbix 应用、时钟面板等)
您可以从官方和社区插件页面在 Grafana 中安装插件。这些插件允许您添加新的可视化类型、数据源和应用程序,以帮助您更好地可视化您的数据。
Grafana 目前支持三种类型的插件:面板、数据源和应用。有关管理插件的更多信息,请参阅 插件管理。
要在 Grafana Helm Charts 中安装插件,请完成以下步骤
在您喜欢的编辑器中打开
values.yaml
文件。找到
plugins:
这一行,并在该部分下定义您要安装的插件。....... ............ ...... plugins: # here we are installing two plugins, make sure to keep the indentation correct as written here. - alexanderzobnin-zabbix-app - grafana-clock-panel ....... ............ ......
保存更改并使用 `helm upgrade` 命令安装这些插件
helm upgrade my-grafana grafana/grafana -f values.yaml -n monitoring
在浏览器中导航到
127.0.0.1:3000
。Grafana 登录页面出现时,使用管理员凭据登录。
导航到 UI -> 管理 -> 插件
搜索上述插件,它们应该被标记为已安装。
配置私有 CA(证书颁发机构)
在许多企业网络中,TLS 证书由私有证书颁发机构颁发,并且默认不受信任(使用提供的操作系统信任链)。
如果您的 Grafana 实例需要与暴露由这些私有 CA 颁发的证书的服务交互,则需要确保 Grafana 信任根证书。
您可能需要配置此项,如果
- 您的插件需要连接到其他自托管系统。例如,如果您安装了 Grafana Enterprise Metrics、Logs 或 Traces (GEM, GEL, GET) 插件,并且您的 GEM (或 GEL/GET) 集群正在使用私有证书。
- 希望连接到使用私有证书在 HTTPS 上监听的数据源。
- 正在使用后端数据库进行持久化,或使用私有证书进行传输中加密的缓存服务。
在某些情况下,您可以在 Grafana 内部指定自签名证书(例如在某些数据源中),或选择跳过 TLS 证书验证(除非绝对必要,否则不推荐)。
一个简单的解决方案,应该适用于您的整个实例(插件、数据源和后端连接),就是将您的自签名 CA 证书添加到您的 Kubernetes 部署中。
创建包含证书的 ConfigMap,并将其部署到您的 Kubernetes 集群
# grafana-ca-configmap.yaml --- apiVersion: v1 kind: ConfigMap metadata: name: grafana-ca-cert data: ca.pem: | -----BEGIN CERTIFICATE----- (rest of the CA cert) -----END CERTIFICATE-----
kubectl apply --filename grafana-ca-configmap.yaml --namespace monitoring
在您喜欢的编辑器中打开 Helm `values.yaml` 文件。
找到
extraConfigmapMounts:
这一行,并在该部分下,指定您要挂载的额外 ConfigMap。....... ............ ...... extraConfigmapMounts: - name: ca-certs-configmap mountPath: /etc/ssl/certs/ca.pem subPath: ca.pem configMap: grafana-ca-cert readOnly: true ....... ............ ......
保存更改并使用 `helm upgrade` 命令更新您的 Grafana 部署并挂载新的 ConfigMap
helm upgrade my-grafana grafana/grafana --values values.yaml --namespace monitoring
故障排除
故障排除
收集日志
在排查任何问题时,查看 Grafana 服务器日志非常重要。
要查看 Grafana 日志,请运行以下命令
# dump Pod logs for a Deployment (single-container case)
kubectl logs --namespace=monitoring deploy/my-grafana
如果部署中有多个容器正在运行,请运行以下命令仅获取 Grafana 部署的日志
# dump Pod logs for a Deployment (multi-container case)
kubectl logs --namespace=monitoring deploy/grafana -c my-grafana
有关访问 Kubernetes 应用程序日志的更多信息,请参阅 Pods 和 Deployments。
增加日志级别
默认情况下,Grafana 的日志级别设置为 `info`,但您可以将其提高到 `debug` 模式以获取诊断和排除问题所需的信息。有关 Grafana 日志级别的更多信息,请参阅 配置日志。
要将日志级别提高到 `debug` 模式,请使用以下步骤
在您喜欢的编辑器中打开
values.yaml
文件,搜索字符串 `grafana.ini`,您会在其中找到关于日志模式的部分。在
mode: console
行下方添加level: debug
# This is the values.yaml file ..... ....... .... grafana.ini: paths: data: /var/lib/grafana/ ..... ....... .... mode: console level: debug
确保保持相同的缩进级别,否则将无法工作。
现在要应用此更改,请运行以下 `helm upgrade` 命令
helm upgrade my-grafana grafana/grafana -f values.yaml -n monitoring
要验证它,请使用提供的
IP:Port
在浏览器中访问 Grafana UI。Grafana 登录页面出现。要登录 Grafana,用户名输入
admin
,密码粘贴您之前解码后保存到文件中的内容。导航到 服务器管理 > 设置,然后搜索 log。您应该看到级别已设为debug
模式。
重置 Grafana 管理员密钥(登录凭据)
默认情况下,超级管理员账户的登录凭据通过 `secrets` 生成。然而,这可以轻松更改。要实现此目的,请使用以下步骤
编辑
values.yaml
文件并搜索字符串 `adminPassword`。您可以在此处定义新密码# Administrator credentials when not using an existing secret (see below) adminUser: admin adminPassword: admin
然后按如下方式使用 `helm upgrade` 命令
helm upgrade my-grafana grafana/grafana -f values.yaml -n monitoring
此命令现在将把您的超级管理员登录凭据(用户名和密码)都设为
admin
。要验证它,请登录 Grafana,用户名和密码都输入
admin
。您应该能够以超级管理员身份登录。
卸载 Grafana 部署
要卸载 Grafana 部署,请运行以下命令
helm uninstall <RELEASE-NAME> <NAMESPACE-NAME>
helm uninstall my-grafana -n monitoring
这将删除给定命名空间 monitoring
中的所有对象。
如果您想删除命名空间 monitoring
,请运行以下命令
kubectl delete namespace monitoring