Jay*_*Xue 8 alert rules prometheus prometheus-alertmanager
假设我有一个request_failures用户指标。对于每个用户,我向指标添加一个唯一的标签值。因此,对于用户u1,当请求失败两次时,我得到以下指标:
request_failures{user_name="u1"} 2
Run Code Online (Sandbox Code Playgroud)
我还有一条规则,当出现新的失败时就会触发。其表达式为:
increase(request_failures[1m]) > 0
Run Code Online (Sandbox Code Playgroud)
这对于已经遇到故障的用户来说非常有效。例如,当 u1 遇到第三次失败时,规则就会触发。
当新用户u2的请求失败时,我得到的指标如下:
request_failures{user_name="u1"} 2
request_failures{user_name="u2"} 1
Run Code Online (Sandbox Code Playgroud)
现在的问题是警报规则不会针对u2触发。该规则似乎无法识别“新指标”,尽管所有三个指标都是相同的request_failures,只是具有不同的标签。
任何人都可以指出我应该如何构建规则?
正如 @MichaelDoubez 已经提出的那样,increase()不将新创建的指标视为价值增加。不幸的是,同样适用于changes(). 这是有原因的,例如缺少刮擦,但仍然可以通过查询来解决。
increase(request_failures[10m]) > 0
or
( request_failures unless request_failures offset 10m )
Run Code Online (Sandbox Code Playgroud)
当有新指标时,第二部分(以 开头or)将触发 10 分钟(由 定义)。offset
这应该是答案: https: //www.robustperception.io/dont-put-the-value-in-alert-labels。
关键是标签不应包含变量值,因为它是指标身份的一部分。解决方案是将用户名添加为注释而不是指标标签。
| 归档时间: |
|
| 查看次数: |
4355 次 |
| 最近记录: |