暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Prometheus告警实战:通过配置Alertmanager实现邮箱告警通知

675

今天分享一下prometheus如何将告警发送到邮箱。其他复杂的Alertmanager相关概念先不学习,直接上实战配置。


本文是基于下面两个文章的续写:

部署一套完整的prometheus+grafana监控系统详细过程

Prometheus监控Linux服务器


prometheus主要通过Alertmanager这个服务来转发告警的,要使用 Alertmanager 通过 QQ 邮箱 发送告警通知,你需要正确配置 SMTP 服务器,并启用 QQ 邮箱的 SMTP 服务



1 获取 QQ 邮箱的 SMTP 授权码

QQ 邮箱默认不允许外部应用直接使用密码登录 SMTP 服务器,因此你需要获取一个 授权码

  • 登录 QQ 邮箱,进入 设置 -> 账户
  • 找到 SMTP/IMAP/POP3/Exchange 服务,开启 SMTP 服务
  • 开启后,会提示你获取一个 授权码(类似 rvghbimmkaopcjii
    )。
  • 记录下授权码,后续 Alertmanager 配置会用到。

2 配置 Alertmanager

编辑 **Alertmanager 配置文件 (alertmanager.yml)**,增加 SMTP 相关配置:

global:
  resolve_timeout: 5m
# 配置邮件发送信息
  smtp_smarthost: 'smtp.qq.com:465'
# 自己的邮箱
  smtp_from: 'xxx@qq.com'
# 自己的邮箱
  smtp_auth_username: 'xxx@qq.com'
# 这里是SMTP授权码 而不是 QQ 邮箱密码
  smtp_auth_password: 'rvghbimmkaopcji'
  smtp_hello: 'qq.com'
# 关闭tls认证
  smtp_require_tls: false
route:
  group_by: ['alertname','severity']
  group_wait: 30s
# 发送间隔
  group_interval: 1m
  repeat_interval: 1m
  receiver: 'email'
  routes:
  - receiver: email
    match:
      severity: critical
       
receivers:
  - name: 'email'
    email_configs:
    - to: '1689631919@qq.com'
      send_resolved: true

# 告警抑制
inhibit_rules:
    # 定义触发抑制的告警条件
  - source_match:
      severity: 'critical'
    # 定义被抑制的告警条件
    target_match:
      severity: 'warning'
    equal: ['alertname''severity''instance']
# 当一个 severity 为 critical 的告警触发时,所有 severity 为 warning 且 alertname 和 instance 标签与 critical 告警相同的告警将被抑制,不会发送通知。

3 重启 Alertmanager

systemctl restart alertmanager

4 配置告警规则

部署的时候已经写了一个,我修改一下。

groups:
  - name: 主机状态监控
    rules:
      - alert: 主机宕机
        expr: up == 0
        for: 1m
        labels:
          severity: critical
        annotations:
          summary: "实例 {{ $labels.instance }} 宕机"
          description: "实例 {{ $labels.instance }} 已经宕机超过 1 分钟。请检查服务状态。"


5 测试告警

测试:关掉其中一台主机

prometheus UI上可以看到告警信息

等一会后,就会收到了邮件通知,由于时间间隔设置的比较短,所以可能短信会比较多,这个根据自己需要来设置

将主机开起来后会收到恢复通知:Resolved


6 告警规则拓展

上面的告警规则只是简单的演示是否宕机,生产环境还会有内存,磁盘,CPU等方面的告警,下面将展示一个比较全面的告警规则

groups:
  - name: 主机信息监控
    rules:
      - alert: 主机宕机
        expr: up == 0
        for: 1m
        labels:
          severity: critical
        annotations:
          summary: " {{ $labels.instance }} 主机宕机,请尽快处理"
          description: " {{ $labels.instance }} 已经宕机超过 1 分钟。请检查服务状态。"
          
      - alert: 内存使用率告警
        expr: 100 - (node_memory_MemAvailable_bytes node_memory_MemTotal_bytes) * 100 > 80
        for: 2m
        labels:
          severity: warning
        annotations:
          summary: "{{ $labels.instance }} 内存使用率过高, 请尽快处理!"
          description: "{{ $labels.instance }} 内存使用率超过80%, 当前使用率{{ $value }}%."

      - alert: CPU使用率告警
        expr: 100 - (avg by (instance, job)(irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 85
        for: 1m
        labels:
          severity: warning
        annotations:
          summary: "{{ $labels.instance }} CPU使用率过高, 请尽快处理!"
          description: "{{ $labels.instance }} CPU使用大于85%, 当前使用率{{ $value }}%."

      - alert: 磁盘容量告警
        expr: 100 - (node_filesystem_free_bytes{fstype=~"ext4|xfs"} node_filesystem_size_bytes{fstype=~"ext4|xfs"} * 100) > 80
        for: 1m
        labels:
          severity: critical
        annotations:
          summary: "{{ $labels.mountpoint }} 磁盘分区使用率过高,请尽快处理!"
          description: "{{ $labels.instance }} 磁盘分区使用大于80%,当前使用率{{ $value }}%."


重启prometheus后,可以看到界面多了几个告警项

本文分享了如何通过配置Alertmanager来实现邮箱告警通知,但是里面的配置文件和告警规则都展开详细讲解,将在下一篇文章讲解,敬请关注!感谢点赞和关注!


往期精彩文章:


K8S命令详解汇总【自用珍藏版】K8S集群部署 | K8S存储实战案例 |
K8S证书续签十年 | K8S部署Prometheus | Rancher部署并接管K8S |
Jenkins安装部署 | Gitlab安装部署 | 服务网格Istio安装及实战 |
搭建企业级Harbor仓库 | K8S对接Harbor仓库 | Docker常用命令汇总 |
Docker无法下载镜像解决办法 | 安装Docker的三种方法 | Docker基础概念汇总 |

Oralce19C RAC集群搭建 | Oracle集群管理命令汇总 | MySQL集群安装部署 |
MySQL一键备份脚本 | MySQL集群目录迁移 | Redis三主三从集群部署 | 

150个Linux常用命令 |  8个有趣的Linux命令 | Vim编辑器的常用操作汇总  |
Firewalld防火墙详细讲解 |  构建内部Yum源 | 超全的磁盘扩容方法 | 服务器带外管理知识 | Linux文件系统选择指南:XFS还是EXT4?安装完操作系统后建议做这些优化工作!

文章转载自运维李哥不背锅,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论