Prometheus警报管理器不发送警报

时间:2018-04-25 05:37:21

标签: kubernetes prometheus-alertmanager

我正在与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文件中进行了更改?

1 个答案:

答案 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主题