prometheus -> 触发规则(rules) -> 超出持续时间(for) -> alertmanager -> 分组|抑制|静默 -> 媒体类型 ->邮件|钉钉|微信等 正常状态为Inactive,当触发告警规则后进入Pending状态,并等待告警规则设置的for值,如果超过设置的for值状态未恢复为Inactive则转至Firing,并推送至alertmanager
GitHub:https://github.com/prometheus/alertmanager
首先在GitHub alertmanager Releases上下载对应系统版本的alertmanager,这里以alertmanager-0.21.0.linux-amd64.tar.gz
为示例进行部署
# 下载alertmanager
wget https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz
# 解压
tar -zxvf alertmanager-0.21.0.linux-amd64.tar.gz
# 重命名文件夹方便输入与记忆
mv alertmanager-0.21.0.linux-amd64.tar.gz alertmanager
# 进入安装目录
cd alertmanager
# 以下为启动命令,可暂时不执行
nohup /root/alertmanager/alertmanager --web.listen-address=:9093 --config.file=/root/alertmanager/alertmanager.yml &
vim alertmanager.yml
# 全局配置
global:
# 该项表示告警标记转为恢复标记后保持多久发送恢复通知,默认为5分钟
resolve_timeout: 10s
# smtp服务器,如果465以及25端口报错可以尝试587端口,25端口需要将tls设置为false
smtp_smarthost: 'smtp.zoho.com.cn:587'
# 邮件来自
smtp_from: 'i@test.com'
# 邮箱账户
smtp_auth_username: 'i@test.com'
# 邮箱密码或授权码
smtp_auth_password: 'passwd'
# 启用TLS/SSL
smtp_require_tls: true
# 定义HTML邮件模板
templates:
- 'template/*.tmpl'
# route用来设置报警的分发策略
route:
group_by: ['alertname']
# 组告警等待时间,告警产生后等待10s,如果有同组告警一起发出
group_wait: 10s
# 两组告警的间隔时间
group_interval: 10s
# 重复告警的间隔时间,减少相同邮件的发送频率
repeat_interval: 1h
# 告警推送渠道
receiver: 'email'
# 告警推送方式与渠道,route->receiver 对应 receivers->name
receivers:
- name: 'email'
email_configs:
# 接收人
- to: 'test@qq.com'
# 设定邮箱的内容模板,不设置则使用默认模板
# html: '{{ template "test.html" . }}'
# 接收邮件的标题
headers: { Subject: " 报警邮件"}
# 告警消除是否通知
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']
完成以上配置后可以启动alertmanager
nohup /root/alertmanager/alertmanager --web.listen-address=:9093 --config.file=/root/alertmanager/alertmanager.yml &
# 在prometheus目录下创建rules目录,目录根据需要自定义
mkdir rules
# 编辑prometheus配置文件
vim prometheus.yml
# Alertmanager配置
alerting:
alertmanagers:
- static_configs:
- targets:
- 192.168.80.104:9093
# 加载告警规则文件
rule_files:
- 'rules/*.yml'
cd prometheus/rules
# 创建规则文件node_down.yml
groups:
- name: node_down
rules:
# 告警名称
- alert: 节点离线告警
# 告警的判定条件,参考Prometheus高级查询来设定
expr: probe_success == 0
# for表示告警持续时间,超过这个时间才会发送给alertmanager
for: 10s
# 标签项
labels:
severity: warning
annotations:
# 尽可能把详细告警信息写入summary标签值,因为告警短信/邮件/钉钉发送的内容使用了summary标签中的值
summary: "Instance {{ $labels.instance }} 离线"
# 这是一条告警描述
description: "这是一条告警描述信息"
可使用以下方式对规则文件进行语法检查
./promtool check rules rules/node_down.yml
告警未触发状态
监控指标
Alertmanager此时未收到告警
此时我们手动断开一个监控点,告警产生
告警邮件产生
告警恢复邮件,需要配置 send_resolved: true
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。