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

http://www.xdnf.cn/news/414199.html

相关文章:

  • 【Redis】键值对数据库实现
  • Tenacity 高级使用指南:Python 重试机制的终极解决方案
  • 使用ACE-Step在本地生成AI音乐
  • 基于大模型预测的多发性硬化综合诊疗方案研究报告大纲
  • 棉花杂草检测数据集VOC+YOLO格式4279张2类别
  • 时空注意力机制深度解析:理论、技术与应用全景
  • 【笔试训练】给一个数组构建二叉树|从前序遍历与中序遍历构建二叉树|二叉树中的最大路径和
  • Windows远程桌面实现之十七:基于浏览器的文件和目录传输(二)
  • C++舆情监控爬虫程序实现
  • [特殊字符] 本地部署DeepSeek大模型:安全加固与企业级集成方案
  • 利用SSRF击穿内网!kali靶机实验
  • 嵌入式gcc编译生产的.d 和 .o文件是什么文件?
  • dotnet-hosting-2.2.8-win安装步骤指南
  • 【操作系统】零拷贝技术
  • hive在配置文件中添加了hive.metastore.uris之后进入hive输入命令报错
  • Python 实现失败重试功能的几种方法
  • 记录裁员后的半年前端求职经历
  • LVGL(lv_checkbox复选框按键)
  • xss-lab靶场4-7关基础详解
  • 解决下拉框数据提交后回显名称不对
  • LearnOpenGL02:绘制三角形和矩形
  • 系统稳定性之技术方案
  • 处理均值的配对比较
  • 一、华为鸿蒙系统介绍
  • 计算机组成原理———CPU指令周期精讲
  • 高防云的主要优势表现在哪些方面?
  • 学习黑客5 分钟深入浅出理解Alternate Data Streams (ADS)
  • 国产大模型「五强争霸」:决战AGI,谁主沉浮?
  • Fiber
  • SQL数据库核心实用技巧总结