zoukankan      html  css  js  c++  java
  • Alertmanager配置概述

    Alertmanager配置概述

    Alertmanager主要负责对Prometheus产生的告警进行统一处理,因此在Alertmanager配置中一般会包含以下几个主要部分:

    • 全局配置(global):用于定义一些全局的公共参数,如全局的SMTP配置,Slack配置等内容;
    • 模板(templates):用于定义告警通知时的模板,如HTML模板,邮件模板等;
    • 告警路由(route):根据标签匹配,确定当前告警应该如何处理;
    • 接收人(receivers):接收人是一个抽象的概念,它可以是一个邮箱也可以是微信,Slack或者Webhook等,接收人一般配合告警路由使用;
    • 抑制规则(inhibit_rules):合理设置抑制规则可以减少垃圾告警的产生

    默认配置文件如下

    [root@node00 ~]# cd /usr/local/prometheus/alertmanager/
    [root@node00 alertmanager]# cat alertmanager.yml.default 
    global:
      resolve_timeout: 5m
    
    route:
      group_by: ['alertname']
      group_wait: 10s
      group_interval: 10s
      repeat_interval: 1h
      receiver: 'web.hook'
    receivers:
    - 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']

    global配置:

        global:
          [ resolve_timeout: <duration> | default = 5m ]
          [ smtp_from: <tmpl_string> ] 
          [ smtp_smarthost: <string> ] 
          [ smtp_hello: <string> | default = "localhost" ]
          [ smtp_auth_username: <string> ]
          [ smtp_auth_password: <secret> ]
          [ smtp_auth_identity: <string> ]
          [ smtp_auth_secret: <secret> ]
          [ smtp_require_tls: <bool> | default = true ]
          [ slack_api_url: <secret> ]
          [ victorops_api_key: <secret> ]
          [ victorops_api_url: <string> | default = "https://alert.victorops.com/integrations/generic/20131114/alert/" ]
          [ pagerduty_url: <string> | default = "https://events.pagerduty.com/v2/enqueue" ]
          [ opsgenie_api_key: <secret> ]
          [ opsgenie_api_url: <string> | default = "https://api.opsgenie.com/" ]
          [ hipchat_api_url: <string> | default = "https://api.hipchat.com/" ]
          [ hipchat_auth_token: <secret> ]
          [ wechat_api_url: <string> | default = "https://qyapi.weixin.qq.com/cgi-bin/" ]
          [ wechat_api_secret: <secret> ]
          [ wechat_api_corp_id: <string> ]
          [ http_config: <http_config> ]
    • resolve_timeout:  这个解释有点绕,简单说就是在报警恢复的时候不是立马发送的,在接下来的这个时间内,如果没有此报警信息触发,才发送报警恢复消息。 默认值为5m。
    • smtp_from: 发件人邮箱地址。
    • smtp_smarthost: 发件人对应邮件提供商的smtp地址。
    • smtp_auth_username: 发件人的登陆用户名,默认和发件人地址一致。
    • smtp_auth_password:  发件人的登陆密码,有时候是授权码。
    • smtp_require_tls: 是否需要tls协议。默认是true。
    • wechart_api_url:  微信api地址。
    • wechart_api_secret: 密码
    • wechat_api_corp_id: corp id信息。

    templates配置

    模板用于控制我们发送的消息格式控制和内容组织的,我们可以自定义一个模板, 模板中引用alertmanager提供的一些内置变量,最终完成消息的渲染。

    样例如下:

    # alertmanager配置文件
    templates:
    - '/usr/local/prometheus/alertmanager/templates/myorg.tmpl'
    
    # cat /usr/local/prometheus/alertmanager/templates/myorg.tmpl
    {{ define "slack.myorg.text" }}https://internal.myorg.net/wiki/alerts/{{ .GroupLabels.app }}/{{ .GroupLabels.alertname }}{{ end}}

    receivers配置

    receivers:
    - name: 'email-zhaojiedi'
      email_configs:
      - to: '1072892917@qq.com'
    
    - name: 'hipchat-zhaojiedi'
      hipchat_configs:
      - auth_token: <auth_token>
        room_id: 85
        message_format: html
        notify: true
    - name: 'pagerduty-zhaojiedi'
      pagerduty_configs:
      - service_key: <team-DB-key>
    - name: 'opt-webhook'
      send_resolved: true 
      url: "http://xxxxx.xxx.com/5002/dingding/xxx/send/

    官方提供很多receviers的配置格式, 详细的参考官方文档: https://prometheus.io/docs/alerting/configuration/#receiver

    route配置

    routes:
      - match_re:
          service: ^(foo1|foo2|baz)$
        receiver: team-X-mails
        routes:
        - match:
            severity: critical
          receiver: team-X-pager
          
      - match:
          service: files
        receiver: team-Y-mails
    
        routes:
        - match:
            severity: critical
          receiver: team-Y-pager
    
    
      - match:
          service: database
        receiver: team-DB-pager
        # Also group alerts by affected database.
        group_by: [alertname, cluster, database]
        routes:
        - match:
            owner: team-X
          receiver: team-X-pager
          continue: true
        - match:
            owner: team-Y
          receiver: team-Y-pager

    这个配置文件时从alertmanager官方的github上面找到的。 地址如下:  https://github.com/prometheus/alertmanager/blob/master/doc/examples/simple.yml , 我们可以通过官方的工具来看下这个路由树是什么样的。

     inhibit_rules配置

    我们知道alertmanager对报警有抑制工程, 可以通过一定的规则,抑制一些报警消息,比如如下场景。

    场景1 : 磁盘报警,80%报警设置为info级别,90设置为警告级别, 如果2个消息都发送,那就多余了。 我们需要设置相同报警高级别压制低级别的报警,只发送高级别的报警信息。

    场景2: 节点宕机了, 在这个节点上面的各种服务报警都会触发的, 如果都发送不太方便定位问题,还容易带来巨大的压力。可以配置节点宕机压制节点层面的其他报警信息。

    样例配置如下:

    inhibit_rules:
    - source_match:
        severity: 'critical'
      target_match:
        severity: 'warning'
      # Apply inhibition if the alertname is the same.
      equal: ['alertname' ]

    通过上面的配置,可以在alertname相同的情况下,critaical的报警会抑制warning级别的报警信息。

    静默配置

    静默配置是通过web界面配置的, 如下图。

     进入静默配置页面

  • 相关阅读:
    Linux下面编译安装ffmpeg
    Fidder简单使用方法(HTTPS抓取和url替换)
    关于一下个阶段的计划
    JAVA的随机的字符串的封装(基本上够用了)
    Shell Script中的间接变量引用
    进程概念
    int main(int argc, char *argv[])的解读
    存储数组数据到SharedPreferences
    C语言中的基本声明
    C中关于指针数组的用法
  • 原文地址:https://www.cnblogs.com/fat-girl-spring/p/13304084.html
Copyright © 2011-2022 走看看