随着时间的推移使用 catalina_globalrequestprocessor_requestcount 作为自定义指标 HPA 的指标

问题描述 投票:0回答:1

有没有办法使用

catalina_globalrequestprocessor_requestcount
指标(或另一个 MBean 指标)来跟踪请求作为速率(例如,每秒请求数)以与 HPA 一起使用?

背景

我们在 GKE 上运行的 Java 应用程序中使用具有自定义指标的 HPA(水平 Pod 自动缩放器)。设置如下:

  1. 我们部署 JMX 代理 以公开 Tomcat 应用程序中的 MBean 指标。
  2. 托管 Prometheus 配置为收集这些指标。
  3. Stackdriver 适配器 允许 HPA 利用这些自定义指标来做出扩展决策。

到目前为止,此设置运行良好,并且我们已经使用堆大小和线程计数等指标看到了积极的结果。

挑战:使用 HPA 请求指标

我们希望根据传入请求的数量进行扩展,因此我们尝试使用

catalina_globalrequestprocessor_requestcount
指标作为阈值。

但是,这种方法不起作用,因为该指标是累积的——它从一开始就跟踪请求总数,并随着时间的推移不断增加。这种单调增加意味着即使在没有任何实际流量峰值的正常负载水平下,指标最终也会超过阈值。

示例问题

下面是来自 Google Cloud Metrics Explorer 的图表,显示了

catalina_globalrequestprocessor_requestcount
指标的持续上升趋势:

Graph from Google Cloud Metrics Explorer showing how the metric catalina_globalrequestprocessor_requestcount only increases over time

我们已经尝试过

我们尝试了以下指标配置:

  • prometheus.googleapis.com/catalina_globalrequestprocessor_requestcount/unknown
  • prometheus.googleapis.com/catalina_globalrequestprocessor_requestcount/unknown:counter

两种配置都表现出相同的增加行为。

问题

有没有办法使用此指标(或另一个 MBean 指标)来跟踪请求作为与 HPA 一起使用的速率(例如,每秒请求数)?

HPA 配置示例

这是我们使用的 HPA 对象的示例:

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: my-autoscale
  namespace: my-ns
spec:
  maxReplicas: 3
  metrics:
  - pods:
      metric:
        name: prometheus.googleapis.com|catalina_globalrequestprocessor_requestcount|unknown:counter
      target:
        averageValue: 200
        type: AverageValue
    type: Pods
  minReplicas: 1
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: my-deployment
kubernetes prometheus google-kubernetes-engine google-cloud-stackdriver hpa
1个回答
0
投票

您是否已经尝试过使用普罗米修斯的速率指标?

率(catalina_globalrequestprocessor_requestcount[1m])

该指标根据 1 分钟窗口内的变化计算每秒的请求数。该比率适合捕捉近期变化,而不会对短期波动过于敏感。

在Prometheus中定义Rate:首先,根据rate()函数配置一个新的Prometheus指标。您想要基于 1 分钟间隔的每秒速率,因此在 Prometheus 中使用以下查询:

确保 Prometheus 将此新速率指标导出到 Google Cloud Managed Prometheus。

修改 HPA YAML 配置,即更新您的 HPA 以引用此基于速率的指标。

© www.soinside.com 2019 - 2024. All rights reserved.