一、环境介绍
主机名 |
IP地址 |
系统 |
说明 |
localhost |
192.168.224.11 |
Centos7.6 |
docker方式安装的prometheus |
二、配置邮箱报警
1、获取邮箱授权码并开启smtp服务
https://mail.163.com/
登陆自己的163账号
Pop3/smtp/imap服务,点开启。弹出来扫描二维码点框。手机扫描发送短信。获取授权码
弹出来的框,复制授权码。就是用于第三方登录163邮箱的密码
AEYZEPRHLGGYOAEF
2、修改alertmanager配置
修改alertmanager配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| #二进制安装修改/usr/local/alertmanager/alertmanager.yml
#docker安装修改 cd /data/docker-prometheus
vim alertmanager/alertmanager.yml #填入如下内容: global: #163服务器 smtp_smarthost: 'smtp.163.com:465' #发邮件的邮箱 smtp_from: 'yichenxiuops@163.com' #发邮件的邮箱用户名,也就是你的邮箱 smtp_auth_username: 'yichenxiuops@163.com' #发邮件的邮箱密码 smtp_auth_password: 'your-password' #tls验证配置,false为关闭 smtp_require_tls: false
route: group_by: ['alertname'] # 当收到告警的时候,等待group_wait配置的时间10s,看是否还有告警,如果有就一起发出去 group_wait: 10s # 如果上次告警信息发送成功,此时又来了一个新的告警数据,则需要等待group_interval配置的时间才可以发送出去 group_interval: 10s # 如果上次告警信息发送成功,且问题没有解决,则等待 repeat_interval配置的时间再次发送告警数据 repeat_interval: 4h # 全局报警组,这个参数是必选的,和下面报警组名要相同 receiver: 'email'
receivers: - name: 'email' #收邮件的邮箱 email_configs: - to: 'yichenxiuops@163.com' send_resolved: true inhibit_rules: - source_match: severity: 'critical' target_match: severity: 'warning' equal: ['alertname', 'dev', 'instance']
|
检查
1
| cat alertmanager/alertmanager.yml
|
重启alertmanager或者重新加载配置
1 2
| #重载 curl -X POST http://localhost:9093/-/reload
|
检查
1
| http://192.168.224.11:9093/#/status
|
3、配置触发器
查看现有触发器
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| cat prometheus/alert.yml #增加如下内容 groups: - name: Prometheus alert rules: # 对任何实例超过30秒无法联系的情况发出警报 - alert: 服务告警 expr: up == 0 for: 30s labels: severity: critical annotations: instance: "{{ $labels.instance }}" description: "{{ $labels.job }} 服务已关闭"
|
访问告警模块的web页面
1
| http://192.168.224.11:9090/alerts
|
- INACTIVE:活跃中,即表示正常无告警产生。
- PENDING:待触发,表示已经达到预设的阈值,但没达到预设的时间。
- FIRING:表示达到预设的阈值并超过预设的时间触发告警
三、测试告警是否正常
1、停止node-exporter
1 2 3 4 5
| #docker环境 docker stop node-exporter
#二进制安装环境 systemctl stop node_exporter
|
2、prometheus查看
浏览器打开prometheus web管理页面–点击Alerts,
3、检查alertmanager的alerts
1
| http://192.168.224.11:9093/#/alerts
|
4、检查邮箱
登陆163邮箱查看邮件
5、如果没收到邮件消息,排查
1
| docker logs -f alertmanager
|
四、使用模版(非必需)
1、创建模版文件
1 2 3 4
| cd /data/docker-prometheus #创建存放模版的目录 mkdir alertmanager/template
|
通过cat创建
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| cat > alertmanager/template/email.tmpl <<"EOF" {{ define "email.html" }} {{- if gt (len .Alerts.Firing) 0 -}}{{ range .Alerts }} <h2>@告警通知</h2> 告警程序: prometheus_alert <br> 告警级别: {{ .Labels.severity }} 级 <br> 告警类型: {{ .Labels.alertname }} <br> 故障主机: {{ .Labels.instance }} <br> 告警主题: {{ .Annotations.summary }} <br> 告警详情: {{ .Annotations.description }} <br> 触发时间: {{ .StartsAt.Local.Format "2006-01-02 15:04:05" }} <br> {{ end }}{{ end -}} {{- if gt (len .Alerts.Resolved) 0 -}}{{ range .Alerts }} <h2>@告警恢复</h2> 告警程序: prometheus_alert <br> 故障主机: {{ .Labels.instance }}<br> 故障主题: {{ .Annotations.summary }}<br> 告警详情: {{ .Annotations.description }}<br> 告警时间: {{ .StartsAt.Local.Format "2006-01-02 15:04:05" }}<br> 恢复时间: {{ .EndsAt.Local.Format "2006-01-02 15:04:05" }}<br> {{ end }}{{ end -}} {{- end }} EOF
|
检查
1
| vim alertmanager/template/email.tmpl
|
2、修改alertmanager配置
1
| vim alertmanager/config.yml
|
增加html这行
1 2 3 4 5 6 7 8 9 10 11 12 13
| #模版配置 templates: - '/etc/alertmanager/template/*.tmpl'
....
receivers: - name: 'email' #收邮件的邮箱 email_configs: - to: 'yichenxiuops@163.com' #发送邮件的内容(调用模板文件中的) html: '{{ template "email.html" .}}'
|
重载配置
1
| curl -X POST http://localhost:9093/-/reload
|
检查
1
| http://192.168.224.11:9093/#/status
|
3、测试
163邮件报警,修改前和修改后的区别如下图: