我正在与Kubernetes的普罗米修斯合作,并试图将警报发送到松弛状态。问题是警报正在发射,但是没有被发送到松弛状态。 我正在使用Prometheus 1.18.1和Kubernetes 1.9。
目前我只是试图发出内置的'DeadMansSwitch'警报,我可以在UI中看到它正在发射。我的alertmanager.yaml(在prometheus-operator / contrib / 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文件中进行了更改?
答案 0 :(得分:1)
tl; dr = yaml是如此格格不入,以至于我对它进行了彻底的解析。
由两位无效的YAML引起:缩进和使用"智能撇号&#34 ;;你有:
receivers:
- name: ‘slack’
slack_configs:
但它应该是:
receivers:
- name: 'slack'
slack_configs:
否则,在YAML中,它会将name
转换为具有slack_configs
属性的对象,而不是包含两个属性name
和{{1}的匿名对象}
每个地方都有"引用"你发布的配置中的slack_configs
字符串,你已经使用了智能撇号,从YAML的观点来看,字符串文字为slack
而不是你的意思(它是'一个单独的问题,为什么你引用字符串开头,因为它与"\u2018slack\u2019"
或5m
没有任何区别。
你还有一个普通的ascii撇号引导DeadMansSwitch
但是一个聪明的撇号关闭了那个字符串。
无限方便的remarshal项目包含slack_api_url:
,非常适合发现奇怪的YAML主题