如何在普罗米修斯中对具有高基数的指标发出警报

Posted

技术标签:

【中文标题】如何在普罗米修斯中对具有高基数的指标发出警报【英文标题】:How to alert on metrics with a high cardinality in prometheus 【发布时间】:2021-02-02 04:36:08 【问题描述】:

当尝试使用表达式 count by(__name__) (__name__=~".+") > 50 创建高度量基数警报时,我收到错误:vector contains metrics with the same labelset after applying rule labels

由于表达式在prometheus中直接使用时有效,我想知道是否有一种实际的方法可以在警报中使用它?

【问题讨论】:

【参考方案1】:

我想我找到了解决这个问题的方法,因为我自己也在尝试。

LT;DR

使用这个 promQL 表达式来提醒度量基数:

label_replace(count by(__name__) (__name__=~".+"), "name", "$1", "__name__", "(.+)") > 50

加长版

Prometheus 错误消息中所述的问题。将度量向量转换为警报向量后,没有标签不同,因此会重复。 这意味着

vector A ( metric_alabel=test, metric_blabel=test )

转换成

vector B ( alert_alabel=test, alert_alabel=test) 

这就是为什么你有重复

(警告:这至少是我的理解) 通过添加具有指标名称本身的新标签,您可以创建一个唯一的标签集。

【讨论】:

以上是关于如何在普罗米修斯中对具有高基数的指标发出警报的主要内容,如果未能解决你的问题,请参考以下文章

如何从普罗米修斯警报中标记松弛通道中的用户

如何以简化的方式编写普罗米修斯复杂警报规则?

普罗米修斯缺席函数

如何在特定时间打盹普罗米修斯警报

如何获取警报计数,在普罗米修斯上一周警报触发了多少次

我们如何编写警报规则与普罗米修斯警报规则的先前值进行比较