Skip to content

前面有写到,alertmanager的功能有分组,抑制,静默三种功能下面就来介绍这三种功能,以及他的路由与发送功能

yaml
# 全局配置项
global: 
  resolve_timeout: 5m #处理超时时间,默认为5min
  smtp_smarthost: 'smtp.sina.com:25' # 邮箱smtp服务器代理
  smtp_from: '******@sina.com' # 发送邮箱名称
  smtp_auth_username: '******@sina.com' # 邮箱名称
  smtp_auth_password: '******' # 邮箱密码或授权码
  wechat_api_url: 'https://qyapi.weixin.qq.com/cgi-bin/' # 企业微信地址


# 定义模板信心
templates:
  - 'template/*.tmpl'

# 定义路由树信息
route:
  group_by: ['alertname'] # 报警分组依据
  group_wait: 10s # 最初即第一次等待多久时间发送一组警报的通知
  group_interval: 10s # 在发送新警报前的等待时间
  repeat_interval: 1m # 发送重复警报的周期 对于email配置中,此项不可以设置过低,否则将会由于邮件发送太多频繁,被smtp服务器拒绝
  receiver: 'email' # 发送警报的接收者的名称,以下receivers name的名称

# 定义警报接收者信息
receivers:
  - name: 'email' # 警报
    email_configs: # 邮箱配置
    - to: '******@163.com'  # 接收警报的email配置
      html: '{{ template "test.html" . }}' # 设定邮箱的内容模板
      headers: { Subject: "[WARN] 报警邮件"} # 接收邮件的标题
    webhook_configs: # webhook配置
    - url: 'http://127.0.0.1:5001'
    send_resolved: true
    wechat_configs: # 企业微信报警配置
    - send_resolved: true
      to_party: '1' # 接收组的id
      agent_id: '1000002' # (企业微信-->自定应用-->AgentId)
      corp_id: '******' # 企业信息(我的企业-->CorpId[在底部])
      api_secret: '******' # 企业微信(企业微信-->自定应用-->Secret)
      message: '{{ template "test_wechat.html" . }}' # 发送消息模板的设定
inhibit_rules: 
  - source_match: 
     severity: 'critical' 
    target_match: 
     severity: 'warning' 
    equal: ['alertname', 'dev', 'instance']
yaml

global:
  # 邮箱相关配置
  smtp_smarthost: 'localhost:25'
  smtp_from: 'alertmanager@example.org'
  smtp_auth_username: 'alertmanager'
  smtp_auth_password: 'password'

# 通知模板文件目录
templates:
  - '/etc/alertmanager/template/*.tmpl'

# route根节点,每个alter都会经过的节点
route:
  # 传入警报分组所依据的标签。例如,针对cluster=A和alertname=LatencyHigh传入的多个警报将被分到处理到单个组中,相当于mysql中的group by
  #
  # 要按所有可能的标签进行聚合,请使用“...”作为唯一的标签名称。这相当于没有进行聚合,按原样传递所有警报。这一般是不可能的,除非您的警报量非常低,或者上游通知系统执行自己的分组。 Example: group_by: [...]
  group_by: ['alertname', 'cluster', 'service']

  # 当一个新组被进入的alert创建时,等待最少group_wait的时间再发送通知
  # 这种方式可以收到同一组短时间内一起触发的alert,而不会发很多次
  group_wait: 30s

  # 当第一组通知被发送后,第二组将会间隔group_interval再次发送
  group_interval: 5m

  # 如果警报已成功发送,请等待repeat_interval重新发送警报。
  repeat_interval: 3h

  # 设置默认的接受者
  receiver: team-X-mails

  # 上述所有属性都由所有子路由继承,并且可以在每个子路由上覆盖。

  # 子路由树
  routes:
    # 此路由对警报标签执行正则表达式匹配,以捕获与service列表相关的警报。
    - matchers:
        - service=~"foo1|foo2|baz"
      receiver: team-X-mails
      # 该服务有一个用于关键警报的子路由,任何不匹配的警报,即severity="critical",回退到父节点并发送到“team-X-mails”,如果匹配将被发送到team-X-pager
      routes:
        - matchers:
            - severity="critical"
          receiver: team-X-pager
          
          
          
    - matchers:
        - service="files"
      receiver: team-Y-mails

      routes:
        - matchers:
            - severity="critical"
          receiver: team-Y-pager

    # 此路由处理来自数据库服务的所有警报。如果没有团队来处理它,则默认为数据库团队。
    - matchers:
        - service="database"
      receiver: team-DB-pager
      # 此外,还按受影响的数据库对警报进行分组。
      group_by: [alertname, cluster, database]
      routes:
        - matchers:
            - owner="team-X"
          receiver: team-X-pager
          # continue被设置为true,还回去匹配下面的路由
          continue: true
        - matchers:
            - owner="team-Y"
          receiver: team-Y-pager


# Inhibition rules 允许禁止一组alert当另外一组alert发生时
# 如果一些危险级别的alert发生,可以用这些去禁止一些警告级别的通知
inhibit_rules:
  - source_matchers: [severity="critical"]
    target_matchers: [severity="warning"]
# 注意,这里的equal指的是: 指定标签值在两个alert都相等的话,就可以进行抑制
# 例如: {altername="test1",cluster="k8s-1",service="example",severity="critical"}
#	    {altername="test1",cluster="k8s-1",service="example",severity="warning"}
# 这两个alert就可以相互进行抑制,其中一个值不可以,也就是第二个就可以抑制第一个
    equal: [alertname, cluster, service]


receivers:
  - name: 'team-X-mails'
    email_configs:
      - to: 'team-X+alerts@example.org'

  - name: 'team-X-pager'
    email_configs:
      - to: 'team-X+alerts-critical@example.org'
    pagerduty_configs:
      - service_key: <team-X-key>

  - name: 'team-Y-mails'
    email_configs:
      - to: 'team-Y+alerts@example.org'

  - name: 'team-Y-pager'
    pagerduty_configs:
      - service_key: <team-Y-key>

  - name: 'team-DB-pager'
    pagerduty_configs:
      - service_key: <team-DB-key>

这个示例配置文件是官方给的,以后要用的时候,还是可以给一个参考作用的,还有相关receivers的配置,就需要实践得出,不想浪费时间在这个上面,一般网上都有教程