如何在 PromQL 中将零值(向量(0)与度量值合并

Posted

技术标签:

【中文标题】如何在 PromQL 中将零值(向量(0)与度量值合并【英文标题】:How to merge zero values (vector(0) with metric values in PromQL 【发布时间】:2021-01-29 14:54:44 【问题描述】:

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

如您所知,Prometheus 会隐藏缺失值。

但是,我需要在我的指标值中缺少那些值,因此我添加到我的舞会查询or vector(0)

例如:

flexlm_feature_used_usersapp="vendor_lic-server01",name="Temp" or vector(0)

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

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

编辑:

我需要分组,至少对于用户和名称标签,所以 vector(0) 可能不是这里的最佳选择?

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

请帮忙。

【问题讨论】:

【参考方案1】:

如果您使用带有标签的Absent 将值从1 转换为零会有所帮助,请使用clamp_max

( Metricslabel=“a” OR clamp_max(absent(notExistslabel=“a”),0))
+
( Metrics2label=“a” OR clamp_max(absent(notExistslabel=“a”),0)

Vector(0) 没有标签。

clamp_max(Absent(notExistslabel=“a”,0) 为 0,带标签。

【讨论】:

【参考方案2】:

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

(sum by xyz(flexlm_feature_used_usersapp="vendor_lic-server01",name="Temp1" + sum by xyz(flexlm_feature_used_usersapp="vendor_lic-server01",name="Temp2") or

sum by xyz(flexlm_feature_used_usersapp="vendor_lic-server01",name="Temp1" or

sum by xyz(flexlm_feature_used_usersapp="vendor_lic-server01",name="Temp2"

【讨论】:

【参考方案3】:

如果你使用sum(flexlm_feature_used_usersapp="vendor_lic-server01",name="Temp" or vector(0)),你应该得到你想要的东西,但你将失去使用group by 的可能性,因为vector(0) 没有任何标签。

【讨论】:

你说得对,但我需要分组。所以任何其他解决方案都可能没有向量(0),因为我必须至少获得用户和名称标签 我认为您应该能够使用记录规则手动添加它们,但是如果值列表很长和/或不固定,这可能会很痛苦。但是最好找到一种方法让指标始终包含一个值,即使是 0。

以上是关于如何在 PromQL 中将零值(向量(0)与度量值合并的主要内容,如果未能解决你的问题,请参考以下文章

Prometheus 查询语言

Prometheus的PromQL纪要

spark 类标签的稀疏 特征向量

用先前的非零值替换向量中的所有零

如何在PBI中将计算得出的度量值放入“新表”中

如何在 DBSCAN 中将包含分类数据和连续数据的数据集放入用户定义的度量函数中?