无论 Grafana 上的时间间隔变化如何,都需要评估差异
Posted
技术标签:
【中文标题】无论 Grafana 上的时间间隔变化如何,都需要评估差异【英文标题】:Need to evaluate difference regardless of time Interval change on Grafana 【发布时间】:2021-07-07 07:39:47 【问题描述】:我的 Prometheus 正在暴露当前 30 秒的时间间隔数据。
基础 PromQL:
local_cache_misskind="something"
计算 PromQL:
max_over_time(local_cache_misskind="$interfaceKey" [1m]) - min_over_time(local_cache_misskind="$interfaceKey" [1m])
其中最小时间间隔 = 30s
它对我来说非常好。
当我选择 1m 或较大的时间间隔时。 我开始得到一些我没想到的数据。
这里有一些我需要的东西,因为不同之处在于,
目标公式:相邻两行之间的缓存未命中值之差。
1188745 - 1188671 = 74(第二行差异列)
1188784 - 1188745 = 39(第一行的差异列)
基于使用函数 rate 或 increase 的建议,当我使用高于 30 秒 的间隔时,我发现计数略有不同强>。有什么方法可以将 [1m] 与 Grafana 区间对齐?
使用rate或increase函数,
1188784 - 1188745 = 39,但它返回 38。
1188745 - 1188671 = 74,但它返回 76。
即使我在选择12小时时选择15s作为“最小时间间隔”,“最小时间间隔”在内部变成了30s ,当我选择持续时间24小时或更多时,“最小时间间隔”内部变成1m。
我知道有一个变量可以跟踪[$__interval],但不确定我应该如何使用它来获得准确的计数返回。
我正在寻找编写相应 PromQL 以获得差异的建议。
【问题讨论】:
【参考方案1】:您真正想要做的是计算在一段时间内发生了多少缓存未命中。 Prometheus 提供给方法:
a) rate(local_cache_misskind="$interfaceKey" [1m])
计算每秒的速率,此计数器向上计数。
b) increase(local_cache_misskind="$interfaceKey" [1m])
计算该时间范围内计数器的绝对增量。
两者或多或少都做同样的事情(事实上,如果你做类似rate(local_cache_misskind="$interfaceKey" [1m]) * 60)
的事情,你应该得到相同的数字然后increase(local_cache_misskind="$interfaceKey" [1m])
。这两种方法都可以识别计数器何时重置(例如,当应用程序重新启动并可以给出即使绝对数量减少了,你也得到了正确的结果(你的方法会返回错误的结果)。
【讨论】:
根据您提出的公式,我仍然面临计数方面的一些差异。有没有办法获得准确的差异?我已根据您的建议更新了我的基本问题部分。感谢 Baitinger 的热心建议。 派生指标从来都不是绝对绝对的,但足以看到您希望看到的趋势(例如缓存命中率随时间上升或下降等。您可能想要采取的一件事考虑到缓存未命中与缓存查询未命中/(未命中+命中)的关系。此百分比作为您想要监控的值。以上是关于无论 Grafana 上的时间间隔变化如何,都需要评估差异的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 cpu-memory 使用指标可视化 grafana 上的结果?