深入 Prometheus 监控生态 - 第六篇:与 Grafana 实现系统全面监控(健康状态和任务状态看板)

news2024/11/6 1:02:52

文章目录

  • 前言
  • 部署 Grafana 和连接 Prometheus 数据源
    • 简单部署 Grafana
  • 构建系统监控看板
    • 1. 监控信息查看
    • 2. 看板制作(表格图)
      • 配置表格图(Line Chart)
  • 配置告警规则与通知
    • 1. Prometheus 中的告警规则
    • 2. Grafana 告警配置(常用)
    • 3. 企业微信通知推送
  • 总结


前言

Grafana 是一款强大的开源监控和数据可视化工具,广泛应用于 IT 基础设施的监控和性能分析。它支持多种数据源,如 Prometheus、MySQL、Elasticsearch 等,能够将繁杂的数据转换为易于理解的图表、曲线图和统计面板。结合 Prometheus 监控体系,我们将在 Grafana 中构建一个全面的系统健康状态监控看板,涵盖任务状态、硬件健康、资源使用等关键指标,并配置实时告警与企业微信通知功能,帮助运维团队及时应对潜在问题。


部署 Grafana 和连接 Prometheus 数据源

简单部署 Grafana

  1. 下载与安装:根据操作系统选择适合的安装方式(例如,Linux 下通过 aptyum 安装,或者 Docker 中使用 Grafana 镜像)。

    # 使用 Docker 安装 Grafana
    docker run -d --name=grafana -p 3000:3000 grafana/grafana
    
  2. 初次登录:启动后,打开 http://localhost:3000,默认用户名和密码均为 admin。登录后可以根据需求修改密码。

  3. 添加数据源 Prometheus

    • 在 Grafana 主页面,进入 Configuration > Data Sources,点击 Add data source
    • 选择 Prometheus 作为数据源,配置 Prometheus 服务器的地址(通常为 http://<Prometheus_IP>:9090),点击 Save & Test 确认连接成功。

构建系统监控看板

1. 监控信息查看

Prometheus 提供了众多监控指标(metrics),例如任务状态、CPU、内存、磁盘等资源使用情况。通常硬件健康和任务状态可以通过安装的 node_exporter 或其他特定的 exporter 监控。例如,基于 IPMI 协议的监控常用于硬件健康状态,返回的值通常为 1 表示健康、0 表示不健康(具体可根据设备官方相应文档或浏览器访问该 exporter 页面,一般都会有参数说明)。

  • 在监控设备 exporter 页面(通常),查看返回参数信息。
  • Prometheus 首页,点击 Graph ,输入参数可查看返回状态信息。并且可在此页面编写 Prometheus 公式,公式可应用于 Grafana看板警告

2. 看板制作(表格图)

为了直观地展示系统运行状态,Grafana 提供监控数据可视化展示,即看板,但需由用户制作。下面具体说说看板内表格图的详细的配置步骤。

首先在 Dashboards > New Dashboard 新建一个看板,并在看板里面 Add > Visualization 添加一个视图

配置表格图(Line Chart)

  1. 表格图

    • 视图里边,右上角选择 Table 类型。
  2. 配置查询(Query)

    • 输入 Prometheus 查询公式(上面查询公式)。例如,监控 CPU 使用率的公式为:
      100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
      
    • Grafana 会生成一条显示 CPU 使用率的表格。
  3. 监控信息调整

    • 加入监控信息后会发现,生成的默认表格只有两列,左侧是时间,右侧是返回值,那我们就要把有用的信息提取出来。
    • Query > Options > Format 选择 TableType 选择 Instant ,这样发现除时间、返回值以外的,什么 instance、job、hostname 等等全都出来了,和 Pormetheus 在网页上返回的信息一致。
    • 这时要将不要的列去掉,在 Transform > Add transformation 添加 Organize fieIds,将不要的列叉掉,将要的列 Rename 改名,方便查阅。
    • 同时 Transform 还支持多项调整,比如:Filter data by values 支持根据属性值调整返回信息,Add fieId from calculation 支持通过不同列的值计算得出新列等。
  4. 监控设备命名

    • 若是通过大量 IP 监控设备,在视图上无法快速确认该 IP 是什么设备,所以一般会将 IP 命名为指定设备。
    • 右侧点击 Add fieId override > FieIds with name ,并选择那一列的值需要改名,点击 Edit value mappings 根据返回 IP 值修改监控设备名称。
  5. 表格样式调整

    • 右侧 Override x 就是用于调整所选列的样式,如:Column width 就是列宽,Threshold 就是配置相应的阈值和颜色。
    • 可通过 Add fieId override > FieIds with name 新建,再 Add fieId property > Column width 追加属性即可。
    • Override x 基础上,Add fieId property > ‘Cell options > Cell type’ 选择 Colored textAdd fieId property > Thresholds 配置相应的阈值和颜色。例如,设定低于 80% 为绿色(健康),80-90% 为黄色(警告),超过 90% 为红色(严重)。
  6. 其他

    • 配置错误可以对该 视图 点击右上角 Edit 重新修改并保存。

配置告警规则与通知

1. Prometheus 中的告警规则

在 Prometheus 中定义告警规则,可以使监控更加灵活并减轻 Grafana 的负担。我们可以先在 Prometheus 中写好规则,再通过 Grafana 来显示和推送告警。

  1. 编写 Prometheus 告警规则

    • 在 Prometheus 配置文件中添加规则文件路径。
    • 例如,监控 CPU 使用率高于 90% 时触发告警:
      groups:
      - name: CPU Alert
        rules:
        - alert: HighCPUUsage
          expr: (100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)) > 90
          for: 1m
          labels:
            severity: critical
          annotations:
            summary: "Instance {{ $labels.instance }} CPU usage high"
            description: "CPU usage is above 90% (current value: {{ $value }}%)"
      
  2. 在 Grafana 中应用告警

    • 将 Prometheus 中的告警规则显示在 Grafana,看板中的折线图或表格图可以自动引用这些告警。

2. Grafana 告警配置(常用)

  1. 设置告警规则
    • 选择图表中的 Alert > Create Alert
    • 配置告警规则的触发条件(根据 Prometheus 公式配置报警规则)。例如,当 CPU 使用率超过 90% 持续 1 分钟,触发告警。
    • 添加通知渠道(Notification channel),如企业微信。

3. 企业微信通知推送

企业微信支持 API 方式接收告警信息,需先在企业微信后台创建应用,并获取企业 ID、应用 ID、应用 Secret。

  1. 配置企业微信推送 API

    • 企业微信后台创建应用,记录 CorpID(企业ID)、AgentID(应用ID)、Secret(应用Secret)。
    • 配置 Grafana 中的 Notification Channel,使用企业微信 Webhook API(配置 Integration 类型选择 WeCom)。
  2. API 推送设置

    • 在 Grafana 中,进入 Configuration > Notification channels,选择 Webhook 作为通知方式。

    • Webhook URL 格式示例:

      https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN
      
    • 配置示例代码:

      {
        "msgtype": "text",
        "text": {
          "content": "告警通知:{{ .Labels.alertname }} - {{ .Annotations.description }}"
        },
        "touser": "@all",
        "agentid": "<AgentID>"
      }
      
    • 替换相应的参数并测试通知是否可行。通过此配置,当告警触发时,企业微信将自动收到通知。


总结

通过 Grafana 和 Prometheus 的结合,运维团队可以创建高度可视化和动态的监控看板,并在关键指标异常时自动告警。合理设置折线图、表格图的动态变色和告警通知,有助于快速定位并处理系统问题,实现了实时、便捷、智能的 IT 监控管理。

目前,已更新的 Prometheus 及其相关篇章有:

  • 深入 Prometheus 监控生态 - 第一篇:原理与架构详解
  • 深入 Prometheus 监控生态 - 第二篇:网络等硬件设备监控(snmp-exporter)
  • 深入 Prometheus 监控生态 - 第三篇:操作系统信息监控(node-exporter)
  • 深入 Prometheus 监控生态 - 第四篇:服务器硬件信息监控(ipmi-exporter)
  • 深入 Prometheus 监控生态 - 第五篇:利用 API 信息进行监控(NAS 备份任务监控 + 解决思路)
  • 深入 Prometheus 监控生态 - 第六篇:与 Grafana 实现系统全面监控(健康状态和任务状态看板)

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

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

相关文章

反转链表.

给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1]示例 3&#xff1a; 输入&am…

数列分块入门

本期是数列分块入门。其中的大部分题目来自hzwer在LOJ上提供的数列分块入门系列。 Blog:here (其实是对之前分块的 blog 的整理补充) sto hzwer orz %%% [转载] ---------------------------------------------------------------------------------…

基于SpringBoot+Gpt个人健康管家管理系统【提供源码+答辩PPT+参考文档+项目部署】

作者简介&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容&#xff1a;&#x1f31f;Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…

苍穹外卖day-01

后端环境搭建 创建git仓库 提交代码 创建gitee远程仓库 开始连接远程仓库 运行sql文件&#xff0c;创建数据库。这里选取的可视化工具是navicat 编译一下项目 运行项目 登录的账号和密码在数据库中的emploee表中 退出前端界面登录后再重新登录&#xff0c;可以从后台清晰看到前…

【Docker故障处理】Ubuntu系统下tab键无法补全问题解决

【Docker故障处理】Ubuntu系统下tab键无法补全问题解决 一、环境介绍1.1 本地环境规划1.2 本次实践说明二、故障现象三、故障分析3.1 可能的原因3.2 排错思路四、故障处理4.1 安装bash-completion4.2 下载补全脚本4.3 配置永久生效五、测试tab键补全六、总结一、环境介绍 1.1 …

若依框架-添加测试类-最新

1、在【ruoyi-admin】的pom.xml下添加依赖 <!-- 单元测试--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-test</artifactId><scope>test</scope></dependency><dependency>…

CSS基础概念:什么是 CSS ? CSS 的组成

什么是 CSS&#xff1f; CSS&#xff08;层叠样式表&#xff0c;Cascading Style Sheets&#xff09;是一种用于控制网页外观的样式表语言。通过定义样式规则&#xff0c;CSS 可以指定 HTML 页面中各个元素的显示方式&#xff0c;包括颜色、布局、字体、间距等。 与 HTML 专注…

解密RFID技术提升应急消防管理效率的过程

一、部署RFID消防应急解决策略的具体步骤 &#xff08;1&#xff09;需求探讨与战略规划阶段 深入探究&#xff1a;全面、深刻地理解消防领域在资源分配、人员跟踪、应急救援等方面的实际需求。与消防机构紧密合作&#xff0c;共同确定RFID技术的应用提升和具体实施范围。 细…

国内短剧源码短剧系统搭建小程序部署H5、APP打造短剧平台

​在当今的互联网时代&#xff0c;短剧作为一种新兴的娱乐形式&#xff0c;受到了越来越多用户的喜爱。为了提供更好的用户体验和满足用户需求&#xff0c;一个好的短剧系统需要具备多元化的功能和优质的界面设计。 本文将介绍国内短剧源码短剧系统搭建小程序部署H5、APP所需的…

使用docker安装zlmediakit服务(zlm)

zlmediakit安装 zlmediakit安装需要依赖环境和系统配置&#xff0c;所以采用docker的方式来安装不容易出错。 docker pull拉取镜像(最新) docker pull zlmediakit/zlmediakit:master然后先运行起来 sudo docker run -d -p 1935:1935 -p 80:80 -p 8554:554 -p 10000:10000 -p …

qt QDragEnterEvent详解

1、概述 QDragEnterEvent是Qt框架中用于处理拖放进入事件的一个类。当用户将一个拖拽对象&#xff08;如文件、文本或其他数据&#xff09;拖动到支持拖放操作的窗口部件&#xff08;widget&#xff09;上时&#xff0c;系统会触发QDragEnterEvent事件。这个类允许开发者在拖拽…

HarmonyOS Next星河版笔记--界面开发(3)

属性 1.1.设计资源-svg图标 需求&#xff1a;界面中展示图标→可以使用的svg图标(任意放大缩小不失真、可以改变颜色) 使用方式&#xff1a; ①设计师提供&#xff1a;基于项目的图标&#xff0c;拷贝到项目目录使用 Image($r(app.media.ic_dianpu)) .width(40) fillColor…

查找连表的倒数第k个节点

居安思危 何解&#xff1f; 1、假如有1、2、3三个节点&#xff0c;找倒数第二个&#xff0c;实际是整数第几个&#xff1f; 3-21 2 &#xff1a; 及 length - k 1 ,所以先遍历找节点长度&#xff0c;在遍历找所需节点 // 今天这不是力扣的var findNode function(head , k){…

陪玩系统源码APP中的语音聊天直播房间有哪些功能?

陪玩系统源码APP通常采用Springboot、MybatisPlus和MySQL等后端技术栈来构建后端服务。这些技术提供了强大的数据处理能力和灵活的扩展性&#xff0c;能够满足高并发、低延迟的业务需求。 陪玩系统源码线上线下家政游戏陪玩前端开发框架如uniapp&#xff08;针对Web和小程序&am…

【python】OpenCV—findContours(4.3)

文章目录 1、功能描述2、代码实现3、完整代码4、结果展示5、涉及到的库函数5.1、cv2.Canny5.2 cv2.boxPoints 6、参考 1、功能描述 找出图片中的轮廓&#xff0c;拟合轮廓外接椭圆和外接矩阵 2、代码实现 导入必要的库&#xff0c;固定好随机种子 import cv2 as cv import …

介绍目标检测中mAP50和mAP50-95的区别

在目标检测任务中&#xff0c;mAP&#xff08;mean Average Precision&#xff09;是一个常用的性能评估指标&#xff0c;用于衡量模型在不同类别和不同IoU&#xff08;Intersection over Union&#xff09;阈值下的平均精度。mAP50和mAP50-95是mAP的两个特定版本&#xff0c;它…

三维测量与建模笔记 - 2.2 射影几何

教程中H矩阵写的有问题&#xff0c;上图中H矩阵应该是&#xff08;n1) x (m1) 共点不变性,下图中黄色方块标记的点&#xff0c;在射影变换前后&#xff0c;虽然直线的形状有所变化&#xff0c;但仍然相交于同一个点。 共线不变性&#xff0c;下图黄色标记的两个点&#xff0c;在…

【设计模式】策略模式定义及其实现代码示例

文章目录 一、策略模式1.1 策略模式的定义1.2 策略模式的参与者1.3 策略模式的优点1.4 策略模式的缺点1.5 策略模式的使用场景 二、策略模式简单实现2.1 案例描述2.2 实现代码 三、策略模式的代码优化3.1 优化思路3.2 抽象策略接口3.3 上下文3.4 具体策略实现类3.5 测试 参考资…

nuPlan最新SOTA,香港科技大学发布基于学习决策范围内的规划PlanScope

nuPlan最新SOTA&#xff0c;香港科技大学发布基于学习决策范围内的规划PlanScope Abstract 在自动驾驶的背景下&#xff0c;基于学习的方法在规划模块的开发中表现出了很大的潜力。在规划模块的训练过程中&#xff0c;直接最小化专家驾驶日志与规划输出之间的差异是一种广泛采…

String字符串 Random数字运算

Java API String 在使用String类进行字符串操作之前需要对String类进行初始化,在Java中可以通过以下两种方式对String类进行初始化 (1) 使用字符串常量 直接初始化一个String对象,具体代码如下 这是比较简化的写法 String a "abd"; (2) 使用String类的构造方法…