Loading... ## 告警触发流程 > prometheus -> 触发规则(rules) -> 超出持续时间(for) -> alertmanager -> 分组|抑制|静默 -> 媒体类型 ->邮件|钉钉|微信等 > 正常状态为Inactive,当触发告警规则后进入Pending状态,并等待告警规则设置的for值,如果超过设置的for值状态未恢复为Inactive则转至Firing,并推送至alertmanager  ## Alertmanager部署 GitHub:https://github.com/prometheus/alertmanager 首先在GitHub alertmanager Releases上下载对应系统版本的alertmanager,这里以`alertmanager-0.21.0.linux-amd64.tar.gz`为示例进行部署 ```shell # 下载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 & ``` ## Alertmanager配置 ```shell 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配置 ```shell # 在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  最后修改:2020 年 09 月 21 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏
6 条评论
文章写的很好啊,赞(ㆆᴗㆆ),每日打卡~~
又发现一个好站,收藏了~以后会经常光顾的⌇●﹏●⌇
谢谢分享,写的不错
大佬又换回这个主题了。。。
最近高产似母猪
有时间了就写一写