Alertmanager 由于“解组错误:第 19 行:在 config.plain 类型中找不到字段匹配器”而失败
Posted
技术标签:
【中文标题】Alertmanager 由于“解组错误:第 19 行:在 config.plain 类型中找不到字段匹配器”而失败【英文标题】:Alertmanager failing due to "unmarshal errors: line 19: field matchers not found in type config.plain" 【发布时间】:2021-08-18 12:06:03 【问题描述】:我正在尝试将自定义警报路由配置添加到我的警报管理器中,作为 kube-prometheus-stack 的一部分部署。但是 prometheus-operator pod 在尝试生成 alertmanager configmap 时,由于以下错误而失败:
level=error ts=2021-05-31T06:29:38.883470881Z caller=klog.go:96 component=k8s_client_runtime func=ErrorDepth msg="Sync \"infra-services/prometheus-operator-kube-p-alertmanager\" failed: provision alertmanager configuration: base config from Secret could not be parsed: yaml: unmarshal errors:\n line 19: field matchers not found in type config.plain"
我还在 alertmanager 容器中使用 amtool 验证了相同的内容,这给出了相同的错误。这是我的 alertmanager.yml 文件:
global:
resolve_timeout: 5m
slack_api_url: https://hooks.slack.com/services/xxxxxx/yyyyy/zzzzzzzzzzz
receivers:
- name: slack-notifications
slack_configs:
- channel: '#alerts'
send_resolved: true
text: ' template "slack.myorg.text" . '
- name: blackhole-receiver
route:
group_by:
- alertname
group_interval: 5m
group_wait: 30s
receiver: blackhole-receiver
repeat_interval: 12h
routes:
- matchers:
- severity=~"warning|critical"
receiver: slack-notifications
templates:
- /etc/alertmanager/config/*.tmpl
我已经按照https://prometheus.io/docs/alerting/latest/configuration/ 和https://github.com/prometheus/alertmanager/blob/master/doc/examples/simple.yml 编写了我的简单警报管理器配置。
【问题讨论】:
【参考方案1】:尝试改变:
routes:
- matchers:
- severity=~"warning|critical"
receiver: slack-notifications
收件人:
routes:
- match_re:
severity: "warning|critical"
receiver: slack-notifications
【讨论】:
这绝对立即为我解决了这个问题。但我发现根据 prometheus.io/docs/alerting/latest/configuration/#route 不推荐使用“match_re”。使用它是否安全,因为警报管理器的未来版本可能会删除该字段?另外,任何想法为什么不允许“匹配器”,或者以前的配置有什么问题? 好问题 :-(【参考方案2】:升级到(至少)quay.io/prometheus/alertmanager:v0.22.2,它肯定会工作。
您不应继续使用 match_re,因为它已被弃用。
【讨论】:
以上是关于Alertmanager 由于“解组错误:第 19 行:在 config.plain 类型中找不到字段匹配器”而失败的主要内容,如果未能解决你的问题,请参考以下文章
linux(centos8):prometheus使用alertmanager发送报警邮件(prometheus 2.18.1/alertmanager 0.20.0)
linux(centos8):prometheus使用alertmanager发送报警邮件(prometheus 2.18.1/alertmanager 0.20.0)