Alertmanager.yml配置多接收者失败:receivers字段未找到错误求助
解决Alertmanager配置中receivers字段未找到的错误
问题根源
你把receivers字段嵌套在route节点下了,但Alertmanager的配置规范里,receivers是顶级配置项,必须和route同级,这才导致YAML解析时提示"field receivers not found in type config.plain"。
修正后的完整配置示例
# 顶级路由配置 route: group_by: - alertname group_wait: 30s group_interval: 5m repeat_interval: 1h # 路由节点下用单数receiver指定默认接收者,多渠道接收需通过顶级receivers定义后引用 receiver: combined-receivers # 顶级接收者配置,所有告警渠道需在此定义 receivers: - name: slack-notifications slack_configs: - api_url: "https://hooks.slack.com/services/XXX/XXX/XXX" channel: "#alerts" send_resolved: true - name: email-me email_configs: - to: "your-email@example.com" from: "alertmanager@example.com" smarthost: "smtp.example.com:587" auth_username: "alertmanager@example.com" auth_password: "your-smtp-password" send_resolved: true - name: combined-receivers # 配置同时发送到Slack和Email的组合接收者 slack_configs: - api_url: "https://hooks.slack.com/services/XXX/XXX/XXX" channel: "#alerts" send_resolved: true email_configs: - to: "your-email@example.com" from: "alertmanager@example.com" smarthost: "smtp.example.com:587" auth_username: "alertmanager@example.com" auth_password: "your-smtp-password" send_resolved: true # 可选:抑制规则(避免重复告警) inhibit_rules: - source_match: severity: "critical" target_match: severity: "warning" equal: ["alertname", "dev", "instance"]
关键规则
route节点下仅支持单数receiver,用来指定当前路由的默认告警接收方;若需同时推送多个渠道,需定义包含多渠道配置的组合接收者,或通过子路由拆分配置。- 所有具体的告警渠道(Slack、Email等)必须在顶级
receivers列表中定义,每个接收者需设置唯一name,供路由模块引用。
验证配置合法性
修正后执行以下命令确认配置正确:
amtool config verify alertmanager.yml
内容的提问来源于stack exchange,提问作者Husnain
相关产品推荐
相关产品推荐

