跨多个实例查询 prometheus 计数器
Posted
技术标签:
【中文标题】跨多个实例查询 prometheus 计数器【英文标题】:Query prometheus counter across multiple instances 【发布时间】:2021-07-09 08:18:51 【问题描述】:我得到了几个暴露 Prometheus 计数器的实例,并希望汇总一段时间内的所有值。我一直在尝试很多不同的东西,但都无法奏效。
假设我的指标名称是 request_total。该指标具有path
和status_code
的方面。我的目标是得到这个计数器的总和,而不用它的任何方面过滤它。如果我运行sum by (instance) (request_total)
,我会从 Prometheus 得到以下图表:
正如我们所见,我的计数器似乎对每个实例都是正确的。但是,如果我尝试将所有这些值与sum (request_total)
相加,我会得到以下结果:
我对 Prometheus 还很陌生,但我希望计数器实际上不会被重置并且会更好地累积。你能帮我告诉我这里缺少什么吗?
提前致谢
【问题讨论】:
【参考方案1】:是的sum(request_total)
应该可以工作并在所有实例中显示结果,根据您的图表,这正是它所做的:
直到上午 8:30,有两个实例报告了 4 个和 11 个请求,总共 15 个,您可以在第二张图中看到。
从上午 8 点 33 分到上午 8 点 42 分,只有一个实例报告了一个请求,然后另一个实例也开始报告一个请求,在第二个累积图上显示为从 1 到 2。
【讨论】:
您好,尼尔,谢谢您的回答。现在我明白为什么我会得到这个结果。你知道我应该查询什么来获得一段时间内的累积值吗?就像在我的示例中得到一个值为 15、16、18 的图表。提前致谢 @vesna IIRC 执行以下操作:sum(rate(request_total[5m]))
将在 5 分钟的时间窗口内为您提供每秒平均请求数
如果您使用 Prometheus UI,您可以切换到“图形”模式,然后您还可以设置要查看多长时间的偏移量
好吧,我实际上弄清楚了我的问题来自哪里。问题是我的计数器在启动时没有被重置,这与这个问题有关:github.com/prometheus/prometheus/issues/1673。我从这个问题中选择了一个解决方法,它似乎运作良好。非常感谢您花时间回答我的问题!以上是关于跨多个实例查询 prometheus 计数器的主要内容,如果未能解决你的问题,请参考以下文章
如何使用联合从多个 Prometheus 实例(每个使用 instance="localhost:9090")中收集 Prometheus 的指标