无论 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(第一行的差异列)

基于使用函数 rateincrease 的建议,当我使用高于 30 秒 的间隔时,我发现计数略有不同强>。有什么方法可以将 [1m] 与 Grafana 区间对齐?

使用rateincrease函数,

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 上的结果?

如何及时显示石墨计数器的变化(在grafana中)?

如何在grafana中嵌套变量?

您如何使用托管在 AWS 上的 grafana 监控您的响应时间

无论浏览器大小如何,图片都需要并排放置

Grafana 中的散点图