接上篇基于Alertmanager 配置钉钉告警

Alertmanager 是一个用于处理和管理 Prometheus 警报的开源工具。它负责接收来自 Prometheus 服务器的警报,进行去重、分组、静默、抑制等操作,并通过电子邮件、PagerDuty、Slack 等多种渠道发送通知。

主要功能

  1. 去重:合并相同或相似的警报,避免重复通知。

  2. 分组:将相关警报合并为一个通知,减少信息过载。

  3. 静默:临时屏蔽特定警报,避免干扰。

  4. 抑制:在特定条件下阻止某些警报的发送。

  5. 路由:根据标签将警报分发到不同的接收者或渠道。

  6. 通知:支持通过多种方式发送警报通知。

核心概念

  • Alert:由 Prometheus 生成的警报,包含标签、注解和状态。

  • Receiver:警报的接收者,如电子邮件或 Slack 频道。

  • Route:定义警报如何路由到接收者。

  • Silence:临时屏蔽特定警报的机制。

下载安装包:
地址:https://prometheus.io/download/#alertmanager

将安装包alertmanager-0.24.0.linux-amd64.tar.gz上传服务器

tar zxf alertmanager-0.24.0.linux-amd64.tar.gz -C /usr/local/
mv /usr/local/alertmanager-0.24.0.linux-amd64/ /usr/local/alertmanager

接下来再安装一个插件prometheus-webhook-dingtalk 

由于 Alertmanager 没有内置钉钉的支持,因此需要通过 Webhook 的方式将告警信息发送到钉钉。prometheus-webhook-dingtalk 就是这样一个工具,它充当了 Alertmanager 和钉钉之间的桥梁:

  1. Alertmanager 将告警信息通过 Webhook 发送到 prometheus-webhook-dingtalk

  2. prometheus-webhook-dingtalk 将告警信息格式化为钉钉支持的格式(如 Markdown),并通过钉钉的 Webhook API 推送到指定的群聊。

下载安装包:
地址:https://github.com/timonwong/prometheus-webhook-dingtalk/releases/

上传到服务器进行解压安装

tar zxvf prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz -C /usr/local/
mv /usr/local/prometheus-webhook-dingtalk-2.1.0.linux-amd64/ /usr/local/prometheus-webhook-dingtalk

创建钉钉机器人:

【电脑端钉钉 】-【群聊】-【群设置】-【智能群助手】-【添加更多】-【添加机器人】-【自定义】-【添加】,编辑机器人名称和选择添加的群组,勾选加签,将生成的秘钥复制出来。

修改prometheus-webhook-dingtalk配置,将以上信息填到文件中:

新建/usr/local/prometheus-webhook-dingtalk/config.yml,添加以下配置

targets:ding_webhook:# 钉钉webhook地址,根据自己的来填url: https://oapXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX# 创建机器人时获取到的加签秘钥,根据自己的来填secret: SECXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

启动prometheus-webhook-dingtalk服务

nohup /usr/local/prometheus-webhook-dingtalk/prometheus-webhook-dingtalk --config.file=/usr/local/prome                                                        theus-webhook-dingtalk/config.yml &

查看插件提供的webhook地址:这个记好待会有用

编辑alertmanager.yml配置文件,添加路由和接受者配置,注意url填写钉钉插件提供的webhook地址,就是上图圈起来那个,根据自己的情况来,而不是钉钉直接提供的那个webhook。

vim /usr/local/alertmanager/alertmanager.yml
route:#接收人receiver: 'webhook'#同组内告警等待时间。也就是告警产生后等待5s,如果有同组告警一起发出group_wait: 5s#两个组告警的间隔时间group_interval: 10s#重复告警的间隔时间,减少相同钉钉告警的发送频率repeat_interval: 30s#采用哪个标签来作为分组依据group_by: [alertname]routes:- receiver: webhook#配置告警消息接受者信息,常用的有 邮箱、wechat、webhook 等消息通知方式
receivers:
- name: 'webhook'webhook_configs:#钉钉插件提供的webhook地址- url: http://localhost:8060/dingtalk/ding_webhook/send#警报被解决之后是否通知send_resolved: true

接下来编辑prometheus配置文件:

增加和修改prometheus.yml的alertmanager部分,让alertmanger能与Prometheus通信。

# my global config
global:scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.# scrape_timeout is set to the global default (10s).# Alertmanager configuration
alerting:alertmanagers:- static_configs:- targets:##修改成alertmanager服务器的ip和端口- 192.168.158.183:9093# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
# 指定告警规则的配置路径
rule_files:- "/usr/local/prometheus/rules/*.yml"# - "first_rules.yml"# - "second_rules.yml"# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.- job_name: "prometheus"# metrics_path defaults to '/metrics'# scheme defaults to 'http'.static_configs:- targets: ["192.168.158.183:9090"]- job_name: 'linux'file_sd_configs:- files:- /usr/local/prometheus/node_exporter_targets.json#接收alertmanager的数据- job_name: 'alertmanager'static_configs:- targets: ['192.168.158.183:9093']

在/usr/local/prometheus/路径建立rules文件夹

在rules文件夹中创建node_rules.yml用来配置主机节点的告警

[root@prometheus prometheus]# cat  rules/node_rules.yml
groups:- name: node_alertsrules:# 规则 1: CPU 使用率过高- alert: HighCPUUsageexpr: 100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80for: 5mlabels:severity: criticalannotations:summary: "High CPU usage on {{ $labels.instance }}"description: "CPU usage is above 80% for more than 5 minutes on {{ $labels.instance }}."# 规则 2: 内存使用率过高- alert: HighMemoryUsageexpr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 > 80for: 5mlabels:severity: criticalannotations:summary: "High memory usage on {{ $labels.instance }}"description: "Memory usage is above 80% for more than 5 minutes on {{ $labels.instance }}."# 规则 3: 磁盘使用率过高- alert: HighDiskUsageexpr: 100 - (node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"} * 100) > 80for: 5mlabels:severity: warningannotations:summary: "High disk usage on {{ $labels.instance }}"description: "Disk usage is above 80% for more than 5 minutes on {{ $labels.instance }}."# 规则 4: 节点宕机- alert: InstanceDownexpr: up == 0for: 1mlabels:severity: criticalannotations:summary: "Instance {{ $labels.instance }} down"description: "{{ $labels.instance }} has been down for more than 1 minute."

在/usr/local/prometheus/node_exporter_targets.json文件中添加测试节点

重启prometheus

ps -ef |grep prometheus |grep -v grep |awk '{print $2}' |xargs kill -9
nohup /usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml &

启动Alertmanager

nohup /usr/local/alertmanager/alertmanager --config.file /usr/local/alertmanager/alertmanager.yml &

启动钉钉插件prometheus-webhook-dingtalk

nohup /usr/local/prometheus-webhook-dingtalk/prometheus-webhook-dingtalk --config.file=/usr/local/prometheus-webhook-dingtalk/config.yml &

查看grafana、alertmanager、prometheus端口都已经启动

接下来关闭刚才添加的测试机器

等了一会查看钉钉出现了告警

接下来优化告警消息:

1、使用中文发送告警信息

修改prometheus-webhook-dingtalk/config.yml文件添加以下字段

targets:ding_webhook:url: https://oapXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXsecret: SEC6c2bf6d8XXXXXXXXXXXXXXXXXXXXXXXmessage:title: 'Prometheus - {{ if eq .Status "resolved" }}恢复通知{{ else }}告警通知{{ end }}'text: |- **告警名称**: {{ .CommonLabels.alertname }}- **当前状态**: {{ .Status }}{{ if eq .Status "resolved" }}- **描述**: 实例 {{ .CommonLabels.instance }} 已恢复正常。- **可能影响的服务**: 没有影响的服务{{ else }}- **描述**: {{ .CommonAnnotations.description }}- **可能影响的服务**: {{ .CommonAnnotations.impact }}{{ end }}

2、告知故障的影响范围

修改/usr/local/prometheus/rules/node_rules.yml配置文件,添加以下信息

.............# 规则 4: 节点宕机- alert: InstanceDownexpr: up == 0for: 1mlabels:severity: criticalannotations:summary: "实例 {{ $labels.instance }} 已宕机"description: "实例 {{ $labels.instance }} 已宕机。"impact: |{{- if eq $labels.instance "192.168.158.182:9900" }}K8S中pod调度,导致服务无法正常使用。{{- else if eq $labels.instance "192.168.158.183:9900" }}无法访问监控系统。{{- else }}可能影响的服务:未知。{{- end }}

重启/prometheus-webhook-dingtalk服务:

ps -ef |grep prometheus-we |grep -v grep |awk -F " " '{print $2}' |xargs kill -9#为了区分nohup的启动日志,建议进入各自的目录执行
cd /usr/local/prometheus-webhook-dingtalk/
nohup /usr/local/prometheus-webhook-dingtalk/prometheus-webhook-dingtalk --config.file=/usr/local/prometheus-webhook-dingtalk/config.yml &

重启prometheus服务:

ps -ef |grep prometheus |grep -v grep |awk '{print $2}' |xargs kill -9cd /usr/local/prometheusnohup /usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml &

查看端口都已经启动

查看钉钉最新消息已经修改为中文提示和告知影响范围

启动故障机器再次查看消息

后续继续更新监控其他服务

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

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

相关文章

网络原理(三)—— 传输层 之 UDP 和 TCP协议

传输层 在传输层两大关键的协议就是UDP和TCP协议了&#xff0c;除此之外&#xff0c;还有别的传输层协议&#xff0c;本文章将介绍UDP和TCP协议&#xff0c;重点介绍TCP协议。 首先回顾TCP和UDP 的特点&#xff1a; UDP&#xff1a;不可靠传输&#xff0c;面向数据包&#xf…

针对服务器磁盘爆满,MySql数据库始终无法启动,怎么解决

&#xff08;点击即可进入聊天助手&#xff09; 很多站长在运营网站的过程当中都会遇到一个问题,就是网站突然无法打开,数据一直无法启动 无论是强制重启还是,删除网站内的所有应用,数据库一直无法启动 这个时候,就需要常见的运维手段了,需要对服务器后台各个资源,进行逐一排查…

高性能现代PHP全栈框架 Spiral

概述 Spiral Framework 诞生于现实世界的软件开发项目是一个现代 PHP 框架&#xff0c;旨在为更快、更清洁、更卓越的软件开发提供动力。 特性 高性能 由于其设计以及复杂精密的应用服务器&#xff0c;Spiral Framework框架在不影响代码质量以及与常用库的兼容性的情况下&a…

【STM32-学习笔记-6-】DMA

文章目录 DMAⅠ、DMA框图Ⅱ、DMA基本结构Ⅲ、不同外设的DMA请求Ⅳ、DMA函数Ⅴ、DMA_InitTypeDef结构体参数①、DMA_PeripheralBaseAddr②、DMA_PeripheralDataSize③、DMA_PeripheralInc④、DMA_MemoryBaseAddr⑤、DMA_MemoryDataSize⑥、DMA_MemoryInc⑦、DMA_DIR⑧、DMA_Buff…

SQL Server中可以通过扩展事件来自动抓取阻塞

在SQL Server中可以通过扩展事件来自动抓取阻塞&#xff0c;以下是详细流程&#xff1a; 开启阻塞跟踪配置&#xff1a; • 执行以下SQL语句来启用相关配置&#xff1a; EXEC sp_configureshow advanced options, 1; RECONFIGURE; EXEC sp_configure blocked process thresh…

【爬虫】单个网站链接爬取文献数据:标题、摘要、作者等信息

源码链接&#xff1a; https://github.com/Niceeggplant/Single—Site-Crawler.git 一、项目概述 从指定网页中提取文章关键信息的工具。通过输入文章的 URL&#xff0c;程序将自动抓取网页内容 二、技术选型与原理 requests 库&#xff1a;这是 Python 中用于发送 HTTP 请求…

关于扫描模型 拓扑 和 传递贴图工作流笔记

关于MAYA拓扑和传递贴图的操作笔记 一、拓扑低模: 1、拓扑工作区位置: 1、准备出 目标 高模。 (高模的状态如上 ↑ )。 2、打开顶点吸附,和建模工具区,选择四边形绘制. 2、拓扑快捷键使…

解决无法远程管理Windows Server服务器核心安装

问题 有时&#xff0c;人们会为了节省运算资源&#xff0c;例如运行Hyper-V虚拟机&#xff0c;而选择Windows Server核心安装&#xff0c;即无图形化界面。这时&#xff0c;我们就只能通过Powershell命令对其进行操控&#xff0c;或为了获得图形化界面而使用远程服务器管理工具…

【计算机网络】lab7 TCP协议

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;计算机网络_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 实验目的…

JavaRestClient 客户端初始化+索引库操作

1. 介绍 ES官方提供了各种不同语言的客户端&#xff0c;用来操作ES。这些客户端的本质就是组装DSL语句&#xff0c;通过http请求发送给ES。 Elasticsearch目前最新版本是8.0&#xff0c;其java客户端有很大变化。不过大多数企业使用的还是8以下版本 2. 客户端初始化 在elastic…

【JVM-2.2】使用JConsole监控和管理Java应用程序:从入门到精通

在Java应用程序的开发和运维过程中&#xff0c;监控和管理应用程序的性能和资源使用情况是非常重要的。JConsole是Java Development Kit&#xff08;JDK&#xff09;自带的一款图形化监控工具&#xff0c;它可以帮助开发者实时监控Java应用程序的内存、线程、类加载以及垃圾回收…

基于html5实现音乐录音播放动画源码

源码介绍 基于html5实现音乐录音播放动画源码是一款类似Shazam的UI&#xff0c;点击按钮后&#xff0c;会变成为一个监听按钮。旁边会有音符飞入这个监听按钮&#xff0c;最后转换成一个音乐播放器。 效果预览 源码获取 基于html5实现音乐录音播放动画源码

《自动驾驶与机器人中的SLAM技术》ch1:自动驾驶

目录 1.1 自动驾驶技术 1.2 自动驾驶中的定位与地图 1.1 自动驾驶技术 1.2 自动驾驶中的定位与地图 L2 在技术实现上会更倾向于实时感知&#xff0c;乃至可以使用感知结果直接构建鸟瞰图&#xff08;bird eye view, BEV&#xff09;&#xff0c;而 L4 则依赖离线地图。 高精地…

【LeetCode】:删除回文子数组【困难】

class Solution { public:// 思考:能否用滚动数组进行优化int minimumMoves(vector<int>& arr) {// 定义状态dp[i][j]为i-j的最小步数int n arr.size();vector<vector<int>> dp(n, vector<int>(n, 1e9 7));// 可以把这 1 次理解为一种 最小操作单…

ChatGPT入门之文本情绪识别:先了解LSTM如何处理文字序列

文章目录 0. 首先聊聊什么是RNN1. 理解LSTM&#xff0c;从数据如何喂给 LSTM开始2. LSTM每个门是如何处理序列数据的&#xff1f;2.1 遗忘门&#xff08;Forget Gate&#xff09;&#xff1a;该忘掉哪些信息&#xff1f;2.2 输入门&#xff08;Input Gate&#xff09;&#xff…

AI学习路线图-邱锡鹏-神经网络与深度学习

1 需求 神经网络与深度学习 2 接口 3 示例 4 参考资料

C#用直线和曲线抗锯齿

使用 GDI 绘制一条线时&#xff0c;要提供线条的起点和终点&#xff0c;但不必提供有关线条上各个像素的任何信息。 GDI 与显示驱动程序软件协同工作&#xff0c;确定将打开哪些像素以在特定显示设备上显示该线条。 效果对比 代码实现 关键代码 e.Graphics.SmoothingMode Sm…

【opencv】第8章 图像轮廓与图像分割修复

8.1 查找并绘制轮廓 一个轮廓一般对应一系列的点&#xff0c;也就是图像中的一条曲线。其表示方法可能 根据不同的情况而有所不同。在OpenCV 中&#xff0c;可以用findContours()函数从二值图 像中查找轮廓 8.1.1 寻找轮廓&#xff1a; findContours() 函数 findContours) 函…

Unity 大地图功能 离线瓦片地图

不使用第二个摄像机实现类似开放世界的大地图功能。 功能如下&#xff1a; 按下M键打开/关闭大地图功能 打开大地图时&#xff0c;默认玩家位置居中 大地图支持拖拽&#xff0c;可调节拖拽速度&#xff0c;支持XY轴翻转 支持大地图设置边缘偏移量 可设置是否启动拖拽边界 …

Bootstrap 前端 UI 框架

Bootstrap官网&#xff1a;Bootstrap中文网 铂特优选 Bootstrap 下载 点击进入中文文档 点击下载 生产文件是开发响应式网页应用&#xff0c;源码是底层逻辑代码&#xff0c;因为是要制作响应式网页&#xff0c;所以下载开发文件 引入 css 文件&#xff0c; bootstrap.css 和 …