侧边栏壁纸
博主头像
一揽芳华 博主等级

行动起来,活在当下

  • 累计撰写 265 篇文章
  • 累计创建 24 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

5.3.163邮箱告警

芳华是个男孩!
2024-10-14 / 0 评论 / 0 点赞 / 6 阅读 / 0 字
广告 广告

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邮件报警,修改前和修改后的区别如下图:

0
广告 广告

评论区