微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有范围向量的标签对Prometheus的查询

如何解决带有范围向量的标签对Prometheus的查询

我在我的应用程序中定义了许多计数器(使用java千分尺),并且为了触发警报,我将要监视的计数器标记为“错误”:“警报”,以便进行类似{{1}的查询}将生成多个范围向量:

{error="alert"}

我无法控制计数器的名称,只能将标签添加到要在警报中使用的计数器。我要发出的警报是,如果所有标有error =“ alert”的计数器在一小时内增加超过3,那么我可以使用这种查询 error_counter_component1{error="alert",label2="random"} error_counter_component2{error="alert",label2="random2"} error_counter_component3{error="none",label2="random3"} ,但是在Prometheus中却得到了令人讨厌的错误:{ {1}}

是否可以合并两个范围向量,或者我应该在计数器名称中包含某种标签?还是应该为错误设置一个计数器,并且标记应指定类似以下内容的来源:

increase({error="alert"}[1h]) > 3

解决方法

带有source="componentX"标签的版本更适合Prometheus数据模型。假设error_counter度量标准实际上是一个度量标准,并且与source标签值不同,它将具有相同的标签等(例如,它是由同一库或框架发出的)。

添加类似use_in_alerts标签的东西不是一个很好的解决方案。这样的标签不能识别时间序列。 我要说的是,在要构建警报查询的地方放一些要发出警报的组件列表,并动态创建单独的警报规则(无需在原始数据中添加此类标签)。 另一种解决方案是拥有一个单独的伪度量,该伪度量将被用于提供有关组件的元数据,例如:

   component_alert_on{source="component2"} 1

和。将其组合到警报规则中,仅在您需要的组件上发出警报。它可以以任何可能的方式生成,但是一种可能是将其添加到静态记录规则中。这具有使警报查询复杂化的缺点。 但是当然use_in_alerts标签也可能会起作用(至少在您仅针对该指标发出警报时)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。