Я разрабатываю приборную панель, которая принимает все показания Alertmanager и обрабатывает их. Я искал уникальное поле в полезной нагрузке запроса, чтобы создать уникальный внешний идентификатор предупреждения в моей базе данных. Полезные данные запроса выглядят примерно так:
{
"status": "firing",
"labels": {
"alertname": "",
"app": "",
"cluster": "",
"deployed_location": "",
"instance": "",
"job": "",
"kubernetes_namespace": "",
"kubernetes_pod_name": "",
"pod_template_hash": "",
"release": "",
"replica": "",
"severity": ""
},
"annotations": {
"description": "",
"summary": ""
},
"startsAt": "",
"endsAt": "",
"generatorURL": "",
"fingerprint": ""
}
Сначала я использовал поле generatorURL
, но потом понял, что много разных предупреждений имеют одинаковое значение для generatorURL
. Я пытался fingerprint
, и ситуация намного лучше. Однако у меня есть случаи, когда от 2 до 15 предупреждений имеют одинаковые fingerprint
.
Мне интересно:
- Неужели в запросах Alertmanager нет уникального поля?
- Природа логики Alertmanager (или моих предупреждений) состоит в том, что ряд предупреждений создается с одним и тем же
fingerprint
, и я должен просто иметь дело с ним и обрабатывать его на своей стороне, т.е. не создавать инцидент в моей БД, если заданныйfingerprint
уже используется. Я также беспокоюсь, что если я установлюunique=True
в своей модели предупреждений, некоторые новые предупреждения с таким же отпечатком пальца будут пропущены ...
fingerprint
,alertName
иstartsAt
для создания уникального идентификатора, и я все еще получаю повторяющиеся предупреждения. - person mhyousefi   schedule 18.01.2020