pet*_*e19 9 counter grafana prometheus
使用 Docker Grafana 8.1.5。使用时间序列图,我将一个Prometheus Counter源(有一个label)绘制为time series(按标签),并且需要将所有 null/缺失值填充为零。
这是应用于源的查询Prometheus counter,绘制标签code:
my_metric{code!=""}
Run Code Online (Sandbox Code Playgroud)
图形显示有效(只需查看每个标签变体的当前计数器值,以及所选时间范围内的差异),但新的 Grafanatime series graph缺少Graph (old)下的选项Display > Stacking and null value > null value: null as zero,因此现在在出现空值。
不幸的是,我无法使用Graph (old)图表,因为我需要图例值difference,该图例值仅在新图表中可用time series。
我尝试添加or on() vector(0)到查询的末尾,但条件不会应用于每个标签变体的数据系列,而是添加一个全部填充零的新数据系列...
感谢您的任何建议!
Fel*_*ipe 20
我也遇到了这个问题,我无法仅or on() vector(0)按照您提到的方式使用,因为主查询正在返回NaN。就我而言,我除以零。
我可以通过首先评估查询是否有值>= 0然后使用or on() vector(0). 尝试类似的事情:
((my_metric{code!=""}) >= 0) OR on() vector(0)
Run Code Online (Sandbox Code Playgroud)
val*_*ala 12
以下技术可用于填充查询返回的单个时间序列中的空白q:
sum(q) or vector(0)
Run Code Online (Sandbox Code Playgroud)
被q包装成 是sum()为了删除返回的时间序列的所有标签q,因此时间序列可以vector(0)根据运算符的匹配规则or与时间序列进行匹配。sum()不带:的查询q or on() vector(0)将在图表上返回两个时间序列,而不是单个时间序列:一个时间序列具有q自己的一组标签,另一个时间序列具有零标签和零值,其中q时间序列包含间隙。
q不幸的是,如果返回具有不同标签集的多个时间序列,Prometheus 无法提供用零填充空白的简单功能。其他类似 Prometheus 的解决方案,例如 VictoriaMetrics(我正在研究它)default为这种情况提供了操作符。例如,以下MetricsQL查询将从 中返回的所有时间序列用零填充空白q:
q default 0
Run Code Online (Sandbox Code Playgroud)