Prometheus使用邮件接收告警通知

一、环境介绍

主机名 IP地址 系统 说明
localhost 192.168.224.11 Centos7.6 docker方式安装的prometheus

二、配置邮箱报警

1、获取邮箱授权码并开启smtp服务

https://mail.163.com/ 登陆自己的163账号

p9aSief.png

Pop3/smtp/imap服务,点开启。弹出来扫描二维码点框。手机扫描发送短信。获取授权码

p9UoM5V.png

弹出来的框,复制授权码。就是用于第三方登录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,p9UxM3n.png

3、检查alertmanager的alerts

1
http://192.168.224.11:9093/#/alerts

4、检查邮箱

登陆163邮箱查看邮件

p9aU3M4.png

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" .}}'

p9aae6e.png

重载配置

1
curl -X POST http://localhost:9093/-/reload

检查

1
http://192.168.224.11:9093/#/status

3、测试

163邮件报警,修改前和修改后的区别如下图:

p9adJ4x.png

评论


:D 一言句子获取中...

加载中,最新评论有1分钟缓存...