在当今的数字化运维体系中,一套强大、直观的监控系统是企业IT基础设施稳定运行的“眼睛”。Grafana,作为一款开源的数据可视化与分析平台,凭借其丰富的插件生态和灵活的数据源支持,已成为构建企业级监控体系的核心组件。它能将服务器性能指标、应用日志、网络流量等各类数据转化为直观的图表,帮助运维和开发团队快速定位问题,洞察系统健康状态。

Grafana简介
Grafana 开源软件 (OSS) 可让您查询、可视化、警报和探索指标、日志和跟踪,无论它们存储在何处。Grafana 数据源插件可让您查询多种数据源,包括时间序列数据库(如 Prometheus 和 CloudWatch)、日志记录工具(如 Loki 和 Elasticsearch)、NoSQL/SQL 数据库(如 Postgres)、CI/CD 工具(如 GitHub)等等。Grafana OSS 为您提供工具,以在实时仪表板上显示这些数据,并提供富有洞察力的图表和可视化效果。
安装配置Grafana
本文将演示如何在 Kubernetes 环境中,使用 Helm 完成 Grafana 的安装与配置。这是一种在生产环境中非常推荐的方式,便于管理和版本控制。
1、下载Grafana chart包
首先,我们添加 Grafana 官方的 Helm 仓库并拉取指定版本的 Chart 包。
$ helm repo add grafana https://grafana.github.io/helm-charts
"grafana" has been added to your repositories
$ helm pull grafana/grafana --version 7.3.12
2、上传到内网 Harbor 服务
如果您的环境与外网隔离,需要将拉取的 Chart 包上传至内网的镜像仓库,例如 Harbor。
$ helm registry login core.jiaxzeng.com --username admin
Password:
Login Succeeded
$ helm push prometheus-25.25.0.tgz oci://core.jiaxzeng.com/plugins
Pushed: core.jiaxzeng.com/plugins/grafana:7.3.12
Digest: sha256:480fed052af924f971c308ab89b2bff72e262cedd8045ee981e58280ecdcfaa8
3、内网主机下载 Grafana chart 包
在部署 Grafana 的 Kubernetes 集群内网主机上,从内网 Harbor 拉取 Chart 包。
$ sudo helm registry login core.jiaxzeng.com --username admin
Password:
Login Succeeded
$ sudo helm pull oci://core.jiaxzeng.com/plugins/grafana --version 7.3.12 --untar --untardir /etc/kubernetes/addons/
Pulled: core.jiaxzeng.com/plugins/grafana:7.3.12
Digest: sha256:480fed052af924f971c308ab89b2bff72e262cedd8045ee981e58280ecdcfaa8
4、编写 Helm 部署 Grafana 的配置文件
创建 values.yaml 文件来定制 Grafana 的部署参数,如镜像仓库、存储、访问路径和管理员密码等。
$ cat <<'EOF' | sudo tee /etc/kubernetes/addons/grafana-values.yaml > /dev/null
# 使用内网 Harbor 仓库镜像
image:
registry: core.jiaxzeng.com
repository: library/monitor/grafana
initChownData:
enabled: true
image:
registry: core.jiaxzeng.com
repository: library/busybox
# 配置 pvc 持久卷
persistence:
enabled: true
type: pvc
storageClassName: ceph-rbd-storage # 不需要的话,使用默认 pvc
accessModes:
- ReadWriteOnce
size: 10Gi
# 访问 Grafana 添加 /grafana 上下文
env:
GF_SERVER_ROOT_URL: "%(protocol)s://%(domain)s:%(http_port)s/grafana"
GF_SERVER_SERVE_FROM_SUB_PATH: true
# 设置 Grafana 账号密码
adminUser: admin
adminPassword: admin321
# 通过 ingress 访问 Grafana
ingress:
enabled: true
ingressClassName: nginx
annotations:
cert-manager.io/cluster-issuer: ca-cluster-issuer
path: /grafana
pathType: Prefix
hosts:
- ops.jiaxzeng.com
tls:
- secretName: ops.jiaxzeng.com-tls
hosts:
- ops.jiaxzeng.com
# 取消测试框架
testFramework:
enabled: false
EOF
5、部署 Grafana 服务
使用 Helm 命令,根据刚才创建的配置文件,在 kube-system 命名空间中进行部署。
$ helm -n kube-system install grafana -f grafana-values.yaml /etc/kubernetes/addons/grafana/
Grafana 验证以及添加数据源
部署完成后,如何验证服务是否正常,并接入我们的监控数据呢?
1、查看 Grafana Pod 是否正常运行
$ kubectl -n kube-system get pod -l app.kubernetes.io/instance=grafana
NAME READY STATUS RESTARTS AGE
grafana-7d9b67598b-h44lp 1/1 Running 0 3m48s
2、浏览器访问 Grafana
在 Ingress 配置的域名下(如 https://ops.jiaxzeng.com/grafana),您将看到 Grafana 的欢迎页面。

添加数据源
Grafana 本身不存储数据,它需要连接到数据源。这里以最常用的时间序列数据库 Prometheus 为例进行配置。
1、登录 Grafana 地址 https://ops.jiaxzeng.com/grafana
2、打开菜单 - Connections - Data sources

3、点击 “Add data source” 按钮
4、在数据源列表中选择 “Prometheus”

5、填写 Prometheus 服务器地址
这是最关键的一步。您需要填写集群内可访问的 Prometheus 服务地址。

Tip:填写 Prometheus 地址时,请确认 Prometheus 服务是否设置了 --web.external-url 参数。如果设置了该参数,URL 中需要包含具体的路径。上图中的示例配置了 /prometheus 路径。
6、测试数据源是否可用
填写完 URL 后,滚动到页面底部,点击 “Save & test” 按钮。如果配置正确,您将看到绿色的成功提示。

结语
至此,我们已经成功在 Kubernetes 集群中部署了 Grafana,并完成了与 Prometheus 数据源的对接。您现在已经拥有了一个功能强大的可视化监控平台的基础。接下来,就可以开始探索 Grafana 的核心功能:创建仪表盘、设置告警规则、使用 Explore 功能即时查询数据。掌握这些技能,将极大提升您对系统状态的洞察力和故障响应速度。
在云原生技术飞速发展的今天,像 Grafana 这样的工具是每一位 运维/SRE 工程师工具箱里的必备品。如果您想深入学习更多关于云原生监控、自动化运维的实战技巧,欢迎到技术社区交流探讨。
