【发布时间】:2018-06-21 11:37:33
【问题描述】:
我发现对于某些图表,我从 Prometheus 获得双倍值,其中应该只是一个:
我使用的查询:
increase(signups_count[4m])
抓取间隔设置为recommended maximum 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 中的 Prometheus)倾向于在查询中设置不同的 step,对于不熟悉 Prometheus 内部工作的人来说,我得到了一个非常意外的结果。
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() 就是a syntactic sugar for a specific use-case of the rate() function,我想在这种情况下它应该是这样工作的。
如何避免这种情况?我如何让 Prometheus/Grafana 在大多数情况下向我展示一个对一个,两个对两个?除了增加抓取间隔(这将是我最后的手段)。
我了解 Prometheus isn't an exact sort of tool,所以如果我不是在任何时候,但在大多数时候都有一个好的数字,我就可以了。
我还缺少什么?
【问题讨论】:
-
试试MetricsQL。它提供了
increase()函数,可以为缓慢增加的时间序列返回正确的整数结果。
标签: prometheus