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)
}

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旷野九思

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值