一、环境介绍
| 主机名 | 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邮件报警,修改前和修改后的区别如下图:

 
             
           
             
           
                         
          
评论区