Prometheus 来源的时间序列:如何将空值设置为零?

Posted

技术标签:

【中文标题】Prometheus 来源的时间序列:如何将空值设置为零?【英文标题】:Time series from Prometheus source: how to set nulls as zero? 【发布时间】:2021-11-23 08:52:55 【问题描述】:

在 Docker Grafana 8.1.5 中工作。使用时间序列图,我将PrometheusCounter 源(有一个label)绘制为time series(按标签),并且需要将所有空值/缺失值填充为零。

这是应用于Prometheus counter 源的查询,绘制标签code

my_metriccode!=""

图形显示有效(只需要查看每个标签变体的当前计数器值,以及所选时间范围内的差异),但新的 Grafana time series graph 缺少 Graph (old) 在 @ 下的选项987654331@,因此当出现空值时,它现在以虚线结束。

很遗憾,我无法使用Graph (old) 图表,因为我需要图例值difference,它只能在新的time series 图表中使用。

我尝试将or on() vector(0) 添加到查询的末尾,但该条件并未应用于每个标签变体的数据系列,而是添加了一个全部用零填充的新数据系列...

感谢您的任何建议!

【问题讨论】:

【参考方案1】:

我也遇到了这个问题,我不能只使用你提到的or on() vector(0),因为主查询返回NaN。在我的情况下,我被零除。

我可以通过首先评估查询是否具有值>= 0 然后使用or on() vector(0) 来解决它。尝试类似的方法:

((my_metriccode!="") >= 0) OR on() vector(0)

【讨论】:

这在我的情况下无法将所有空值/缺失值填充为零,它还只是添加了另一个由零组成的单独行 嘿@pete19,你能把结果的截图贴出来吗?仅通过描述来理解您的问题有点困难。 Felipe,这适用于某些查询,但要注意,如果结果用于其他函数,则通常需要将查询包装在一组额外的括号中 ()... @pete19 我很高兴你成功了。我用你的信息编辑了我的答案。如果您认为我的帖子可以回答您的问题,您愿意接受作为答案吗?提前谢谢你

以上是关于Prometheus 来源的时间序列:如何将空值设置为零?的主要内容,如果未能解决你的问题,请参考以下文章

如何将空值附加到列表的开头? [复制]

如何将空值存储为整数字段

Oracle nvl函数无法按预期工作

你如何将空值插入sql server

如何将空值显式插入参数化查询?

如何通过实体框架将空值传递给存储过程?