作者:呢嘚吖頭ing_311 | 来源:互联网 | 2023-01-01 18:25
我发现对于某些图表,我从普罗米修斯得到的双打值应该只是:
查询我使用:
increase(signups_count[4m])
刮擦间隔设置为建议的最大值 2分钟.
如果我查询存储的实际数据:
curl -gs 'localhost:9090/api/v1/query?query=(signups_count[1h])'
"values":[
[1515721365.194, "579"],
[1515721485.194, "579"],
[1515721605.194, "580"],
[1515721725.194, "580"],
[1515721845.194, "580"],
[1515721965.194, "580"],
[1515722085.194, "580"],
[1515722205.194, "581"],
[1515722325.194, "581"],
[1515722445.194, "581"],
[1515722565.194, "581"]
],
我看到只有两次增加.事实上,如果我查询这些时间,我会看到预期的结果:
curl -gs 'localhost:9090/api/v1/query_range?step=4m&query=increase(signups_count[4m])&start=1515721965.194&end=1515722565.194'
"values": [
[1515721965.194, "0"],
[1515722205.194, "1"],
[1515722445.194, "0"]
],
但是Grafana(以及GUI中的普罗米修斯)倾向于step
在查询中设置不同,对于不熟悉普罗米修斯内部工作的人,我会得到一个非常意外的结果.
curl -gs 'localhost:9090/api/v1/query_range?step=15&query=increase(signups_count[4m])&start=1515721965.194&end=1515722565.194'
... skip ...
[1515722190.194, "0"],
[1515722205.194, "1"],
[1515722220.194, "2"],
[1515722235.194, "2"],
... skip ...
知道这increase()
只是函数的特定用例的语法糖rate()
,我想这是应该如何工作的情况.
如何避免这种情况?我如何让Prometheus/Grafana给我看一些,两次两次,大部分时间?除了通过增加刮擦间隔(这将是我的最后手段).
我知道普罗米修斯不是一种精确的工具,所以如果我不是在任何时候都有一个好的数字,但大部分时间都可以.
我还缺少什么?
1> brian-brazil..:
这称为混叠,是信号处理中的基本问题.您可以通过提高采样率来改善这一点,4米范围有点短,2米范围.尝试10米范围.
例如,在1515722220执行的查询仅查看580@1515722085.194和581@1515722205.194样本.这是2分钟内增加1,超过4分钟的推断是增加2 - 这是预期的.
如果您希望100%准确,您需要日志,任何基于指标的监控系统都会有类似的工件.