prometheus如何统计多进程下的QPS?
How prometheus statistics QPS in multi-process?
我将我的 Web 服务器部署在具有多个副本的 k8s 上。我使用 counter
来保存总请求。
- Pods共享同一个计数器,所以计数器值会被覆盖,我应该为不同的pods使用不同的计数器吗?
- 如果 pod 重新创建,计数器从 0 开始,如何处理?
我很困惑。我的用法有误吗?
由于 pods 必须单独抓取,因此相同的指标会有不同的时间序列。
如果您有一个名为 requests
的指标,那么您将拥有(详细信息取决于您的设置)时间序列:
requests{instance="$pod_ip1:$port",pod="foo-1"}
requests{instance="$pod_ip2:$port",pod="foo-2"}
因此您的应用程序应该发出相同的指标 - 它将为每个 pod 单独存储。
Prometheus 计数器旨在处理“计数器重置”。主要思想是 始终 通过支持计数器重置的函数处理此类指标。
此类函数中最受欢迎的是 rate
。当 rate
遇到重置(计数器下降)时,它将进行适当的计算(假设数据点之间存在重置)。
请记住始终先应用此类函数 (rate
、increase
、irate
),然后再进行任何聚合。
示例查询:
sum( rate(requests[5m]) )
将为所有 pods 组合
提供平均 rps 值(在过去 5 分钟内)
我将我的 Web 服务器部署在具有多个副本的 k8s 上。我使用 counter
来保存总请求。
- Pods共享同一个计数器,所以计数器值会被覆盖,我应该为不同的pods使用不同的计数器吗?
- 如果 pod 重新创建,计数器从 0 开始,如何处理?
我很困惑。我的用法有误吗?
由于 pods 必须单独抓取,因此相同的指标会有不同的时间序列。
如果您有一个名为 requests
的指标,那么您将拥有(详细信息取决于您的设置)时间序列:
requests{instance="$pod_ip1:$port",pod="foo-1"}
requests{instance="$pod_ip2:$port",pod="foo-2"}
因此您的应用程序应该发出相同的指标 - 它将为每个 pod 单独存储。
Prometheus 计数器旨在处理“计数器重置”。主要思想是 始终 通过支持计数器重置的函数处理此类指标。
此类函数中最受欢迎的是 rate
。当 rate
遇到重置(计数器下降)时,它将进行适当的计算(假设数据点之间存在重置)。
请记住始终先应用此类函数 (rate
、increase
、irate
),然后再进行任何聚合。
示例查询:
sum( rate(requests[5m]) )
将为所有 pods 组合
提供平均 rps 值(在过去 5 分钟内)