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

文章目录

  • 前言
  • 部署 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 Alertrules:- alert: HighCPUUsageexpr: (100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)) > 90for: 1mlabels:severity: criticalannotations: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.rhkb.cn/news/462737.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML 标签属性——id、class、style 等全局属性详解

文章目录 1. id属性2. class属性3. style属性4. title属性5. lang属性6. dir属性7. accesskey属性8. tabindex属性小结HTML全局属性是一组可以应用于几乎所有HTML元素的特殊属性。这些属性提供了额外的功能和信息,使得网页开发者能够更好地控制元素的行为、样式和可访问性。 …

Python数据分析案例62——基于MAGU-LSTM的时间序列预测(记忆增强门控单元)

案例背景 时间序列lstm系列预测在学术界发论文都被做烂了&#xff0c;现在有一个新的MAGU-LSTM层的代码&#xff0c;并且效果还可以&#xff0c;非常少见我觉得还比较创新&#xff0c;然后我就分享一下它的代码演示一下&#xff0c;并且结合模态分解等方法做一次全面的深度学习…

C++泛型编程

一、什么是泛型编程 泛型编程 是一种编程范式&#xff0c;它通过编写可以处理多种数据类型的代码来实现代码的灵活复用。泛型编程主要通过模板来实现。 比如我们日常使用的容器类型vector就应用了模板来实现其通用性&#xff0c;我们在使用时可以通过传入型别创建对应的动态数…

ServletContext,Cookie,HttpSession的使用

ServletContext对象 ServletContext对象官方也称servlet上下文。服务器会为每一个Web应用创建一个ServletContext对象&#xff0c;这个对象全局唯一&#xff0c;而且Web应用中所有的Servlet都共享这个对象。 ServletContext对象的作用 相对路径转绝对路径 servletContext.g…

如何封装一个可取消的 HTTP 请求?

前言 你可能会好奇什么样的场景会需要取消 HTTP 请求呢&#xff1f; 确实在实际的项目开发中&#xff0c;可能会很少有这样的需求&#xff0c;但是不代表没有&#xff0c;比如&#xff1a; 假如要实现上述这个公告栏&#xff0c;每点击一个 tab 按钮就会切换展示容器容器中…

前端笔试新问题总结

记录总结下最近遇到的前端笔试新问题 目录 一、操作数组方法 1.Array.isArray(arr) 2.Object.prototype.toString.call(arr) "[object Array]" 3.arr instanceof Array 1&#xff09;跨帧问题 2&#xff09;修改Array.prototype 3&#xff09;模拟数组的对象…

玩转Hugging Face/魔搭社区/魔乐社区”教程

2.1 HF 平台 2.1.1 注册Hugging Face 平台 &#xff08;需要魔法上网&#xff09; Hugging Face 最初专注于开发聊天机器人服务。尽管他们的聊天机器人项目并未取得预期的成功&#xff0c;但他们在GitHub上开源的Transformers库却意外地在机器学习领域引起了巨大轰动。如今&…

Chrome与夸克谁更节省系统资源

在当今数字化时代&#xff0c;浏览器已经成为我们日常生活中不可或缺的一部分。无论是工作、学习还是娱乐&#xff0c;我们都依赖于浏览器来访问互联网。然而&#xff0c;不同的浏览器在性能和资源消耗方面存在差异。本文将探讨Chrome和夸克两款浏览器在系统资源消耗方面的表现…

【OJ题解】C++实现反转字符串中的每个单词

&#x1f4b5;个人主页: 起名字真南 &#x1f4b5;个人专栏:【数据结构初阶】 【C语言】 【C】 【OJ题解】 题目要求&#xff1a;给定一个字符串 s &#xff0c;你需要反转字符串中每个单词的字符顺序&#xff0c;同时仍保留空格和单词的初始顺序。 题目链接: 反转字符串中的所…

Vue 学习随笔系列十三 -- ElementUI 表格合并单元格

ElementUI 表格合并单元格 文章目录 ElementUI 表格合并单元格[TOC](文章目录)一、表头合并二、单元格合并1、示例代码2、示例效果 一、表头合并 参考&#xff1a; https://www.jianshu.com/p/2befeb356a31 二、单元格合并 1、示例代码 <template><div><el-…

吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)4.3-4.4

目录 第四门课 卷积神经网络&#xff08;Convolutional Neural Networks&#xff09;第四周 特殊应用&#xff1a;人脸识别和神经风格转换&#xff08;Special applications: Face recognition &Neural style transfer&#xff09;4.3 Siamese 网络&#xff08;Siamese net…

vue data变量之间相互赋值或进行数据联动

摘要&#xff1a; 使用vue时开发会用到data中是数据是相互驱动&#xff0c;经常会想到watch,computed&#xff0c;总结一下&#xff01; 直接赋值&#xff1a; 在 data 函数中定义的变量可以直接在方法中进行赋值。 export default {data() {return {a: 1,b: 2};},methods: {u…

安装Blender并使用

前言 该系列记录了如何用Blenderpro来构建自己的场景数据集&#xff0c;从环境搭建到后期构建数据集的整个流程 本文章是第一部分&#xff0c;BlenderPrc2的安装以及环境配置 部分参考https://blog.csdn.net/weixin_49521551/article/details/121573334 官方文档https://dlr…

百度SEO分析实用指南 提升网站搜索排名的有效策略

内容概要 在数字化时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已经成为提升网站曝光度的关键工具。本指南将带您了解SEO的基本知识&#xff0c;帮助您在复杂的网络环境中立足。我们将从关键词优化开始&#xff0c;重点讲解如何选择合适的关键词来提高搜索引擎排…

【蔬菜识别】Python+深度学习+CNN卷积神经网络算法+TensorFlow+人工智能+模型训练

一、介绍 蔬菜识别系统&#xff0c;本系统使用Python作为主要编程语言&#xff0c;通过收集了8种常见的蔬菜图像数据集&#xff08;‘土豆’, ‘大白菜’, ‘大葱’, ‘莲藕’, ‘菠菜’, ‘西红柿’, ‘韭菜’, ‘黄瓜’&#xff09;&#xff0c;然后基于TensorFlow搭建卷积神…

ESP8266 自定义固件烧录-Tcpsocket固件

一、固件介绍 固件为自定义开发的一个适配物联网项目的开源固件&#xff0c;支持网页配网、支持网页tcpsocket服务器配置、支持串口波特率设置。 方便、快捷、稳定&#xff01; 二、烧录说明 固件及工具打包下载地址&#xff1a; https://download.csdn.net/download/flyai…

探秘机器学习算法:智慧背后的代码逻辑

1、 线性回归 线性回归是预测连续变量的一种简单而有效的方法。其数学模型假设因变量 y 与自变量 x 之间存在线性关系&#xff0c;用公式表示为&#xff1a; ​ Python代码实现 import numpy as np from sklearn.linear_model import LinearRegression import matplotlib.…

【合肥工业大学】操作系统 习题解析 作业答案(仅作学习与交流/侵删)

第一章习题解析 1&#xff0e;设计现代OS的主要目标是什么&#xff1f; 答&#xff1a;&#xff08;1&#xff09;有效性 &#xff08; 2&#xff09;方便性 &#xff08; 3&#xff09;可扩充性 &#xff08; 4&#xff09;开放性 2&#xff0e; OS 的作用可表现在哪几个方…

要在微信小程序中让一个 `view` 元素内部的文字水平垂直居中,可以使用 Flexbox 布局

文章目录 主要特点&#xff1a;基本用法&#xff1a;常用属性&#xff1a; 要在微信小程序中让一个 view 元素内部的文字水平垂直居中&#xff0c;可以使用 Flexbox 布局。以下是如何设置样式的示例&#xff1a; .scan-button {display: flex; /* 启用 Flexbox 布局 */justify…

JSON交互处理

目录 一、什么是JSON 二、JSON和JavaScript对象互转 ​三、Controller返回JSON数据 3.1 使用Jackson 编写Controller 1. 一个对象 2. 多个对象 3. 输出时间对象 4. 优化&#xff1a;抽取为工具类 一、什么是JSON Json是JavaScript对象的字符串表示法&#xff0c;它用…