我有一个度量查询,它计算最后d时间范围的值和。
sum(series_selector) - sum(series_selector offset d)这在PromQL上起作用,因为
因此,结果是最后d的时间范围值之和。
问题是,当我将相同的查询写到维多利亚度量标准时,我会得到负面的结果。
我研究了这个问题,并通过在维多利亚度量中使用sum(increase_pure(series_selector[d]))函数来解决这个问题,这与第一个代码几乎相同。但是,我想知道为什么在维多利亚度量标准中,第一个代码不起作用。
发布于 2022-03-17 15:02:55
在以下情况下,Prometheus和VictoriaMetrics都可以返回sum(series_selector) - sum(series_selector offset d)查询的负值:
series_selector,则在持续时间内停止接收新的样本d。那么sum(series_selector)将比sum(series_selector offset d)小,因为序列值不包含在sum(series_selector)中,而包含在sum(series_selector offset d)中。series_selector相匹配,则将其重置为零(又名计数器复位)。在这种情况下,offset d时间序列的值可能大于当前时间的值。由于上述情况,建议使用increase(series_selector[d])而不是series_selector - (series_selector offset d)。增加()函数在VictoriaMetrics中以最预期的方式处理这两种情况。有关更多详细信息,请参阅这篇文章。
https://stackoverflow.com/questions/71493165
复制相似问题