• Prometheus集成springboot(七)


    altermanage邮件告警

    那么警报是如何发出的呢?Prometheus以一个固定时间间隔来评估所有规则,这个时间由evaluate_interval定义,我们将其设置为15秒。在每个评估周期,Prometheus运行每个警报规则中定义的表达式并更新警报状态。警报可能有以下三种状态:
    ·Inactive:警报未激活。
    ·Pending:警报已满足测试表达式条件,但仍在等待for子句中指定的持续时间。
    ·Firing:警报已满足测试表达式条件,并且Pending的时间已超过for子句的持续时间。Pending到Firing的转换可以确保警报更有效,且不会来回浮动。没有for子句的警报会自动从Inactive转换为Firing,只需要一个评估周期即可触发。带有for子句的警报将首先转换为Pending,然后转换为Firing,因此至少需要两个评估周期才能触发。到目前为止,警报的生命周期如下:
    ·节点的CPU不断变化,每隔一段由scrape_interval定义的时间被Prometheus抓取一次,对我们来说是15秒。
    ·根据每个evaluation_interval的指标来评估警报规则,对我们来说还是15秒。
    ·当警报表达式为true时(对于我们来说是CPU超过80%),会创建一个警报并转换到Pending状态,执行for子句。
    ·在下一个评估周期中,如果警报测试表达式仍然为true,则检查for的持续时间。如果超过了持续时间,则警报将转换为Firing,生成通知并将其推送到Alertmanager。
    ·如果警报测试表达式不再为true,则Prometheus会将警报规则的状态从Pending更改为Inactive。

    global:
      smtp_smarthost: 'smtp.163.com:465'  #此处我用的163的邮箱左右告警通知邮箱
      smtp_from: 'yitian_hm123@163.com'
      smtp_auth_username: 'yitian_hm123@163.com'
      smtp_auth_password: '************'
      smtp_require_tls: false
    templates:
      - 'template/*.tmpl'
    route:
      group_by: ['alertname','instance']
      group_wait: 30s
      group_interval: 5m
      repeat_interval: 1h
      receiver: 'email'
      routes:
        - match:
            severity: critical
          receiver: pager
        - match_re:
            severtity: warning|critical
          receiver: support_team
    receivers:
      - name: 'email'
        email_configs:
          - to: 'yitian881112@126.com'
      - name: 'support_team'
        email_configs:
          - to: '591710882@qq.com'
      - name: 'pager'
        email_configs:
          - to: '591710882@qq.com'
          - to: 'yitian881112@126.com'
    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
    • 37
    • 38
    • 39

    如上配置,当发生告警的时候根据告警的级别通过路由进行匹配,如果cirtical会发给对应的收件人类型,在每个收人对象下面可以配置多个收件邮箱、

    在这里插入图片描述
    下面简单解释下关于邮箱配置一些字段

    
    929/5000
    
    默认的SMTP From报头字段。
    
    [smtp_from: ]
    
    #用于发送邮件的默认SMTP智能主机,包括端口号。
    
    #端口号通常是25,或587的SMTP通过TLS(有时称为STARTTLS)。
    
    #示例:smtp.example.org: 587
    
    [smtp_smarthost: ]
    
    # SMTP服务器的默认主机名。
    
    [smtp_hello: | default = "localhost"]
    
    # SMTP认证使用cramp - md5, LOGIN和PLAIN。如果为空,则Alertmanager不验证到SMTP服务器。
    
    [smtp_auth_username: ]
    
    # SMTP认证使用LOGIN和PLAIN。
    
    [smtp_auth_password: ]
    
    # SMTP认证使用PLAIN。
    
    [smtp_auth_identity: ]
    
    # SMTP认证使用cam - md5。
    
    [smtp_auth_secret: ]
    
    #默认SMTP TLS要求。
    
    #注意,Go不支持到远程SMTP端点的未加密连接。
    
    [smtp_require_tls: | default = true]
    
    • 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
    • 37
    • 38
    • 39
    • 40
  • 相关阅读:
    RT-Thread移植到STM32单片机过程
    【访谈】Eotalk Vol.01:Eoapi,我们希望以开源的方式构建 API 生态系统
    java 每种设计模式的作用,与应用场景
    1-07 React配置postcss-px-to-viewport
    (60)矩阵中的局部最大值
    高防CDN与高防服务器:为什么高防服务器不能完全代替高防CDN
    async和await、以及他们和promise的区别?
    如何实现硬件和软件的统一?(从物理世界到电子电路再到计算机科学)
    Linux中常见配置文件修改(ifcfg-ens33、hosts、profile、rc.local等)
    .net6&7中如何优雅且高性能的使用Json序列化
  • 原文地址:https://blog.csdn.net/yitian881112/article/details/125475264