将普罗米修斯警报中的自定义字段发送到pagerduty

时间:2018-11-26 11:21:08

标签: prometheus prometheus-alertmanager pagerduty

我有一种情况,需要将当前时间戳从 Prometheus 发送到 Pagerduty 。我需要从 Pagerduty 中的自定义详细信息访问当前时间戳,以根据当前时间编写事件规则

目前,我可以在 Pagerduty [“ firing”,“ num_firing”,“ num_resolved”] 中的自定义详细信息中看到三个字段。所有与警报相关的详细信息都在“触发” 字段内,但为单个字符串。

我考虑过将时间戳添加到 Prometheus事件规则中的标签中,但是问题是我将无法从< strong>“射击” 字段,因为它不是结构化格式。

Prometheus 收到的 Pagerduty 中的事件详细信息:

{
 "client": "AlertManager",
 "client_url": "http://********/",
 "description": "[FIRING:1] **************",
 "event_type": "trigger",
 "incident_key": "********",
 "service_key": "********",
 "details": {
  "firing": "Labels:\n - alertname = ******\n - datacenter = *****\n - instance = ******\n - instance_id = ******\n - instance_type = ******\n - job = ******\n - metrics = ******\n - node = ******\n - pod = ******\n - private_ip = ******\n - public_ip = ******\n - service = ******\n - severity = critical\nAnnotations:\n - description = ******\n - summary = ******\nSource: ******\n",
  "num_firing": "1",
  "num_resolved": "0",
  "resolved": ""
 }
}

我需要将当前时间戳添加到与“触发” 字段相同的级别。是否可以通过 Prometheus警报管理器配置或通过警报规则来执行此操作?

3 个答案:

答案 0 :(得分:0)

向警报添加其他元数据的标准方法是通过注释。

- alert: Alert
  for: 5m
  expr: ...
  annotations:
    timestamp: >
      time: {{ query "time()" }}

这应将时间戳记注释添加到触发的警报中。

答案 1 :(得分:0)

- alert: Alert
  for: 5m
  expr: ...
  annotations:
    timestamp: >
      time: {{ with query "time()" }}{{ . | first | value | humanizeTimestamp }} {{ end }}

如上所述,我已经解决了相同的问题。 干杯。!

答案 2 :(得分:0)

您可以将其作为自定义详细信息直接添加到alertmanager.yaml中。

details:
  time: {{ query "time()" }}

请注意,这从Alertmanager的角度来看会增加时间,因此可能会包含少量延迟。