如何将零值(向量(0)与PromQL中的指标值合并

问题描述 投票:0回答:5

我正在使用 flexlm_exporter 将我的许可证使用情况导出到 Prometheus,并从 Prometheus 导出到自定义服务(不是 Grafana)。

如您所知,普罗米修斯隐藏了缺失的值。

但是,我的指标值中需要这些缺失值,因此我将其添加到我的舞会查询中

or vector(0)

例如:

flexlm_feature_used_users{app="vendor_lic-server01",name="Temp"} or vector(0)

此查询添加一个值为零的空指标。

我的问题是是否有办法将零向量与每个度量值合并?

编辑:

我需要分组,至少对于用户和名称标签,所以向量(0)可能不是这里的最佳选择? Example query with a specific user with missing values and zero vector

我在不同的 StackOverflow 线程中尝试了多种解决方案,但是没有任何效果。

请帮忙。

monitoring prometheus promql
5个回答
18
投票

如果您使用带有标签的

Absent
将值从 1 转换为零,将会有所帮助,请使用
clamp_max

( Metrics{label=“a”} OR clamp_max(absent(notExists{label=“a”}),0))
+
( Metrics2{label=“a”} OR clamp_max(absent(notExists{label=“a”}),0)

Vector(0)
没有标签。

clamp_max(Absent(notExists{label=“a”},0)
为 0,带标签。


3
投票

如果你这样做

sum(flexlm_feature_used_users{app="vendor_lic-server01",name="Temp"} or vector(0))
你应该得到你正在寻找的东西,但你将失去做
group by
的可能性,因为
vector(0)
没有任何标签。


2
投票

我需要一个类似的东西,最后把选项弄平了。对我有用的是:

(sum by xyz(flexlm_feature_used_users{app="vendor_lic-server01",name="Temp1"} + sum by xyz(flexlm_feature_used_users{app="vendor_lic-server01",name="Temp2"}) or

sum by xyz(flexlm_feature_used_users{app="vendor_lic-server01",name="Temp1"} or

sum by xyz(flexlm_feature_used_users{app="vendor_lic-server01",name="Temp2"}

1
投票

在普罗米修斯中,没有一种简单的通用方法可以用零来填充返回的时间序列中的空白。但这可以通过

VictoriaMetrics
中的 default 运算符轻松完成:

flexlm_feature_used_users{app="vendor_lic-server01",name="Temp"} default 0

q default N
使用从
N
返回的每个时间序列的给定默认值
q
填充空白。请参阅MetricsQL 文档了解更多详细信息。


0
投票
  • VictoriaMetrics 方法不适用于 prometheus
  • “clamp_max”方法只保留已知的标签
  • 其他方法看起来相当复杂

重复使用系列的部分内容并将它们与 0 相乘将有效地产生具有原始系列的所有正确标签的向量(0)。 只需将向量放入

min
聚合中,您就会得到正确的默认值 0(当然假设只有正值)。

在示例中,假定存在 Grafana 变量

$__interval
- 如果需要,可将其替换为任何特定间隔。

显示保留所有标签优点的一般示例:

min(series{label="a"} or 0 * min_over_time(series{label="a"}[$__interval])) by (anotherLabel)

回答问题的具体例子:

min(flexlm_feature_used_users{app="vendor_lic-server01",name="Temp"} or 0 * min_over_time(flexlm_feature_used_users{app="vendor_lic-server01",name="Temp"}[$__interval]))

© www.soinside.com 2019 - 2024. All rights reserved.