Alertmanager主要用于接收Prometheus发送的告警信息,它支持丰富的告警通知渠道,并且可以对告警信息进行分组、抑制、静默。
在prometheus配置中配置alertmanager地址 alerting: alertmanagers: - static_configs: - targets: # 这边配置alertmanager地址喝端口,alertmanager默认端口是9093 - 127.0.0.1:9093
编写报警规则 rule_files: - "rules/*.yml"
[root@localhost prometheus-2.8.1.linux-amd64]# cat rules/test.yml groups: - name: general rules: - alert: instance down # 可以在prometheus页面查看up,0表示instance已经down,也就是prometheus无法获取被监控端数据 expr: up == 0 # 表示持续时长,也就是 该instance已经 down 了1分钟 ,就发送报警信息给alertmanager for: 1m labels: severity: error annotations: summary: "instance {{ $labels.instance }} down" description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 5 minutes."
使prometheus配置生效
# 查看配置文件是否正确 ./promtool check config prometheus.yml # 发送hup信号 kill -hup 18745
下载配置alertmanager 地址:https://github.com/prometheus/alertmanager
# 解压 tar zxvf alertmanager-0.20.0-rc.0.linux-amd64.tar.gz cd alertmanager-0.20.0-rc.0.linux-amd64
配置报警信息
[root@localhost alertmanager-0.20.0-rc.0.linux-amd64]# cat alertmanager.yml global: resolve_timeout: 5m smtp_smarthost: 'smtp.qq.com:465' smtp_from: 'xxxxxxxxx@qq.com' smtp_auth_username: 'xxxxxxxxx@qq.com' smtp_auth_password: 'xxxxxxxxxxxxx' smtp_require_tls: false route: group_by: ['alertname'] group_wait: 10s group_interval: 10s repeat_interval: 1m receiver: 'email' receivers: - name: 'email' email_configs: - to: 'xxxxxxxx@gmail.com' send_resolved: true inhibit_rules: - source_match: severity: 'critical' target_match: severity: 'warning' equal: ['alertname', 'dev', 'instance']
启动
./alertmanager --config.file=alertmanager.yml
配置文件介绍 (1)global
全局配置,包括报警解决后的超时时间、SMTP相关配置、告警通知API接口等
smtp_smarthost:smtp服务器,以QQ邮箱为例,就是smtp.qq.com
smtp_from:邮件发送方
smtp_auth_username:同上,写一样即可
smtp_auth_password:对应上面邮箱的授权码,需要去qq邮箱那边开通相应的服务
smtp_require_tls:是否启用tls
(2)route
路由,用来设置告警分发策略
group_by:根据标签的key进行分组
group_wait:等待时长,告警发送之前的等待时间
group_interval:当组内已经发送了一个告警,组内若有新增告警需要等待的时间
repeat_interval:告警已经发送,且无新增告警,若重复告警需要间隔多久
receiver:通知对象
(3)receivers
接收告警的对象
(4)inhibit_rules
抑制相关的配置
测试 停掉被监控端上的node_exporter,等待告警
可以看到prometheus的alert上出现了instance down的提示
顺便提一下alert告警状态
Inactive:什么都没发生
Pending:已触发告警阈值,但是还没有满足rules.for字段告警持续时间
Firing:已触发阈值并且满足持续告警时间
邮箱随之也受到了邮件
重新恢复node_exporter也会收到恢复的告警邮件