k8s监控方案实践(三):部署与配置Grafana可视化平台

news2025/5/14 3:20:17

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2375075.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

嵌入式系统架构验证工具:AADL Inspector v1.10 全新升级

软件架构建模与早期验证是嵌入式应用的关键环节。架构分析与设计语言(AADL)是专为应用软件及执行平台架构模型设计的语言,兼具文本与图形化的双重特性。AADL Inspector是一款轻量级的独立工具: 核心处理能力包括 √ 支持处理AA…

STM32-模电

目录 一、MOS管 二、二极管 三、IGBT 四、运算放大器 五、推挽、开漏、上拉电阻 一、MOS管 1. MOS简介 这里以nmos管为例,注意箭头方向。G门极/栅极,D漏极,S源极。 当给G通高电平时,灯泡点亮,给G通低电平时&a…

华为云Flexus+DeepSeek征文|从开通到应用:华为云DeepSeek-V3/R1商用服务深度体验

前言 本文章主要讲述在华为云ModelArts Studio上 开通DeepSeek-V3/R1商用服务的流程,以及开通过程中的经验分享和使用感受帮我更多开发者,在华为云平台快速完成 DeepSeek-V3/R1商用服务的开通以及使用入门注意:避免测试过程中出现部署失败等问…

鸿蒙NEXT开发动画案例5

1.创建空白项目 2.Page文件夹下面新建Spin.ets文件,代码如下: /*** TODO SpinKit动画组件 - Pulse 脉冲动画* author: CSDN—鸿蒙布道师* since: 2024/05/09*/ ComponentV2 export struct SpinFive {// 参数定义Require Param spinSize: number 48;Re…

ctfshow——web入门351~356

SSRF没有出网的部分 web入门351 $ch curl_init($url); 作用:初始化一个 cURL 会话,并设置目标 URL。解释: curl_init($url) 创建一个新的 cURL 资源,并将其与 $url 关联。这里的 $url 是用户提供的,因此目标地址完全…

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】金融风控分析案例-10.1 风险数据清洗与特征工程

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 PostgreSQL金融风控分析案例:风险数据清洗与特征工程实战一、案例背景:金融风控数据处理需求二、风险数据清洗实战(一)缺失值…

美女热舞混剪视频批量剪辑生产技术实践:智能处理与原创性提升方案解析

一、引言:短视频工业化生产的技术转型 在美女类短视频内容运营中,通过标准化技术流程实现「高质量、规模化」产出成为核心需求。本文结合实战经验,解析如何通过智能素材重组、AI 语音合成、动态元素叠加等技术手段,构建自动化生产…

神经网络基础-从零开始搭建一个神经网络

一、什么是神经网络 人工神经网络(Articial Neural Network,简写为ANN)也称为神经网络(NN),是一种模仿生物神经网络和功能的计算模型,人脑可以看做是一个生物神经网络,由众多的神经元连接而成,各个神经元传递复杂的电信号,树突接收到输入信号,然后对信号进行处理,通…

#Redis黑马点评#(五)Redisson原理详解

目录 一 基于Redis的分布式锁优化 二 Redisson 1 实现步骤 2 Redisson可重入锁机制 3 Redisson可重试机制 4 Redisson超时释放机制 5 RedissonMultiLock解决主从一致性 三 trylock与lock两者有何区别 四 Redis优化秒杀 一 基于Redis的分布式锁优化 二 Redisson Redis…

23.(vue3.x+vite)引入组件并动态切换(component)

让多个组件使用同一个挂载点,并动态切换,这就是动态组件 效果截图 A组件代码: <template><div><div>{{message }}</</

VBA会被Python代替吗

VBA不会完全被Python取代、但Python在自动化、数据分析与跨平台开发等方面的优势使其越来越受欢迎、两者将长期并存且各具优势。 Python以其易于学习的语法、强大的开源生态系统和跨平台支持&#xff0c;逐渐成为自动化和数据分析领域的主流工具。然而&#xff0c;VBA依旧在Exc…

SEMI E40-0200 STANDARD FOR PROCESSING MANAGEMENT(加工管理标准)-(三)完结

10 消息服务详情 10.1 本章定义实现加工管理概念所需的消息服务。这些消息已在第8.1节中初步介绍。 协议无关性&#xff1a;这些服务独立于所使用的消息协议&#xff0c;可映射至SECS-II&#xff08;SEMI E5&#xff09;或其他类似协议。 10.1.1 消息服务定义内容包括&#…

MySQL数据库创建、删除、修改

一&#xff1a;建库建表 我们以学校体系进行建表。将数据库命名为school。 以下代码中的大写均可小写不影响。如CREATE DATABASE与create database相同 四个关键的实体分别是学院、老师、学生和课程&#xff0c;其中&#xff0c;学生跟学院是从属关系&#xff0c;这个关系从…

【氮化镓】GaN在不同电子能量损失的SHI辐射下的损伤

该文的主要发现和结论如下: GaN的再结晶特性 :GaN在离子撞击区域具有较高的再结晶倾向,这导致其形成永久损伤的阈值较高。在所有研究的电子能量损失 regime 下,GaN都表现出这种倾向,但在电子能量损失增加时,其效率会降低,尤其是在材料发生解离并形成N₂气泡时。 能量损失…

防火墙来回路径不一致导致的业务异常

案例拓扑&#xff1a; 拓扑描述&#xff1a; 服务器有2块网卡&#xff0c;内网网卡2.2.2.1/24 网关2.2.254 提供内网用户访问&#xff1b; 外网网卡1.1.1.1/24&#xff0c;外网网关1.1.1.254 80端口映射到公网 这个时候服务器有2条默认路由&#xff0c;分布是0.0.0.0 0.0.0.0 1…

WTK6900C-48L:离线语音芯片重构玩具DNA,从“按键操控”到“声控陪伴”的交互跃迁

一&#xff1a;开发背景 随着消费升级和AI技术进步&#xff0c;传统玩具的机械式互动已难以满足市场需求。语音控制芯片的引入使玩具实现了从被动玩耍到智能交互的跨越式发展。通过集成高性价比的语音识别芯片&#xff0c;现代智能玩具不仅能精准响应儿童指令&#xff0c;还能实…

Python 数据分析与可视化:开启数据洞察之旅(5/10)

一、Python 数据分析与可视化简介 在当今数字化时代&#xff0c;数据就像一座蕴藏无限价值的宝藏&#xff0c;等待着我们去挖掘和探索。而 Python&#xff0c;作为数据科学领域的明星语言&#xff0c;凭借其丰富的库和强大的功能&#xff0c;成为了开启这座宝藏的关键钥匙&…

gitkraken 使用教程

一、安装教程 安装6.5.3&#xff0c;之后是收费的&#xff0c;Windows版免安装 二、使用教程 0. 软件说明 gitkraken是一个git本地仓库管理软件&#xff0c;可以管理多个仓库&#xff0c;并且仓库可以属于多个网站多个账户。 1. 克隆仓库 选择要克隆到什么位置&#xff0…

【LeetCode 热题 100】二叉树 系列

&#x1f4c1; 104. 二叉树的最大深度 深度就是树的高度&#xff0c;即只要左右子树其中有一个不为空&#xff0c;就继续往下递归&#xff0c;知道节点为空&#xff0c;向上返回。 int maxDepth(TreeNode* root) {if(root nullptr)return 0;return max(maxDepth(root->lef…

用drawdb.app可视化创建mysql关系表

平时自己建表,没有可视化图形参考 为了便于理解,用drwadb画mysql关系表 drawDB | Online database diagram editor and SQL generator