title: 5.3.163邮箱告警
order: 29
icon: lightbulb
一、环境介绍
主机名 | IP地址 | 系统 | 说明 |
localhost | 192.168.11.61 | Ubuntu 20.04 | docker方式安装的prometheus |
二、配置邮箱报警
1、获取邮箱授权码并开启smtp服务
https://mail.163.com/ 登陆自己的163账号
Pop3/smtp/imap服务,点开启。弹出来扫描二维码点框。手机扫描发送短信。获取授权码
弹出来的框,复制授权码。就是用于第三方登录163邮箱的密码
MONBUFHOQZPBXHGD
2、修改alertmanager配置
修改alertmanager配置文件
#二进制安装修改/opt/alertmanager/alertmanager.yml
#docker安装修改
cd /data/docker-prometheus
vim alertmanager/alertmanager.yml
#填入如下内容:
global:
#163服务器
smtp_smarthost: 'smtp.163.com:465'
#发邮件的邮箱
smtp_from: 'cdring@163.com'
#发邮件的邮箱用户名,也就是你的邮箱
smtp_auth_username: 'cdring@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: 'cdring@163.com'
send_resolved: true
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'dev', 'instance']
多个收邮件的邮箱账号配置,如下:
receivers:
- name: 'email'
#收邮件的邮箱
email_configs:
- to: 'user1@example.com'
- to: 'user2@example.com'
- to: 'user3@example.com'
检查
cat alertmanager/alertmanager.yml
重启alertmanager或者重新加载配置
#重载
curl -X POST http://localhost:9093/-/reload
检查
http://192.168.11.61:9093/#/status
3、配置触发器
查看现有触发器
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页面
http://192.168.11.61:9090/alerts
INACTIVE:活跃中,即表示正常无告警产生。
PENDING:待触发,表示已经达到预设的阈值,但没达到预设的时间。
FIRING:表示达到预设的阈值并超过预设的时间触发告警
三、测试告警是否正常
1、停止node-exporter
#docker环境
docker stop node-exporter
#二进制安装环境
systemctl stop node_exporter
2、prometheus查看
浏览器打开prometheus web管理页面–点击Alerts,
3、检查alertmanager的alerts
http://192.168.11.61:9093/#/alerts
4、检查邮箱
登陆163邮箱查看邮件
5、如果没收到钉钉消息,排查
docker logs -f alertmanager
四、使用模版(非必需)
- 看需求–不使用模版默认也行。
1、创建模版文件
cd /data/docker-prometheus
#创建存放模版的目录
mkdir alertmanager/template
通过cat创建
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
检查
vim alertmanager/template/email.tmpl
2、修改alertmanager配置
vim alertmanager/config.yml
增加html这行
#模版配置
templates:
- '/etc/alertmanager/template/*.tmpl'
....
receivers:
- name: 'email'
#收邮件的邮箱
email_configs:
- to: 'cdring@163.com'
#发送邮件的内容(调用模板文件中的)
html: '{{ template "email.html" .}}'
重载配置
curl -X POST http://localhost:9093/-/reload
检查
http://192.168.11.61:9093/#/status
3、测试
163邮件报警,修改前和修改后的区别如下图:
评论区