本文介紹如何將開源Alertmanager路由規則導入為ARMS告警管理的通知策略。
背景信息
開源Alertmanager作為一款優秀的告警通知組件,在Prometheus開源監控解決方案中是必不可失的一環。它靈活的路由、靜默、分組能力可以更合理地發送告警通知。但開源Alertmanager同時也存在一些缺陷。例如默認缺少短信、電話的通知能力;缺少告警處理能力,不能閉環告警;缺少和云的打通能力,難以構建統一告警平臺,只能作為告警中轉站。
ARMS告警管理作為統一告警平臺,能夠在覆蓋Alertmanager各種能力的同時,接入更多的告警,統一維護。同時ARMS告警管理生長在云上,和云上的各類系統天然打通,非常適合構建統一告警中心。本文主要介紹如何快速將配置在Alertmanager的路由、分組、靜默等規則同步到ARMS告警管理中。
實體映射關系說明
- 路由(route) 映射為通知策略(link)。
- match映射為分派條件中的等于條件。
- match_re映射為分派條件中的正則匹配條件。
- group_by映射為分組條件,子路由如果沒有分組條件,則繼承父路由的分組條件。
限制說明
- 無法同步聯系人Receivers,郵件、Webhook、釘釘、PagerDuty等配置無法同步。
- 開源Alertmanager的路由規則是樹狀結構的,ARMS告警管理僅支持一級路由。
- 開源Alertmanager支持continue字段,ARMS告警管理中continue默認為true,且不可修改。
# 開源配置示例: # The root node of the routing tree. route: # Whether an alert should continue matching subsequent sibling nodes. [ continue: <boolean> | default = false ]
- 支持match和match_re,不支持matchers。
# A set of equality matchers an alert has to fulfill to match the node. match: [ <labelname>: <labelvalue>, ... ] # A set of regex-matchers an alert has to fulfill to match the node. match_re: [ <labelname>: <regex>, ... ] # 不支持matchers # A list of matchers that an alert has to fulfill to match the node. matchers: [ - <matcher> ... ]
- 根路由不能導入為通知策略。
- 由于路由沒有名稱,在導入ARMS告警管理后會隨機生成通知策略的名稱。
- 不支持抑制策略導入inhibit_rules。
- 導入后生成的通知策略不支持修改分派條件。
- 導入是不冪等的,重復導入會導致生成多條通知策略。
操作步驟
- 獲取開源Alertmanager配置。示例如下:
global: smtp_smarthost: 'localhost:25' smtp_from: 'alertmanager@example.org' smtp_auth_username: 'alertmanager' smtp_auth_password: 'password' templates: - '/etc/alertmanager/template/*.tmpl' # The root route on which each incoming alert enters. route: group_by: ['alertname', 'cluster', 'service'] group_wait: 30s group_interval: 5m repeat_interval: 3h receiver: team-X-mails 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 group_by: [alertname, cluster, database] routes: - match: owner: "team-X" receiver: team-X-pager continue: true - match: owner: "team-Y" receiver: team-Y-pager inhibit_rules: - source_matchers: [ severity="critical" ] target_matchers: [ severity="warning" ] 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>
- 在ARMS控制臺 頁面的通知策略列表區域,單擊導入。
- 在通知策略導入對話框中粘貼步驟1中獲取的路由規則,然后單擊保存。等待一段時間后,即可查看已導入的通知策略。