当前位置: 首页 > news >正文

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 仪表盘直观掌握系统运行状态
    g.cn/direct/31da7451a2e34431b7ce7606e6722ebf.png)

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 自动化配置等),将视项目需求持续完善。

相关文章:

  • Spring Boot整合Kafka实战指南:从环境搭建到消息处理全解析
  • 【运维】MacOS蓝牙故障排查与修复指南
  • FreeRTOS的学习记录(基础知识)
  • STM32F103_LL库+寄存器学习笔记12.1 - 串口DMA高效收发实战:引入ringbuffer结构
  • [计算机网络]网络层
  • Matlab 模糊控制节水洗衣机模型
  • 中科院无人机导航物流配送的智能变革!LogisticsVLN:基于无人机视觉语言导航的低空终端配送系统
  • 9.渐入佳境 -- 套接字的多种可选项
  • iptables实现DDos
  • 计算频谱的方法
  • [Java实战]Spring Boot 整合 Session 共享(十七)
  • 什么是 NoSQL 数据库?它与关系型数据库 (RDBMS) 的主要区别是什么?
  • ros1+docker环境快速搭建
  • postgresql主从集群一键搭建脚本分享
  • 人工智能领域1-4区所有SCI汇总!
  • springCloud/Alibaba常用中间件之Setinel实现熔断降级
  • ctfshow——web入门351~356
  • WebGL图形编程实战【6】:性能优化 × 调试工具与技巧精讲
  • 基于FastAPI框架的日志模块设计
  • STM32入门教程——GPIO输出
  • 西王食品连亏三年:主业齐“崩”,研发人员多为专科生
  • 百利天恒董事长向复旦捐赠三千万元,用于支持创新药物靶点发现等师资建设需要
  • 经济日报金观平:充分发挥超大规模市场优势
  • 重庆荣昌区委区政府再设“答谢宴”,邀请800余名志愿者机关食堂用餐
  • 外交部发言人就印巴局势升级答记者问
  • 报告:4月份新增发行的1763亿元专项债中,投向房地产相关领域约717亿元