Alertmanager 配置概述

在上面的部分中已经简单介绍过,在 Alertmanager 中通过路由 (Route) 来定义告警的处理方式。路由是一个基于标签匹配的树状匹配结构。根据接收到告警的标签匹配相应的处理方式。这里将详细介绍路由相关的内容。

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

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

其完整配置格式如下:

  1. global:
  2. [ resolve_timeout: <duration> | default = 5m ]
  3. [ smtp_from: <tmpl_string> ]
  4. [ smtp_smarthost: <string> ]
  5. [ smtp_hello: <string> | default = "localhost" ]
  6. [ smtp_auth_username: <string> ]
  7. [ smtp_auth_password: <secret> ]
  8. [ smtp_auth_identity: <string> ]
  9. [ smtp_auth_secret: <secret> ]
  10. [ smtp_require_tls: <bool> | default = true ]
  11. [ slack_api_url: <secret> ]
  12. [ victorops_api_key: <secret> ]
  13. [ victorops_api_url: <string> | default = "https://alert.victorops.com/integrations/generic/20131114/alert/" ]
  14. [ pagerduty_url: <string> | default = "https://events.pagerduty.com/v2/enqueue" ]
  15. [ opsgenie_api_key: <secret> ]
  16. [ opsgenie_api_url: <string> | default = "https://api.opsgenie.com/" ]
  17. [ hipchat_api_url: <string> | default = "https://api.hipchat.com/" ]
  18. [ hipchat_auth_token: <secret> ]
  19. [ wechat_api_url: <string> | default = "https://qyapi.weixin.qq.com/cgi-bin/" ]
  20. [ wechat_api_secret: <secret> ]
  21. [ wechat_api_corp_id: <string> ]
  22. [ http_config: <http_config> ]
  23. templates:
  24. [ - <filepath> ... ]
  25. route: <route>
  26. receivers:
  27. - <receiver> ...
  28. inhibit_rules:
  29. [ - <inhibit_rule> ... ]

在全局配置中需要注意的是 resolve_timeout,该参数定义了当 Alertmanager 持续多长时间未接收到告警后标记告警状态为 resolved(已解决)。该参数的定义可能会影响到告警恢复通知的接收时间,读者可根据自己的实际场景进行定义,其默认值为 5 分钟。在接下来的部分,我们将已一些实际的例子解释 Alertmanager 的其它配置内容。