[云原生] Prometheus之部署 Alertmanager 发送告警

一、Alertmanager 发送告警的介绍

Prometheus 对指标的收集、存储与告警能力分属于 Prometheus Server 和 AlertManager 两个独立的组件,前者仅负责定义告警规则生成告警通知, 具体的告警操作则由后者完成。

Alertmanager 负责处理由 Prometheus Server 发来的告警通知,Alertmanager对告警通知进行分组、去重后,根据路由规则将其路由到不同的receiver,如
Email、钉钉或企业微信等。

除了基本的告警通知能力外,Altermanager还支持对告警进行去重、分组、抑制、静默和路由等功能:
●分组(Grouping):将相似告警合并为单个告警通知的机制,在系统因大面积故障而触发告警潮时,分组机制能避免用户被大量的告警噪声淹没,进而导致关键信息的隐没

●抑制(Inhibition):系统中某个组件或服务故障而触发告警通知后,那些依赖于该组件或服务的其它组件或服务可能也会因此而触发告警,抑制便是避免类似的级联告警的一种特性,从而让用户能将精力集中于真正的故障所在

●静默(Silent):是指在一个特定的时间窗口内,即便接收到告警通知,Alertmanager也不会真正向用户发送告警信息的行为;通常,在系统例行维护期间,需要激活告警系统的静默特性

●路由(route):用于配置Alertmanager如何处理传入的特定类型的告警通知,其基本逻辑是根据路由匹配规则的匹配结果来确定处理当前告警通知的路径和行为

二、Alertmanager邮箱报警设置

(1)上传 alertmanager-0.24.0.linux-amd64.tar.gz 到 /opt 目录中,并解压 
cd /opt/
tar xf alertmanager-0.24.0.linux-amd64.tar.gz
mv alertmanager-0.24.0.linux-amd64 /usr/local/alertmanager
(2)修改 alertmanager 配置文件,添加邮件告警路由信息
vim /usr/local/alertmanager/alertmanager.yml
#global 配置段用于定义全局配置
#templates 配置段负责自定义告警内容模板文件
#route 配置段用于指定如何处理传入的告警
#receiver 配置段则定义了告警信息的接收器,每个接收器都应该有其具体的定义global:                       #在全局配置段设置发件人邮箱信息resolve_timeout: 5m             #定义持续多长时间未接收到告警通知后,就将告警状态标记为resolvedsmtp_smarthost: 'smtp.qq.com:25'smtp_from: '这里使用的是个人邮箱'smtp_auth_username: '这里使用的是个人邮箱'smtp_auth_password: 'xxxxxx'    #此处为授权码,登录QQ邮箱【设置】->【账户】中的【生成授权码】获取smtp_require_tls: false         #禁用TLS的传输方式
route:                        #设置告警的分发策略group_by: ['alertname']         #采用哪个标签来作为分组依据,这里使用告警名称做为规则,满足规则的告警将会被合并到一个通知中group_wait: 20s                 #一组告警第一次发送之前等待的时延,即产生告警20s将组内新产生的消息合并发送,通常是0s~几分钟(默认是30s)group_interval: 5m              #一组已发送过初始告警通知的告警,接收到新告警后,下次发送通知前等待时延,通常是5m或更久(默认是5m)repeat_interval: 20m            #一组已经发送过通知的告警,重复发送告警的间隔,通常设置为3h或者更久(默认是4h)receiver: 'my-email'    #定义告警接收人
receivers:                    #设置收件人邮箱信息
- name: 'my-email'email_configs:- to: '收件人的邮箱'    #设置收件人邮箱地址send_resolved: true

(3)配置启动文件 
cat > /usr/lib/systemd/system/alertmanager.service <<'EOF'
[Unit]
Description=alertmanager
Documentation=https://prometheus.io/
After=network.target[Service]
Type=simple
ExecStart=/usr/local/alertmanager/alertmanager \
--config.file=/usr/local/alertmanager/alertmanager.yml \
--log.level=debugExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure[Install]
WantedBy=multi-user.target
EOF#启动 Alertmanager
systemctl start alertmanager
systemctl enable alertmanagernetstat -natp | grep :9093

(4)添加告警规则  
mkdir /usr/local/prometheus/alter_rulesvim /usr/local/prometheus/alter_rules/instance_down.yaml
groups:
#若某个 Instance 的 up 指标的值转为 0 持续超过 1 分钟后,将触发告警
- name: AllInstancesrules:- alert: InstanceDown                  #告警规则的名称,一个组内的告警规则名称必须惟一# Condition for alertingexpr: up == 0                        #基于PromQL表达式的告警触发条件(布尔表达式)for: 1m                              #控制在触发告警之前,测试表达式的值必须为true的时长#表达式值为true,但其持续时间未能满足for定义的时长时,相关的告警状态为pending#满足该时长之后,相关的告警将被触发,并转为firing状态#表达式的值为false时,告警将处于inactive状态# Annotation - additional informational labels to store more informationannotations:                         #附加在告警之上的注解信息title: 'Instance down'description: Instance has been down for more than 1 minute.'# Labels - additional labels to be attached to the alertlabels:severity: 'critical'               #在告警上附加的自定义的标签
#CPU 使用率大于 80% 触发告警
- name: node_alertrules:- alert: cpu_alertexpr: 100 -avg(irate(node_cpu_seconds_total{mode="idle"}[1m])) by (instance)* 100 > 80for: 5mlabels:level: warningannotations:description: "instance: {{ $labels.instance }} ,cpu usage is too high ! value: {{$value}}"summary:  "cpu usage is too high"

(5)修改 prometheus 配置文件,添加 Alertmanager 实例的配置 
vim /usr/local/prometheus/prometheus.yml
......
alerting:alertmanagers:- static_configs:- targets:- 192.168.80.30:9093 #任意一台k8s主机IP及exporter服务监听端口rule_files:- "/usr/local/prometheus/alter_rules/*.yaml"systemctl reload prometheus

 (6)进行报警测试
systemctl stop node_exporter.service 

(7)恢复监控节点的exporter服务 
systemctl start node_exporter.service

三、Alertmanager钉钉报警设置 

(1)上传 prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz 到 /opt 目录中,并解压
cd /opt/
tar xf prometheus-webhook-dingtalk-2.1.0.linux-amd64.tar.gz
mv prometheus-webhook-dingtalk-2.1.0.linux-amd64 /usr/local/dingtalk
(2)登录阿里钉钉,并且进行设置 
创建群 -> 群设置 -> 智能群助手 -> 添加机器人 -> 添加机器人 -> 自定义
消息推送    开启
Webhook     复制
安全设置 -> 勾选 加签 -> 复制
点击完成
(3)修改 dingtalk 告警插件配置文件 
cd /usr/local/dingtalk
cp -p config.example.yml config.ymlvim config.yml
timeout: 5s## Uncomment following line in order to write template from scratch (be careful!)
#no_builtin_template: true## Customizable templates path
templates:- contrib/templates/legacy/template.tmpl## You can also override default template using `default_message`
## The following example to use the 'legacy' template from v0.3.0
default_message:title: '{{ template "legacy.title" . }}'text: '{{ template "legacy.content" . }}'## Targets, previously was known as "profiles"
targets:webhook1:url: <粘贴Webhook的内容># secret for signaturesecret: <粘贴加签的内容>#启动服务 
./prometheus-webhook-dingtalk
(4)修改 alertmanager 配置文件 
vim /usr/local/alertmanager/alertmanager.yml
global:resolve_timeout: 5mroute:group_by: [alertname]group_wait: 10sgroup_interval: 15srepeat_interval: 20mreceiver: 'dingding.webhook1'receivers:
- name: 'dingding.webhook1'webhook_configs:- url: 'http://192.168.73.108:8060/dingtalk/webhook1/send'send_resolved: truesystemctl reload alertmanager
(5)测试告警 
systemctl stop node_exporter

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

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

相关文章

807补充(十一)(鞍论与随机逼近理论篇)

807补充&#xff08;十一&#xff09;&#xff08;鞍论与随机逼近理论篇&#xff09; 一.高等概率论初步 Theorem: σ − \sigma- σ− 代数,如果样本空间 Ω \Omega Ω 的一系列子集的集合 F \mathcal{F} F 满足: (1) ∅ ∈ F \emptyset \in \mathcal{F} ∅∈F (2) 若 A …

AVCE - AV Evasion Craft Online 更新 8 种加载方式 - 过 WD 等

免责声明&#xff1a;本工具仅供安全研究和教学目的使用&#xff0c;用户须自行承担因使用该工具而引起的一切法律及相关责任。作者概不对任何法律责任承担责任&#xff0c;且保留随时中止、修改或终止本工具的权利。使用者应当遵循当地法律法规&#xff0c;并理解并同意本声明…

LeetCode 热题 100 | 回溯(二)

目录 1 39. 组合总和 2 22. 括号生成 3 79. 单词搜索 菜鸟做题&#xff0c;语言是 C&#xff0c;感冒快好版 关于对回溯算法的理解请参照我的上一篇博客&#xff1b; 在之后的博客中&#xff0c;我将只分析回溯算法中的 for 循环。 1 39. 组合总和 题眼&#xff1a;c…

网站被挂马劫持的解决办法

首先&#xff0c;应该检查网站的DNS记录&#xff0c;以确定是否有人修改了DNS记录。如果发现有人修改了DNS记录&#xff0c;应该立即更改DNS记录&#xff0c;以恢复网站的正常访问。此外&#xff0c;应该检查网站的源代码&#xff0c;以确定是否有人植入了恶意代码。如果发现有…

【Web】浅聊Java反序列化之玩转Hessian反序列化的前置知识

目录 序列化 反序列化 Hessian1.0 Hessian2.0 Hessian反序列化核心&#xff1a;MapDeserializer#readMap的利用 总结 序列化 HessianOutput&Hessian2Output都是抽象类AbstractHessianOutput的实现类 HessianOutput#writeObject和Hessian2Output#writeObject的写法是…

Rocketmq专题-01 v5版单机部署篇

Rocketmq专题 注&#xff1a; 本教程由羞涩梦整理同步发布&#xff0c;本人技术分享站点&#xff1a;blog.hukanfa.com 转发本文请备注原文链接&#xff0c;本文内容整理日期&#xff1a;2024-01-28 csdn 博客名称&#xff1a;五维空间-影子&#xff0c;欢迎关注 说明 地址…

通过spring boot/redis/aspect 防止表单重复提交【防抖】

一、啥是防抖 所谓防抖&#xff0c;一是防用户手抖&#xff0c;二是防网络抖动。在Web系统中&#xff0c;表单提交是一个非常常见的功能&#xff0c;如果不加控制&#xff0c;容易因为用户的误操作或网络延迟导致同一请求被发送多次&#xff0c;进而生成重复的数据记录。要针…

分布式思想

1、单体架构设计存在的问题 传统项目采用单体架构设计,虽然可以在一定的程度上解决企业问题,但是如果功能模块众多,并且将来需要二次开发.由于模块都是部署到同一台tomcat服务器中,如果其中某个模块代码出现了问题,将直接影响整个tomcat服务器运行. 这样的设计耦合性太高.不便…

1335:【例2-4】连通块

【算法分析】 设数组vis&#xff0c;vis[i][j]表示(i,j)位置已经访问过。遍历地图中的每个位置&#xff0c;尝试从每个位置开始进行搜索。如果该位置不是0且没有访问过&#xff0c;那么访问该位置&#xff0c;并尝试从其上下左右四个位置开始搜索。在看一个新的位置时&#xff…

C++ //练习 10.34 使用reverse_iterator逆序打印一个vector。

C Primer&#xff08;第5版&#xff09; 练习 10.34 练习 10.34 使用reverse_iterator逆序打印一个vector。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块 /**************************************************************…

湖北省建筑安全员C证考试通过后,如何在各平台快速查询

湖北省建筑安全员C证考试通过后&#xff0c;如何在各平台快速查询&#xff1f; 2024年湖北省建筑安全员C证&#xff08;建安C&#xff09;证书查询 蛮多人考过建筑安全员C证不知道在哪里查询&#xff0c;建筑行业的安全员C证也称之为专职安全员&#xff0c;建筑安全员ABC /三…

TCP的三次握手和4次挥手

一、首先讲一下TCP的由来 最开始&#xff0c;人们考虑到将网络信息的呼唤与回应进行规范&#xff0c;达成一种公认的协议&#xff0c;就好像没有交通规则的路口设定交通规则。 人们设计出完美的OSI协议&#xff0c;这个协议包含七个层次由下到上分别是&#xff1a; 物理层&…