Grafana 如何用 Helm Chart 在 Kubernetes 上部署并访问实例
【免费下载链接】grafanaThe open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.项目地址: https://gitcode.com/GitHub_Trending/gr/grafana
本文解决一个具体任务:在已有的 Kubernetes 集群上用 Helm 部署 Grafana,并通过浏览器登录其 Web 控制台。全部步骤来自官方安装文档 Grafana on Helm Charts,安装的 chart 是grafana-community/grafana。需要说明的是:该 chart 由 Grafana 开源社区维护,文档明确指出代码不提供任何担保,遇到问题可上报到社区维护的仓库。
前置条件
开始之前,按文档 "Before you begin" 一节确认两项环境已就绪:
- 一台运行中的 Kubernetes 服务器(本地或云端集群均可)。
- 已安装最新稳定版 Helm。Helm 是用于管理 Kubernetes 应用的开源命令行工具。
后续所有命令都在一个可以访问目标集群的终端中执行,无需安装 Grafana 本身的其他依赖。
添加并验证 Helm 仓库
先添加 Grafana 社区的 Helm 仓库,这样后续命令才能下载到正确的 chart:
helm repo add grafana-community https://grafana-community.github.io/helm-charts文档给出的通用语法是helm repo add <DESIRED-NAME> <HELM-REPO-URL>,其中<DESIRED-NAME>是仓库别名、<HELM-REPO-URL>是仓库地址。上面示例使用grafana-community作为别名,后续search、install命令都会引用它。
验证仓库已添加:
helm repo list文档示例输出(示例结果):
NAME URL grafana-community https://grafana-community.github.io/helm-charts再更新仓库以拉取最新的 Grafana Helm charts:
helm repo update创建独立 namespace 并部署 chart
文档明确建议部署时使用单独的 namespace,而不是依赖 default namespace——default 中可能已有其他应用运行,会产生冲突等潜在问题。
创建 namespace:
kubectl create namespace monitoring文档示例输出(示例结果):
namespace/monitoring created查找要安装的 chart:
helm search repo grafana-community/grafana文档说明该命令会列出可用的 Grafana charts,从中可以安装最新版本。
执行部署:
helm install my-grafana grafana-community/grafana --namespace monitoring命令各部分的含义(文档原解释):
helm install:在 Kubernetes 集群上部署 chart;my-grafana:你自己指定的逻辑 chart 名(release 名),本文后续命令都复用它;grafana-community/grafana:要安装的仓库和包名;--namespace:部署到的 namespace,本例为monitoring。
验证部署状态
查看 release 状态,确认STATUS列出现deployed:
helm list -n monitoring文档示例输出(示例结果,其中的时间戳与 chart/app 版本仅为示例值):
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再查看 namespace 内所有对象的整体状态:
kubectl get all -n monitoring如果STATUS列出现错误或警告,文档建议检查日志,见下文「排查」一节。
访问 Grafana 实例
获取 admin 密码
先打印 chart 的 notes:
helm get notes my-grafana -n monitoring这段 NOTES 会给出完整说明:如何解码 admin 账户密码、如何在浏览器访问 Grafana 服务。获取密码的命令:
kubectl get secret --namespace monitoring my-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo输出是经过base64解码后的 admin 账户密码。文档建议把解码后的密码保存到你本机上的一个文件里。
端口转发并用浏览器登录
先把已部署 Pod 的完整名字存入 shell 变量POD_NAME。标签选择器由文档固定给出,其中app.kubernetes.io/instance=my-grafana对应上一步的 release 名,如果 release 名不同需要相应替换:
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}")然后执行端口转发,让 Grafana Pod 监听本地3000端口:
kubectl --namespace monitoring port-forward $POD_NAME 3000在浏览器中打开127.0.0.1:3000,Grafana 登录页会出现。用户名输入admin,密码粘贴之前解码并保存的密码。能进入控制台,即说明部署与访问这两步都已完成。
可选:启用持久化存储
默认情况下持久化存储是禁用的,Grafana 使用临时存储,所有数据保存在容器文件系统内——容器停止、重启或崩溃后数据会丢失。文档将启用持久化存储标记为recommended,用于确保数据在容器重启或故障时不丢失。
步骤:
从
grafana-community/helm-charts仓库(本文所用 chart 的来源仓库)下载values.yaml文件,在编辑器中打开。文档说明你可以用一个包含全部改动的 YAML 文件,也可以拆成多个文件。在
persistence一节把enabled从false改为true(以下为文档给出的片段,注意保持缩进):persistence: type: pvc enabled: true # storageClassName: default通过
helm upgrade指定该文件使改动生效:helm upgrade my-grafana grafana-community/grafana -f values.yaml -n monitoring
完成后,PVC 会存储仪表盘、数据源等全部数据。
排查
收集 Grafana 日志
文档强调排查任何问题时都应对查看 Grafana 服务端日志。对单容器 Deployment:
kubectl logs --namespace=monitoring deploy/my-grafana如果 Deployment 中运行了多个容器,用-c指定容器名只取 Grafana 容器的日志。下面是文档原样示例,其中的 Deployment 名grafana与容器名需要按你集群中的实际对象替换(本文 release 名为my-grafana):
kubectl logs --namespace=monitoring deploy/grafana -c my-grafana把日志级别提升到 debug
Grafana 默认日志级别是info,可以提升为debug来获取诊断所需信息:
打开
values.yaml,找到grafana.ini下关于 log mode 的段落,在mode: console行的正下方加level: debug。文档特别提醒:缩进层级必须保持一致,否则不生效。grafana.ini: paths: data: /var/lib/grafana/ ..... mode: console level: debug应用改动:
helm upgrade my-grafana grafana-community/grafana -f values.yaml -n monitoring验证:用之前方式访问 Grafana UI 并登录,进入Server Admin > Settings,搜索 log,确认级别显示为
debug。
重置 admin 登录凭据
默认情况下超级管理员凭据是通过 secret 生成的。若想改成一个固定密码,编辑values.yaml,找到adminPassword处定义新密码(文档示例):
# Administrator credentials when not using an existing secret (see below) adminUser: admin adminPassword: admin然后执行:
helm upgrade my-grafana grafana-community/grafana -f values.yaml -n monitoring验证方式:登录 Grafana 时用户名和密码都输入admin,能登录即说明重置生效。示例中的密码值admin来自文档,你可以替换成自己的密码。
清理(可选)
不再需要该部署时,卸载 release:
helm uninstall my-grafana -n monitoring文档对该命令的说明是:它会删除指定 namespace(本例monitoring)中的对象。若还要删除 namespace 本身:
kubectl delete namespace monitoring这两条都是删除类操作,执行前请确认 namespace 与 release 中已没有需要保留的对象。
【免费下载链接】grafanaThe open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.项目地址: https://gitcode.com/GitHub_Trending/gr/grafana
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考