k8s监控方案实践(三):部署与配置Grafana可视化平台
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-grafananame: monitoring-grafananamespace: prometheus
spec:ports:- port: 80targetPort: 3000nodePort: 30002selector:app: grafanatype: NodePort
4. 创建Deployment(grafana-deploy.yaml)
部署 Grafana 容器,配置数据持久化与初始化设置
apiVersion: apps/v1
kind: Deployment
metadata:name: monitoring-grafananamespace: prometheus
spec:replicas: 1selector:matchLabels:task: monitoringapp: grafanatemplate:metadata:labels:task: monitoringapp: grafanaspec:affinity:nodeAffinity: #节点亲和性,固定调度到node2节点requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node2containers:- name: grafanaimage: harbor.local/k8s/grafana:10.4.6-ubuntuimagePullPolicy: IfNotPresentports:- containerPort: 3000protocol: TCPvolumeMounts:- mountPath: /var/lib/grafana #数据持久化目录name: grafana-data-volume- mountPath: /etc/grafana/provisioning/ name: grafana-provisioning-volumeenv:- name: INFLUXDB_HOSTvalue: monitoring-influxdb- name: GF_SERVER_HTTP_PORTvalue: "3000"- name: GF_SECURITY_ADMIN_PASSWORDvalue: "Hwjpass2025!@#" #设置管理员密码- name: GF_USERS_ALLOW_SIGN_UPvalue: "false"- name: GF_AUTH_ANONYMOUS_ENABLEDvalue: "true" #启用匿名访问- name: GF_AUTH_ANONYMOUS_ORG_ROLEvalue: "Viewer" #设置匿名用户的权限角色为只读volumes:- name: grafana-data-volumehostPath:path: /kubernetes/grafana/data #映射到主机目录type: Directory- name: grafana-provisioning-volumehostPath: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 自动化配置等),将视项目需求持续完善。