本文主要是介绍Alertmanager 中的指纹字段是唯一的吗?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题:
- Alertmanager 请求中真的没有唯一字段吗?
- Alertmanager 逻辑(或我的警报的性质)的本质是使用相同的
fingerprint
创建了许多警报。我应该处理它并在我这边处理它,即如果给定的fingerprint
不在我的数据库中创建事件已经使用。我也担心如果我设置unique=True
在我的警报模型中,一些具有相同指纹的新警报将被遗漏...
最佳答案
如果你跳转到 alert.Fingerprint()
定义,如 this one ,可以找到fingerprint的实现
所以,alert.Fingerprint()
仅适用于 labels
// labelSetToFingerprint works exactly as LabelsToSignature but takes a LabelSet as
// parameter (rather than a label map) and returns a Fingerprint.
func labelSetToFingerprint(ls LabelSet) Fingerprint {if len(ls) == 0 {return Fingerprint(emptyLabelSignature)}labelNames := make(LabelNames, 0, len(ls))for labelName := range ls {labelNames = append(labelNames, labelName)}sort.Sort(labelNames)sum := hashNew()for _, labelName := range labelNames {sum = hashAdd(sum, string(labelName))sum = hashAddByte(sum, SeparatorByte)sum = hashAdd(sum, string(ls[labelName]))sum = hashAddByte(sum, SeparatorByte)}return Fingerprint(sum)
}
这篇关于Alertmanager 中的指纹字段是唯一的吗?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!