Alertmanager告警管理是Prometheus一个组件,用于告警信息的处理与转发。
Alertmanager接收Prometheus等客户端发来的警报,之后通过分组,删除重复等处理,并将它们通过路由发送给正确的接收器。告警方式可以按照不同的规则发送给不同的模块负责人,Alertmanager支持Wechat, Email, Webhook等告警方式, 其中Webhook可以接入钉钉等聊天工具。

下载二进制文件
wget https://github.com/prometheus/alertmanager/releases/download/v0.24.0/alertmanager-0.24.0.linux-amd64.tar.gz
tar zxvf alertmanager-0.24.0.linux-amd64.tar.gz
mv alertmanager-0.24.0.linux-amd64 /apps/alertmanager
创建alertermanager服务
vim /etc/systemd/system/alertmanager.service
[Unit]
Description=Prometheus alertmanager
After=network.target
[Service]
# 注意该行不能有单双引号
ExecStart=/apps/alertmanager/alertmanager --config.file=/apps/alertmanager/alertmanager.yml
[Install]
WantedBy=multi-user.target
Tips: 服务启动与二进制启动写法有所不同
二进制启动,3种写法都可以:
/apps/alertmanager/alertmanager --config.file="/apps/alertmanager/alertmanager.yml"
/apps/alertmanager/alertmanager --config.file='/apps/alertmanager/alertmanager.yml'
/apps/alertmanager/alertmanager --config.file=/apps/alertmanager/alertmanager.yml
服务启动,不能有单双引号:
# ExecStart=/apps/alertmanager/alertmanager --config.file="/apps/alertmanager/alertmanager.yml"
# ExecStart=/apps/alertmanager/alertmanager --config.file='/apps/alertmanager/alertmanager.yml'
# ExecStart="/apps/alertmanager/alertmanager --config.file='/apps/alertmanager/alertmanager.yml'"
ExecStart=/apps/alertmanager/alertmanager --config.file=/apps/alertmanager/alertmanager.yml
启动服务,查看端口:
systemctl daemon-reload
systemctl enable --now alertmanager
systemctl status alertmanager
netstat -lntp
tcp6 0 0 :::9093 :::* LISTEN 2225/alertmanager
tcp6 0 0 :::9094 :::* LISTEN 2225/alertmanager
访问 192.168.100.197:9093 为alertmanager管理页面:

官方配置文件说明
https://prometheus.io/docs/alerting/latest/configuration/
配置文件详解,以邮箱告警为例:
vim /apps/alertmanager/alertmanager.yml
# 邮件发送者
global:
smtp_smarthost: 'smtp.qq.com:465'
smtp_from: '123456789@qq.com'
smtp_auth_username: '123456789@qq.com'
smtp_auth_password: 'myqqpassword'
smtp_require_tls: false
# 规则配置
route:
group_by: ['alertname']
group_wait: 10s
group_interval: 2m
repeat_interval: 5m
receiver: 'email'
# 通知接收者
receivers:
- name: 'email'
email_configs:
- to: 'someone@email.com'
send_resolved: true
- name: 'web.hook'
webhook_configs:
- url: 'http://127.0.0.1:5001/'
# 抑制设置
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'dev', 'instance']
| 项目 | Value |
|---|---|
| global | 全局设置,这里为邮件发送者的配置 |
| smtp_* | 邮箱smtp设置,先在qq开通,再输入账号密码等 |
| group_by | 通过 alertname 的值对告警进行分类 |
| group_wait | 第一次产生告警,等待 10s,组内有告警就一起发出,没有其它告警就单独发出 |
| group_interval | 第二次产生告警,先等待 2 分钟,2 分钟后还没有恢复就进入 repeat_interval |
| repeat_interval | 在最终发送消息前再等待 5 分钟,5 分钟后还没有恢复就发送第二次告警 |
| receiver | 接收者,在receivers中选择一个 |
| receivers | 定义接收者们,可定义多个 |
| name | 接收者名字,将被receiver选择 |
| email_configs | 邮箱接收者设置 |
| send_resolved | 是否发送告警解决的通知 |
| webhook_configs | webhook接收者设置,如钉钉等 |
| inhibit_rules | 抑制设置,即哪些告警发通知,哪些不发 |
| source_match | 源匹配的告警将被通知 |
| severity | 严重程度为critical,重要的告警将被通知 |
| target_match | 目标匹配的告警不被通知 |
| severity | 严重程度为warning,警告的告警将被通知 |
| equal | 匹配哪些对象的告警 |
新建规则文件,配置分组信息,告警阈值和时间,告警标签和注释等。
指标表达式采用PromQL语