• 9-6 Prometheus告警通知Alertmanager,结合邮箱,钉钉,企业微信实现告警,告警模板使用,告警分类发送


    前言

    Alertmanager告警管理是Prometheus一个组件,用于告警信息的处理与转发。

    Alertmanager接收Prometheus等客户端发来的警报,之后通过分组,删除重复等处理,并将它们通过路由发送给正确的接收器。告警方式可以按照不同的规则发送给不同的模块负责人,Alertmanager支持Wechat, Email, Webhook等告警方式, 其中Webhook可以接入钉钉等聊天工具。

    在这里插入图片描述



    告警流程

    1. Prometheus配置监控规则
    2. 监控对象触发阈值
    3. 阈值超出持续时间
    4. 推送告警到Alertmanager
    5. Alertmanager处理告警信息
      1)分组(group):类似告警合并为一个通知。
      2)静默(silences):不通知,系统升级时使用。
      3)抑制(inhibition): 只通知一次,相同内容不再通知。
    6. Alertmanager发送通知到媒体
    7. 邮箱,钉钉,企业微信等接收到通知

    部署alertermanager

    下载二进制文件

    wget https://github.com/prometheus/alertmanager/releases/download/v0.24.0/alertmanager-0.24.0.linux-amd64.tar.gz
    
    tar zxvf alertmanager-0.24.0.linux-amd64.tar.gz
    mv alertmanager-0.24.0.linux-amd64 /apps/alertmanager
    
    • 1
    • 2
    • 3
    • 4

    创建alertermanager服务

    vim /etc/systemd/system/alertmanager.service
    
    [Unit]
    Description=Prometheus alertmanager
    After=network.target
    
    [Service]
    # 注意该行不能有单双引号
    ExecStart=/apps/alertmanager/alertmanager --config.file=/apps/alertmanager/alertmanager.yml
    
    [Install]
    WantedBy=multi-user.target
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    Tips: 服务启动与二进制启动写法有所不同

    二进制启动,3种写法都可以:

    /apps/alertmanager/alertmanager --config.file="/apps/alertmanager/alertmanager.yml"
    /apps/alertmanager/alertmanager --config.file='/apps/alertmanager/alertmanager.yml'
    /apps/alertmanager/alertmanager --config.file=/apps/alertmanager/alertmanager.yml
    
    • 1
    • 2
    • 3

    服务启动,不能有单双引号:

    # ExecStart=/apps/alertmanager/alertmanager --config.file="/apps/alertmanager/alertmanager.yml"
    # ExecStart=/apps/alertmanager/alertmanager --config.file='/apps/alertmanager/alertmanager.yml'
    # ExecStart="/apps/alertmanager/alertmanager --config.file='/apps/alertmanager/alertmanager.yml'"
    ExecStart=/apps/alertmanager/alertmanager --config.file=/apps/alertmanager/alertmanager.yml
    
    • 1
    • 2
    • 3
    • 4

    启动服务,查看端口:

    systemctl daemon-reload
    systemctl enable --now alertmanager
    systemctl status alertmanager
    
    netstat -lntp
    tcp6       0      0 :::9093                 :::*                    LISTEN      2225/alertmanager   
    tcp6       0      0 :::9094                 :::*                    LISTEN      2225/alertmanager  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    访问 192.168.100.197:9093 为alertmanager管理页面:

    在这里插入图片描述

    Alertmanager配置

    官方配置文件说明

    https://prometheus.io/docs/alerting/latest/configuration/

    配置文件详解,以邮箱告警为例:

    vim /apps/alertmanager/alertmanager.yml
    
    # 邮件发送者
    global:
      smtp_smarthost: 'smtp.qq.com:465' 
      smtp_from: '123456789@qq.com' 
      smtp_auth_username: '123456789@qq.com' 
      smtp_auth_password: 'myqqpassword' 
      smtp_require_tls: false
    
    # 规则配置
    route:
      group_by: ['alertname']
      group_wait: 10s
      group_interval: 2m
      repeat_interval: 5m
      receiver: 'email'
    
    # 通知接收者
    receivers:
      - name: 'email'
        email_configs:
          - to: 'someone@email.com'
            send_resolved: true
            
      - name: 'web.hook'
        webhook_configs:
          - url: 'http://127.0.0.1:5001/'
    
    # 抑制设置
    inhibit_rules:
      - source_match:
          severity: 'critical'
        target_match:
          severity: 'warning'
        equal: ['alertname', 'dev', 'instance']
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    项目 Value
    global 全局设置,这里为邮件发送者的配置
    smtp_* 邮箱smtp设置,先在qq开通,再输入账号密码等
    group_by 通过 alertname 的值对告警进行分类
    group_wait 第一次产生告警,等待 10s,组内有告警就一起发出,没有其它告警就单独发出
    group_interval 第二次产生告警,先等待 2 分钟,2 分钟后还没有恢复就进入 repeat_interval
    repeat_interval 在最终发送消息前再等待 5 分钟,5 分钟后还没有恢复就发送第二次告警
    receiver 接收者,在receivers中选择一个
    receivers 定义接收者们,可定义多个
    name 接收者名字,将被receiver选择
    email_configs 邮箱接收者设置
    send_resolved 是否发送告警解决的通知
    webhook_configs webhook接收者设置,如钉钉等
    inhibit_rules 抑制设置,即哪些告警发通知,哪些不发
    source_match 源匹配的告警将被通知
    severity 严重程度为critical,重要的告警将被通知
    target_match 目标匹配的告警不被通知
    severity 严重程度为warning,警告的告警将被通知
    equal 匹配哪些对象的告警

    Prometheus规则

    新建规则文件,配置分组信息,告警阈值和时间,告警标签和注释等。

    指标表达式采用PromQL语

  • 相关阅读:
    密码学 | 承诺:Pedersen 承诺 + ZKP
    单臂路由学习
    Spark 内核 (二) --------- Spark 部署模式
    java中类加载与双亲委派机制
    什么是 ping (ICMP) 洪水 DDOS 攻击?
    中断(全网最细!)
    Impala优化,并发性能问题,压测
    2022.09.22学习笔记
    VUE:自定义上传文件的组件
    底层源码面试题丨深入剖析Integer缓存机制相关的问题!
  • 原文地址:https://blog.csdn.net/m0_60244783/article/details/127583375