k8s监控方案实践(三):部署与配置Grafana可视化平台
文章目录
- k8s监控方案实践(三):部署与配置Grafana可视化平台
- 一、Grafana简介
- 1. 什么是Grafana?
- 2. Grafana与Prometheus的关系
- 3. Grafana应用场景
- 二、Grafana实战部署
- 1. 部署方式选择
- 2. 创建Namespace(prometheus-namespace.yaml)
- 3. 创建Service(alertmanager-config.yaml)
- 4. 创建Deployment(grafana-deploy.yaml)
- 5. 部署所有资源
- 三、配置Grafana页面并集成Prometheus监控数据
- 1. 查看外部访问端口
- 2. 访问ui页面和配置数据源
- 3. 配置仪表盘
- 总结
随着容器化和微服务架构的不断发展,系统的复杂性与日俱增,构建一套完善的监控体系已成为保障系统稳定运行的关键。在前两篇文章中,我们介绍了如何在 Kubernetes 中部署 Prometheus 并集成 Node Exporter 实现节点资源的基础监控,以及如何使用 Alertmanager 配置 Prometheus 告警规则和接入钉钉通知。
本篇将继续完善监控体系,重点介绍如何部署和配置 Grafana,实现对 Prometheus 采集数据的可视化展示,帮助我们更加直观地理解系统状态与运行趋势,为运维与故障排查提供强有力的支持。
一、Grafana简介
1. 什么是Grafana?
Grafana 是一个开源的可视化监控平台,能够与 Prometheus、InfluxDB、Loki 等多种数据源集成,通过丰富的图表和仪表盘展示监控数据,帮助用户实时掌握系统状态和趋势。
Grafana 的核心优势包括:
- 多数据源支持:支持 Prometheus、Elasticsearch、Loki、MySQL 等众多数据源
- 丰富的图表展示能力:支持折线图、柱状图、饼图、热力图等
- 灵活的仪表盘配置:支持变量、查询模板、权限控制
- 强大的社区生态:拥有大量社区共享的仪表盘模板
- 告警功能:从 Grafana 直接对图表设置告警并发送通知(可选)
Grafana 通常作为 Prometheus 的前端展示工具,用于提供图形化的数据展示和仪表盘功能,是可观测性体系中不可或缺的一环。
2. Grafana与Prometheus的关系
在 Kubernetes 监控体系中,Grafana 与 Prometheus 的协作方式如下:
- Prometheus 作为数据采集和存储组件,收集节点和服务的监控指标
- Grafana 作为可视化组件,通过查询 Prometheus 数据源展示图表和趋势变化
- 用户无需直接与 Prometheus 交互,而是通过 Grafana 仪表盘直观掌握系统运行状态
3. Grafana应用场景
- Kubernetes 集群监控:结合 Prometheus + Node Exporter + kube-state-metrics实现对资源、容器状态、部署等的可视化
- 应用性能监控(APM):展示应用服务的响应时间、QPS、错误率等
- 系统运维监控:如磁盘、内存、网络 I/O、数据库连接数等
- 业务数据展示:如订单数量、用户注册趋势、转化率等
二、Grafana实战部署
1. 部署方式选择
Grafana 支持多种部署方式,在 Kubernetes 中,常见的方式包括:
- 使用 Helm Chart 快速部署(推荐用于生产环境)
- 手动编写 YAML 文件部署(适合学习和自定义)
本节我们将以 YAML 文件部署 为例,讲解 Grafana 的部署过程,便于理解其运行机制和组件结构。
2. 创建Namespace(prometheus-namespace.yaml)
创建名为 prometheus
的命名空间,用于隔离部署监控相关资源
apiVersion: v1
kind: Namespace
metadata:
name: prometheus
3. 创建Service(alertmanager-config.yaml)
通过 NodePort
将 Grafana 暴露至集群外部
apiVersion: v1
kind: Service
metadata:
labels:
kubernetes.io/cluster-service: 'true'
kubernetes.io/name: monitoring-grafana
name: monitoring-grafana
namespace: prometheus
spec:
ports:
- port: 80
targetPort: 3000
nodePort: 30002
selector:
app: grafana
type: NodePort
4. 创建Deployment(grafana-deploy.yaml)
部署 Grafana 容器,配置数据持久化与初始化设置
apiVersion: apps/v1
kind: Deployment
metadata:
name: monitoring-grafana
namespace: prometheus
spec:
replicas: 1
selector:
matchLabels:
task: monitoring
app: grafana
template:
metadata:
labels:
task: monitoring
app: grafana
spec:
affinity:
nodeAffinity: #节点亲和性,固定调度到node2节点
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- node2
containers:
- name: grafana
image: harbor.local/k8s/grafana:10.4.6-ubuntu
imagePullPolicy: IfNotPresent
ports:
- containerPort: 3000
protocol: TCP
volumeMounts:
- mountPath: /var/lib/grafana #数据持久化目录
name: grafana-data-volume
- mountPath: /etc/grafana/provisioning/
name: grafana-provisioning-volume
env:
- name: INFLUXDB_HOST
value: monitoring-influxdb
- name: GF_SERVER_HTTP_PORT
value: "3000"
- name: GF_SECURITY_ADMIN_PASSWORD
value: "Hwjpass2025!@#" #设置管理员密码
- name: GF_USERS_ALLOW_SIGN_UP
value: "false"
- name: GF_AUTH_ANONYMOUS_ENABLED
value: "true" #启用匿名访问
- name: GF_AUTH_ANONYMOUS_ORG_ROLE
value: "Viewer" #设置匿名用户的权限角色为只读
volumes:
- name: grafana-data-volume
hostPath:
path: /kubernetes/grafana/data #映射到主机目录
type: Directory
- name: grafana-provisioning-volume
hostPath:
path: /kubernetes/grafana/provisioning/
type: Directory
5. 部署所有资源
kubectl apply -f prometheus-namespace.yaml
kubectl apply -f grafana-svc.yaml
kubectl apply -f grafana-deploy.yaml
三、配置Grafana页面并集成Prometheus监控数据
1. 查看外部访问端口
kubectl get svc -n prometheus monitoring-grafana
2. 访问ui页面和配置数据源
访问地址:http://ip:30002
账号:admin
密码:Hwjpass2025!@# #这里根据自己设置的密码来输入
Home → Connections→ Add new connection → Prometheus,添加Prometheus数据源
填写Prometheus服务地址:http://prometheus.prometheus.svc:9090
Save & test,保存并测试数据源
3. 配置仪表盘
进入 “Dashboard” → “Import”,添加仪表盘,我这里直接导入官方现有的仪表盘
选择数据源为上一步配置的 Prometheus,点击 “Import” 完成导入
效果如下:数据图表可视化
总结
🚀 本文完整介绍了如何在 Kubernetes 集群中部署 Grafana,包括服务暴露、容器部署、数据持久化配置、匿名访问控制,以及如何连接 Prometheus 并导入官方仪表盘,实现监控数据的可视化展示。
✅ 至此,我们已经完成了基于 Prometheus + Node Exporter + Alertmanager + Grafana 的 K8s 监控体系搭建,涵盖了从数据采集、规则告警到图形化展示的完整链路,具备实际生产可用性。
📌 本系列的监控实践方案到此告一段落,后续如有进一步扩展(如 Loki 日志可视化、Tempo 链路追踪、Prometheus Operator 自动化配置等),将视项目需求持续完善。