Отправка настраиваемых полей в оповещениях прометея в pagerduty

У меня есть сценарий, в котором мне нужно отправить метку текущего времени из Прометея в Пагердути. Мне нужно получить доступ к текущей отметке времени из пользовательских данных в Pagerduty, чтобы написать правила событий на основе текущего времени.

В настоящее время я могу видеть три поля в пользовательских данных в Pagerduty ["срабатывание", "num_firing", "num_resolved"]. Все детали, относящиеся к предупреждению, находятся внутри поля "срабатывания", но в виде одной строки.

Я думал о добавлении метки времени к меткам в правилах событий Prometheus, но проблема в том, что я не смогу извлечь это значение из поля "Увольнение", поскольку оно не в структурированном формате.

Детали события в Пагердути, полученные от Прометея:

{
 "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 или через правила оповещения?

1 ответ

Стандартный способ Prometheus для добавления дополнительных метаданных к оповещениям - через аннотации.

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

Это должно добавить аннотацию метки времени к оповещению о срабатывании.

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

Я решил ту же проблему, что и выше. Приветствия.!

Вы можете напрямую добавить это как пользовательскую деталь в alertmanager.yaml .

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

Обратите внимание, что это добавляет время с точки зрения alertmanager, поэтому может содержать небольшую задержку.

Другие вопросы по тегам