我正在使用 flexlm_exporter 将我的许可证使用情况导出到 Prometheus,并从 Prometheus 导出到自定义服务(不是 Grafana)。
如您所知,普罗米修斯隐藏了缺失的值。
但是,我的指标值中需要这些缺失值,因此我将其添加到我的舞会查询中
or vector(0)
例如:
flexlm_feature_used_users{app="vendor_lic-server01",name="Temp"} or vector(0)
此查询添加一个值为零的空指标。
我的问题是是否有办法将零向量与每个度量值合并?
编辑:
我需要分组,至少对于用户和名称标签,所以向量(0)可能不是这里的最佳选择?
我在不同的 StackOverflow 线程中尝试了多种解决方案,但是没有任何效果。
请帮忙。
如果您使用带有标签的
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,带标签。
如果你这样做
sum(flexlm_feature_used_users{app="vendor_lic-server01",name="Temp"} or vector(0))
你应该得到你正在寻找的东西,但你将失去做 group by
的可能性,因为 vector(0)
没有任何标签。
我需要一个类似的东西,最后把选项弄平了。对我有用的是:
(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"}
在普罗米修斯中,没有一种简单的通用方法可以用零来填充返回的时间序列中的空白。但这可以通过
VictoriaMetrics中的
default
运算符轻松完成:
flexlm_feature_used_users{app="vendor_lic-server01",name="Temp"} default 0
q default N
使用从 N
返回的每个时间序列的给定默认值 q
填充空白。请参阅MetricsQL 文档了解更多详细信息。
重复使用系列的部分内容并将它们与 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]))