prometheus如何统计多进程下的QPS?

How prometheus statistics QPS in multi-process?

我将我的 Web 服务器部署在具有多个副本的 k8s 上。我使用 counter 来保存总请求。

  1. Pods共享同一个计数器,所以计数器值会被覆盖,我应该为不同的pods使用不同的计数器吗?
  2. 如果 pod 重新创建,计数器从 0 开始,如何处理?

我很困惑。我的用法有误吗?

由于 pods 必须单独抓取,因此相同的指标会有不同的时间序列。 如果您有一个名为 requests 的指标,那么您将拥有(详细信息取决于您的设置)时间序列:

requests{instance="$pod_ip1:$port",pod="foo-1"}
requests{instance="$pod_ip2:$port",pod="foo-2"}

因此您的应用程序应该发出相同的指标 - 它将为每个 pod 单独存储。

Prometheus 计数器旨在处理“计数器重置”。主要思想是 始终 通过支持计数器重置的函数处理此类指标。 此类函数中最受欢迎的是 rate。当 rate 遇到重置(计数器下降)时,它将进行适当的计算(假设数据点之间存在重置)。

请记住始终先应用此类函数 (rateincreaseirate),然后再进行任何聚合。 示例查询:

sum( rate(requests[5m]) )

将为所有 pods 组合

提供平均 rps 值(在过去 5 分钟内)