【发布时间】:2020-03-22 19:05:10
【问题描述】:
我正在开发一个仪表板,它接收所有 Alertmanager 读数并对其进行处理。我在请求有效负载中查找了一个唯一字段,以在我的数据库中创建一个唯一的外部警报 ID。请求负载如下所示:
{
"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来生成唯一 ID,但我仍然收到重复警报。
标签: prometheus-alertmanager fingerprinting