我正在与Prometheus一起在Kubernetes上工作,并试图将警报发送到Slack。问题在于警报正在发射,但没有被送到Slack。我正在使用Prometheus 1.18.1与Kubernetes 1.9。
目前,我只是想发送内置的" DeadMansSwitch"警报,我可以在UI中看到它正在射击。我的AlertManager.yaml(在Prometheus-operator/contry/kube-prometheus/Assets/AlertManager下(看起来像:
global:
resolve_timeout: 5m
slack_api_url: 'https://hooks.slack.com/services/AAABBBCCC/DDDEEEFFF/GGGHHHIII’
route:
group_by: ['job']
group_wait: 1s
group_interval: 1s
repeat_interval: 1s
receiver: ‘slack’
routes:
- match:
alertname: DeadMansSwitch
receiver: ‘slack’
receivers:
- name: ‘slack’
slack_configs:
- channel: ‘#channel-name’
AlertManager UI上的配置显示:
global:
resolve_timeout: 5m
smtp_require_tls: true
pagerduty_url: https://events.pagerduty.com/v2/enqueue
hipchat_api_url: https://api.hipchat.com/
opsgenie_api_url: https://api.opsgenie.com/
wechat_api_url: https://qyapi.weixin.qq.com/cgi-bin/
victorops_api_url: https://alert.victorops.com/integrations/generic/20131114/alert/
route:
receiver: "null"
group_by:
- job
routes:
- receiver: "null"
match:
alertname: DeadMansSwitch
group_wait: 30s
group_interval: 5m
repeat_interval: 12h
receivers:
- name: "null"
templates: []
问题:
- AlertManager UI上的配置与我在AlertManager.yaml文件中的配置不同。此配置(在UI中(来自哪里?
- 在AlertManager.yaml中设置接收器是否不足以发送警报?我在这里错过什么吗?
- 我在错误的YAML文件中进行更改吗?
tl; dr = yaml是如此畸形,以至于我完全被解析了。
这是由两个无效的YAML造成的:凹痕和使用"智能撇号";您有:
receivers:
- name: ‘slack’
slack_configs:
,但应该是:
receivers:
- name: 'slack'
slack_configs:
否则,在yaml中,它将 name
与 slack_configs
属性的属性中,而不是包含两个属性 name
和 slack_configs
您在发布的配置中都有一个"引用" slack
的"引用"字符串,您使用了智能撇号,从YAML的观看点中,该字符串将字符串作为"u2018slacku2019"
而不是您的含义(这是一个独立的问题(您引用了字符串,因为它与5m
或DeadMansSwitch
没有什么不同(。
您也有一个正常的ASCII撇号领导slack_api_url:
,但聪明的撇号关闭了该字符串。
无限方便的远程项目包含yaml2json
,非常适合发现