Отправка настраиваемых полей в оповещениях прометея в 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, поэтому может содержать небольшую задержку.