Prometheus之Alertmanager使用
1. Alermanager介绍
当Alertmanager接收到 Prometheus 端发送过来的 Alerts 时,Alertmanager 会对 Alerts 进行去重复,分组,按标签内容发送不同报警组,包括:邮件,微信,webhook。
2. 安装Alertmanager
1. 下载并解压
tar -zxvf alertmanager-0.21.0.linux-amd64.tar.gz
mv alertmanager-0.21.0.linux-amd64 /usr/local/alertmanager
2. 修改alertmanager配置文件
global: # resolve_timeout:解析超时时间 resolve_timeout: 5m # smtp_smarthost: 使用email打开服务配置 smtp_smarthost: 'smtp.126.com:25' # smtp_from:指定通知报警的邮箱 smtp_from: 'yangjianbo@126.com' # smtp_auth_username:邮箱用户名 smtp_auth_username: 'yangjianbo@126.com' # smtp_auth_password:授权密码 smtp_auth_password: '123' # smtp_require_tls:是否启用tls smtp_require_tls: false # route标记:告警如何发送分配 route: # group_by:采用哪个标签作为分组的依据 group_by: ['alertname'] # group_wait:分组等待的时间 group_wait: 10s # group_interval:上下两组发送告警的间隔时间 group_interval: 10s # repeat_interval:重复发送告警时间。默认1h repeat_interval: 30m # receiver 定义谁来通知报警 receiver: 'mail' # receiver标记:告警接受者 receivers: # name:报警来源自定义名称 - name: 'mail' # email_configs:通过邮箱发送报警 email_configs: # to:指定接收端email - to: 'yangjianbo@126.com' # inhibit_rules标记:降低告警收敛,减少报警,发送关键报警 #inhibit_rules: # - source_match: # severity: 'critical' # target_match: # severity: 'warning' # equal: ['alertname', 'dev', 'instance']
3. 检查alertmanager配置文件
./amtool check-config alertmanager.yml
4. 启动alertmanager
./alertmanager --config.file=alertmanager.yml
5. 添加系统服务
vi /usr/lib/systemd/system/alertmanager.service
[Unit] Description=https://prometheus.io [Service] Restart=on-failure ExecStart=/usr/local/alertmanager/alertmanager --config.file=/usr/local/alertmanager/alertmanager.yml [Install] WantedBy=multi-user.target
systemctl daemon-reload
systemctl restart alertmanager.service
3. prometheus与Alertmanager集成
1. 编辑prometheus配置文件连接地址
alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 - 172.16.1.198:9093
2. 设置告警规则配置文件
rule_files: - "rules/*.yml"
3. 创建告警规则目录
mkdir rules
4. 检查并重新加载配置文件
./promtool check config prometheus.yml
kill -hup PID
4. 创建告警规则
1. 创建规则并写入rules/test.yml
# groups:组告警 groups: # name:组名。报警规则组名称 - name: general.rules # rules:定义角色 rules: # alert:告警名称。 任何实例5分钟内无法访问发出告警 - alert: InstanceDown # expr:表达式。 up = 0 相当于指标挂掉了 expr: up == 0 # for:持续时间。 表示持续一分钟获取不到信息,则触发报警。0表示不使> for: 1m # labels:定义当前告警规则级别 labels: # severity: 指定告警级别。 severity: error # annotations: 注释 告警通知 annotations: # 调用标签具体指附加通知信息 summary: "Instance {{ $labels.instance }} 停止工作" # 自定义摘要 description: "{{ $labels.instance }} job {{ $labels.job }}
2. 检查配置并重启服务
./promtool check config prometheus.yml systemctl restart prometheus.service
3. 监控端查看规则