zoukankan      html  css  js  c++  java
  • Promethus配置邮件告警

    介绍

    Prometheus是一个按功能划分的凭条,指标的收集和存储与警报是分开的。警报管理功能是由Alertmanager的工具提供,该工具是监控体系中的独立组件。

    在Prometheus上定义警报规则后,这些规则可以触发事件,然后传播到Alertmanager,Alertmanager会决定如何处理相应的警报。>Alertmanager对警报进行去重、分组,然后路由到不同的接收器,如电子邮件、短信或SaaS服务(PagerDuty等)。我们将在Prometheus服务器上编写警报规则 ,这些规则将使用我们收集的指标并在指定的阈值或标准上触发警报。我们还将看到如何为警报添加一些上下文。当指标达到阈值或标准时,会生成一个警报并将其推送到Alertmanager。与Prometheus一样,Alertmanager配置也是基于YAML的配置文件。

    prometheus本身不支持告警功能,主要通过插件alertmanage来实现告警。AlertManager用于接收Prometheus发送的告警并对于告警进行一系列的处理后发送给指定的用户。
    prometheus触发一条告警的过程:
    prometheus--->触发阈值--->超出持续时间--->alertmanager--->分组|抑制|静默--->媒体类型--->邮件|钉钉|微信等。

    一、安装promethus的监控alertmanager插件

    wget https://github.com/prometheus/alertmanager/releases/download/v0.20.0/alertmanager-0.20.0.linux-amd64.tar.gz
    tar zxvf alertmanager-0.20.0.linux-amd64.tar.gz
    cd alertmanager-0.20.0.linux-amd64
    mv  alertmanager-0.20.0.linux-amd64   /usr/local/prometheus/alertmanager
    
    nohup /usr/local/prometheus/alertmanager/alertmanager --config.file="/usr/local/prometheus/alertmanager/alertmanager.yml" &
    

    访问:http://IP:9093

    二、prometheus集成alertmanager

    • 1、部署完毕alertmanager, 需要告知prometheus告警信息推送的位置, 通过如下配置即可完成
    [root@k8s-test-01 alertmanager]# cat /usr/local/prometheus/prometheus.yml 
    # my global config
    global:
      scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
      evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
      # scrape_timeout is set to the global default (10s).
    # Alertmanager configuration
    alerting:
      alertmanagers:
      - static_configs:
        - targets:
           - 114.67.94.33:9093
    
    • 2、创建报警规则
    [root@node00 prometheus]# vim prometheus.yml 
    rule_files:
      - "rules/*rules.yml"
      # - "second_rules.yml"
    [root@node00 prometheus]#  mkdir rules
    [root@node00 prometheus]# cat rules/node_rules.yml 
    groups:
      - name: node-alert
        rules:
        - alert: disk-full
          expr: 100 - ((node_filesystem_avail_bytes{mountpoint="/",fstype=~"ext4|xfs"} * 100) / node_filesystem_size_bytes {mountpoint="/",fstype=~"ext4|xfs"})
          for: 1m
          labels: 
            serverity: page
          annotations: 
            summary: "{{ $labels.instance }} disk full "
            description: "{{ $labels.instance }} disk > {{ $value }}  "
    

    解释: expr 相当于表示,表示磁盘使用率是多少的值(5%) ,for 持续时间为1分钟就会报警.(上面规则只要重启动aletemanger 就会报警)

    如果想要恢复的话的,可以使用 数值比较。

    [root@node00 prometheus]# cat rules/node_rules.yml 
    groups:
      - name: node-alert
        rules:
        - alert: disk-full
          expr: 100 - ((node_filesystem_avail_bytes{mountpoint="/",fstype=~"ext4|xfs"} * 100) / node_filesystem_size_bytes {mountpoint="/",fstype=~"ext4|xfs"}) > 8
          for: 1m
          labels: 
            serverity: page
          annotations: 
            summary: "{{ $labels.instance }} disk full "
            description: "{{ $labels.instance }} disk > {{ $value }}  "
    

    • 3、重启动promethus /usr/local/prometheus/prometheus --config.file="/usr/local/prometheus/prometheus.yml" &
      查看规则

      查看报警信息

    三、测试邮件报警问题

    • 1、alertmanger 配置文件修改(邮件发送相关) 上面的消息信息已经从prometheus推送给alertmanager了, 我们已经可以在alertmanager的web管理界面看到对应的报警信息,但是我们还没有配置如何让alertmanager把这些信息推送我们的社交软件上面去。
    [root@k8s-test-01 alertmanager]# more /usr/local/prometheus/alertmanager/alertmanager.yml
    global:
      resolve_timeout: 5m
      ###################################
      smtp_auth_username: "xxx@126.com"
      smtp_auth_password: "*******"
      #smtp_auth_secret: ""
      smtp_require_tls: false
      smtp_smarthost: "smtp.126.com:465"
      smtp_from: "xxx@126.com"
      ####################################
    route:
      group_by: ['alertname']
      group_wait: 10s
      group_interval: 10s
      repeat_interval: 1h
      receiver: 'email-caozm'
      
    receivers:
    - name: 'email-xxx'
      email_configs:
      - send_resolved: true
        to: xxx@126.com
    inhibit_rules:
      - source_match:
          severity: 'critical'
        target_match:
          severity: 'warning'
        equal: ['alertname', 'dev', 'instance']
    

    解释: 分组(group): 将类似性质的警报合并为单个通知。

    group_by: ['alertname']  # 以标签作为分组依据
    group_wait: 10s    # 分组报警等待时间
    group_interval: 10s   # 发送组告警间隔时间
    repeat_interval: 1h  # 重复告警发送间隔时间
    

    抑制(inhibition): 当警报发出后,停止重复发送由此警报引发的其他警报。可以消除冗余告警

    inhibit_rules:
      - source_match:  # 当此告警发生,其他的告警被抑制
          severity: 'critical'   
        target_match:   # 被抑制的对象
          severity: 'warning'  
        equal: ['id', 'instance']
    

    重启动alertmanger 进程。

    • 2、故障邮件
    • 3 恢复邮件
  • 相关阅读:
    Web 应用的 UML 建模与 .NET 框架开发
    UML类详解
    学习Pythod 有感
    树形结构应用技巧
    面向对象的设计原则-类设计原则
    prototype 学习
    php framework kohana 学习2
    用批命令更新数据库
    HashTable
    jquery 调用wcf project
  • 原文地址:https://www.cnblogs.com/syy1757528181/p/14480530.html
Copyright © 2011-2022 走看看