基于 Prometheus 和 Alertmanager 的服务器监控报警邮件通知 (win+centOS7)

基于 Prometheus+Grafana + wmi_exporter(Windows)/ node_exporter(Linux) 的 监控系统详见之前的文章,相关的原理和概念不再赘述。
Windows 下搭建 wmi_exporter+Prometheus+Grafana 服务器性能监控平台
Linux(CentOS7) 下搭建 node_exporter+Prometheus+Grafana 服务器性能监控平台

本文在之前的基础上,加入报警邮件通知功能。

原理: prometheus 本来是负责收集和存储数据的,搭配上 alertmanager 之后,

  • 在 prometheus 一侧配置报警规则(指标达到多少 将报警事件发送到 alertmanager
  • 在 alertmanager 一侧配置通知规则(通知发到哪里,通知频率,通知内容格式等)
  • 当 prometheus 监测到相关数据满足报警规则后,把报警事件发送到 alertmanager
  • alertmanager 收到 prometheus 的报警事件,根据通知规则发送通知

本文各软件版本:prometheus-2.10.0 ; alertmanager-0.18.0

参考文章:
Prometheus 和 Alertmanager实战配置  【有具体配置项的说明】
Prometheus + AlertManager 邮件报警
阿里云服务器实现smtp自动发送邮件
https://help.aliyun.com/document_detail/29449.html?spm=5176.11065259.1996646101.searchclickresult.751948f1stf7KH

主要的操作:
1、注册一个支持 SMTP 协议收发邮件的邮箱(我用的是163邮箱),并申请授权码
2、(针对阿里云服务器)安全组规则 开通出方向的 465 端口

3、修改 prometheus 配置文件 prometheus.yml ,打开报警功能,配置报警规则文件路径
4、新建报警规则文件 alert_rules.yml,设置报警规则
5、修改 alertmanager 配置文件 alertmanager.yml,配置通知规则

遇到的比较大的坑:【由于参考文章没有说清楚,这两个坑搞了我一天的时间】
1、alertmanager  配置通知规则 的时候,需要的不是邮箱密码,而是授权码
2、阿里云服务器 
基于安全考虑,已禁用 25 端口,只能用 465 端口,需要开通出方向的 465 端口

===============铺垫结束,解开裤腰带就是干==================

目录

1、注册邮箱并申请授权码

2、阿里云服务器开通端口

3、配置 prometheus

4、新建报警规则文件 alert_rules.yml,设置报警规则

5、修改配置文件 alertmanager.yml,配置通知规则

6、运行并查看


1、注册邮箱并申请授权码

注册两个邮箱,一个用于发件,一个用于收件。注册步骤略过。
这里说明一下 用于发件的邮箱 申请授权码的步骤。

1、点击“设置”菜单下的 “POP3/SMTP/IMAP”

2、点击左侧菜单“客户端授权密码”,右侧选择“开启”。

3、开启成功后,记住自己设置的授权码。点击左侧菜单“POP3/SMTP/IMAP”,可看到如下界面

2、阿里云服务器开通端口

安全组规则 开通出方向的 465 端口。

3、配置 prometheus

修改 配置文件 prometheus.yml 如下【红色框部分】:

4、新建报警规则文件 alert_rules.yml,设置报警规则

在 prometheus.yml 文件同级目录新建 alert_rules.yml。
这里以一个报警规则为例:内存使用率大于70%【测试时为了方便,可以设置得低一点】

Windows:

groups:
- name: 主机状态-监控告警
  rules:
  - alert: 内存使用
    expr: ((wmi_cs_physical_memory_bytes - (wmi_os_physical_memory_free_bytes)) /wmi_cs_physical_memory_bytes) * 100 > 70
    for: 1m
    labels:
      status: 严重告警
    annotations:
      summary: "{{$labels.mountpoint}} 内存使用率过高!"
      description: "{{$labels.mountpoint }} 内存使用大于70%(目前使用:{{$value}}%)"
  

CENTOS:

groups:
- name: 主机状态-监控告警
  rules:
  - alert: 内存使用
    expr: ((node_memory_MemTotal_bytes -(node_memory_MemFree_bytes+node_memory_Buffers_bytes+node_memory_Cached_bytes) )/node_memory_MemTotal_bytes)*100 > 70
    for: 1m
    labels:
      status: 严重告警
    annotations:
      summary: "{{$labels.mountpoint}} 内存使用率过高!"
      description: "{{$labels.mountpoint }} 内存使用大于70%(目前使用:{{$value}}%)"

5、修改配置文件 alertmanager.yml,配置通知规则

Windows 和 CENTOS 相同:

global:
  resolve_timeout: 5m
  smtp_smarthost: 'smtp.163.com:25' # 邮箱smtp服务器代理。这里的端口可以用25和465,对于阿里云服务器只能用 465
  smtp_from: 'XXXX@163.com' # 发送邮箱名称
  smtp_auth_username: 'XXXX@163.com' # 发送邮箱名称[同上]
  smtp_auth_password: 'XXXX' # 邮箱授权码 ----注意是授权码,而不是密码
  smtp_require_tls: false
route:
  group_by: ['alertname']  # 报警分组依据
  group_wait: 10s          # 最初即第一次等待多久时间发送一组警报的通知
  group_interval: 10s      # 在发送新警报前的等待时间
  repeat_interval: 1h      # 发送重复警报的周期 对于email配置中,此项不可以设置过低,否则将会由于邮件发送太多频繁,被smtp服务器拒绝
  receiver: 'mail'         # 发送警报的接收者的名称,以下receivers name的名称
receivers:
- name: 'mail'             # 警报接收者,与上面的配置相对应    
  email_configs:           # 邮箱配置
  - to: 'XXXX@qq.com'      # 接收警报的email
    headers: { Subject: "[WARN] 报警邮件"}   # 接收邮件的标题

6、运行并查看

依次运行 

  • wmi_exporter(Windows)/ node_exporter(Linux)
  • prometheus
  • alertmanager

设法将内存使用率提高到 70% 以上,等待2分钟左右,将收到报警邮件。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值