【发布时间】:2021-01-01 13:55:34
【问题描述】:
假设我有一个针对用户的指标 request_failures。对于每个用户,我将唯一的标签值添加到指标中。所以对于用户u1,当一个请求失败两次时,我得到以下指标:
request_failures{user_name="u1"} 2
我还有一个规则,当有新的失败时触发。其表达式为:
increase(request_failures[1m]) > 0
这适用于已经遇到故障的用户。例如,当 u1 遇到第三次失败时,触发规则。
当新用户 u2 的请求失败时,我得到的指标如下:
request_failures{user_name="u1"} 2
request_failures{user_name="u2"} 1
现在的问题是警报规则不会为 u2 触发。似乎该规则无法识别“新指标”,尽管所有三个指标都是相同的 request_failures,只是标签不同。
谁能指出我应该如何构建规则?
【问题讨论】:
-
你的意思是只有当用户至少有一次失败时才存在度量标准,并且你的表达式只有在失败增加时才会发出警报,这样你就不会检测到新的失败?
-
当发生新故障(对于新用户)时,会创建一个新指标。所以是的,只有当用户至少有一次失败时,指标(带有用户的特定标签)才存在。是的,我的表达式只有在失败从 1 增加时才会发出警报。问题是当失败发生时(指标从 0 变为 1),没有警报。
-
抱歉,但准确地说-从普罗米修斯的观点来看,您是创建一个新的指标还是一个新的标签值?您的问题可能适用于任何一个,答案大相径庭。
-
我的意图是创建相同的指标(具有相同的名称“request_failures”)但使用新标签。从普罗米修斯的角度来看,似乎有一个“新指标”。我昨天给出了答案(见下文),但我更喜欢使用标签而不是注释。因此,如果您能建议一种方法,我可以继续为不同的用户使用标签,但检测到指标的增加,我将不胜感激。
标签: alert prometheus rules prometheus-alertmanager