本文介绍如何将开源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中获取的路由规则,然后单击保存。等待一段时间后,即可查看已导入的通知策略。