すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:ARMS Application Monitoring を使用した HPA ベースの伸縮自在なスケーリング

最終更新日:Aug 21, 2026

API トラフィックが急増した際に、アプリケーションが追随できるよう迅速にスケールする必要があります。このガイドでは、ARMS Application Monitoring によって収集されたライブ QPS (1 秒あたりのクエリ数) データに基づいて Horizontal Pod Autoscaler (HPA) を動作させる方法を説明します。これにより、Pod は単なる CPU やメモリだけでなく、実際のリクエスト負荷に基づいてスケールします。

仕組み

ARMS Application Monitoring は Java アプリケーションを計測し、API ごとのリクエスト数を Prometheus メトリクスとして公開します。ack-alibaba-cloud-metrics-adapter コンポーネントはこれらの Prometheus メトリクスを読み取り、外部メトリクス API を介して Kubernetes の HPA に提供します。その後、HPA は設定したしきい値に基づいて Deployment をスケールアップまたはスケールダウンします。

完全なデータパスは以下の通りです。

[ARMS Application Monitoring] が Java アプリケーションから API ごとのリクエスト数を収集 → [Alibaba Cloud Prometheus] がメトリクスを保存 → [ack-alibaba-cloud-metrics-adapter] が Prometheus データを Kubernetes の外部メトリクス API 形式に変換 → [Kubernetes HPA] がメトリクスを読み取り、Deployment をスケールアップまたはスケールダウン。

このガイドでは、全体を通して arms-springboot-demo アプリケーションとその /demo/queryUser/10 エンドポイントを実例として使用します。

前提条件

開始する前に、以下が準備されていることを確認してください。

  • クラスターに Alibaba Cloud Prometheus モニタリングがデプロイされていること。詳細については、「Alibaba Cloud Prometheus を使用したモニタリング」をご参照ください。

  • ack-alibaba-cloud-metrics-adapter コンポーネントが kube-system 名前空間にデプロイされ、その prometheus.url フィールドが設定されていること。詳細については、「ack-alibaba-cloud-metrics-adapter のデプロイ」をご参照ください。prometheus.url の設定

    1. ACK コンソールにログインします。左側メニューで、[クラスター] をクリックします。

    2. [クラスター] ページで、対象のクラスター名をクリックします。左側メニューで、[アプリケーション] > [Helm] を選択します。

    3. [Helm] ページで ack-alibaba-cloud-metrics-adapter を見つけ、[操作] 列で [更新] をクリックします。

    4. [リリースの更新] パネルで、alibabaCloudMetricsAdapter.prometheus.url をご自身の Prometheus データリクエスト URL に設定し、[OK] をクリックします。> Prometheus データリクエスト URL の取得方法については、「Prometheus データリクエスト URL の取得方法」をご参照ください。完全な設定ファイルの説明については、「ack-alibaba-cloud-metrics-adapter 設定リファレンス」をご参照ください。

  • デモ用に名前空間が作成されていること。このガイドでは arms-demo を使用します。詳細については、「名前空間とクォータの管理」をご参照ください。

  • Java Development Kit (JDK) がインストールされていること。サポートされている JDK バージョンについては、「ARMS がサポートする Java コンポーネントとフレームワーク」をご参照ください。

hpa

ステップ 1: ARMS Application Monitoring コンポーネントのインストール

アプリケーションを ARMS Application Monitoring に接続するために、ack-onepilot コンポーネントをインストールします。

  1. ACK コンソールにログインします。左側メニューで、[クラスター] をクリックします。

  2. [クラスター] ページで、対象のクラスター名をクリックします。左側メニューで、[アドオン] をクリックします。

  3. ack-onepilot を検索し、そのパラメーターを設定して、インストールを完了します。

ステップ 2: ARMS アクセス権限の付与

必要な承認は、クラスターのタイプによって異なります。

ACK Serverless クラスターまたは ECI に接続されたアプリケーションの場合:

RAM クイック承認ページで承認し、ack-onepilot コンポーネントのすべての Pod を再起動します。

標準 ACK クラスターの場合:

クラスター内に ARMS アドオントークンが存在するかどうかを確認します。

  1. ACK コンソールにログインします。左側メニューで、[クラスター] をクリックします。

  2. [クラスター] ページで、対象のクラスター名をクリックします。左側メニューで、[設定] > [Secret] を選択します。

  3. ページ上部で、[名前空間][kube-system] に設定し、addon.arms.token が存在するかどうかを確認します。

  • トークンが存在する場合: ARMS はパスワードなしの承認を自動的に実行します。

    ACK マネージドクラスターには、デフォルトで ARMS アドオントークンが含まれています。一部の古いマネージドクラスターには含まれていない場合があります。その場合は、以下の手順で手動で権限を付与してください。
  • トークンが存在しない場合: 手動で権限を付与します。

    1. 以下の内容でカスタムポリシーを作成します。詳細については、「ステップ 1: カスタムポリシーの作成」をご参照ください。 json { "Action": "arms:*", "Resource": "*", "Effect": "Allow" }

    2. クラスターのワーカー RAM ロールにカスタムポリシーをアタッチします。詳細については、「ステップ 2: クラスターのワーカー RAM ロールへの権限付与」をご参照ください。

ステップ 3: Java アプリケーションで ARMS Application Monitoring を有効化

Deployment の spec.template.metadata セクションにラベルを追加して、モニタリングを有効にします。

  1. ACK コンソールにログインします。左側メニューで、[クラスター] をクリックします。

  2. [クラスター] ページで、対象のクラスター名をクリックします。左側メニューで、[ワークロード] > [Deployment] を選択します。

  3. [Deployment] ページで、[YAML から作成] をクリックします。

  4. [サンプルテンプレート] からテンプレートを選択します。[テンプレート] フィールドで、spec.template.metadata に以下のラベルを追加します。

    アプリケーションセキュリティを有効にすると、追加料金が発生します。詳細については、「アプリケーションセキュリティとは」および「課金」をご参照ください。
    labels:
      armsPilotAutoEnable: "on"
      armsPilotCreateAppName: ""  # 必須: アプリケーション名に置き換えてください
      one-agent.jdk.version: "OpenJDK11"               # JDK 11 の場合にのみ必須
      armsSecAutoEnable: "on"                           # オプション: アプリケーションセキュリティを有効にします

    以下の完全な YAML は、ARMS モニタリングが有効化された arms-springboot-demo アプリケーションをデプロイします。完全な YAML サンプル (Java)

    apiVersion: v1
    kind: Namespace
    metadata:
      name: arms-demo
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: arms-springboot-demo
      namespace: arms-demo
      labels:
        app: arms-springboot-demo
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: arms-springboot-demo
      template:
        metadata:
          labels:
            app: arms-springboot-demo
            armsPilotAutoEnable: "on"
            armsPilotCreateAppName: "arms-k8s-demo"
            one-agent.jdk.version: "OpenJDK11"
        spec:
          containers:
            - resources:
                limits:
                  cpu: 0.5
              image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-springboot-demo:v0.1
              imagePullPolicy: Always
              name: arms-springboot-demo
              env:
                - name: SELF_INVOKE_SWITCH
                  value: "true"
                - name: COMPONENT_HOST
                  value: "arms-demo-component"
                - name: COMPONENT_PORT
                  value: "6666"
                - name: MYSQL_SERVICE_HOST
                  value: "arms-demo-mysql"
                - name: MYSQL_SERVICE_PORT
                  value: "3306"
    ---
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        name: arms-springboot-demo
      name: arms-springboot-demo
      namespace: arms-demo
    spec:
      ports:
        - name: arms-demo-svc
          port: 6666
          targetPort: 8888
      selector:
        app: arms-springboot-demo
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: arms-springboot-demo-subcomponent
      namespace: arms-demo
      labels:
        app: arms-springboot-demo-subcomponent
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: arms-springboot-demo-subcomponent
      template:
        metadata:
          labels:
            app: arms-springboot-demo-subcomponent
            armsPilotAutoEnable: "on"
            armsPilotCreateAppName: "arms-k8s-demo-subcomponent"
            one-agent.jdk.version: "OpenJDK11"
        spec:
          containers:
            - resources:
                limits:
                  cpu: 0.5
              image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-springboot-demo:v0.1
              imagePullPolicy: Always
              name: arms-springboot-demo-subcomponent
              env:
                - name: SELF_INVOKE_SWITCH
                  value: "false"
                - name: MYSQL_SERVICE_HOST
                  value: "arms-demo-mysql"
                - name: MYSQL_SERVICE_PORT
                  value: "3306"
    ---
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        name: arms-demo-component
      name: arms-demo-component
      namespace: arms-demo
    spec:
      ports:
        - name: arms-demo-component-svc
          port: 6666
          targetPort: 8888
      selector:
        app: arms-springboot-demo-subcomponent
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: arms-demo-mysql
      namespace: arms-demo
      labels:
        app: mysql
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: mysql
      template:
        metadata:
          labels:
            app: mysql
        spec:
          containers:
            - resources:
                limits:
                  cpu: 0.5
              image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-demo-mysql:v0.1
              name: mysql
              ports:
                - containerPort: 3306
                  name: mysql
    ---
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        name: mysql
      name: arms-demo-mysql
      namespace: arms-demo
    spec:
      ports:
        - name: arms-mysql-svc
          port: 3306
          targetPort: 3306
      selector:
        app: mysql
  5. デプロイメントを検証します。[Deployment] ページで、対象アプリケーションの [操作] 列に [ARMS コンソール] ボタンが表示されます。[ARMS コンソール] をクリックしてモニタリングデータを表示します。左側メニューで [インターフェイス呼び出し] をクリックすると、HTTP インターフェイスのアクセス詳細を確認できます。デモアプリケーションは、継続的なインターフェイス呼び出しを自動的に生成します。

    [インターフェイス呼び出し] ページには、応答時間、リクエスト数、エラー数といったメトリクスを含む API の一覧が表示されます。例えば、/demo/randomRT/{id} (5.0 秒)、/demo/invokeConponent (1.2 秒)、/demo/queryUser/{id} (218.07 ミリ秒)、/demo/queryNotExistDB/{id} (2.5 ミリ秒)、/demo/queryException/{id} (1.4 ミリ秒) などです。このページには、呼び出しトポロジ図と、リクエスト数および応答時間のトレンドチャートも表示されます。

  6. arms-springboot-demo の Service を作成し、Server Load Balancer (SLB) を介してアプリケーションの API を公開します。

    1. [クラスター] ページで、対象のクラスター名をクリックします。左側メニューで、[ネットワーク] > [Service] を選択します。

    2. [作成] をクリックし、Service を設定してから [OK] をクリックします。設定の詳細については、「Service の作成」をご参照ください。

    3. Service が作成された後、arms-demo-svc外部 IP (例: 47.94.XX.XX:8080) を記録します。

    4. エンドポイントをテストします: shell curl http://47.94.XX.XX:8080/demo/queryUser/10 期待される出力: json {"id":1,"name":"KeyOfSpectator","password":"12****"}

ステップ 4: メトリクスアダプターの設定

重要

先に進む前に、Alibaba Cloud Prometheus モニタリングと ack-alibaba-cloud-metrics-adapter コンポーネント (kube-system にデプロイ) の両方が実行されている必要があります。

このステップでは、ARMS APM のリクエスト数データを、HPA が利用できる名前付きの外部メトリクスにマッピングします。hpa.yaml (ステップ 5) で使用されるメトリクス名は、ここで設定する name.as フィールドから生成されます。

4.1 Prometheus URL の取得

  1. ARMS コンソールにログインします。

  2. 左側メニューで、[Managed Service for Prometheus] > [インスタンス] を選択します。

  3. 対象のインスタンス名 (形式: arms_metrics_{RegionId}_XXX) をクリックします。左側メニューで、[設定] をクリックします。

  4. [設定] タブの下部にある [HTTP API URL (Grafana 読み取り URL)] を記録します。これが Prometheus URL です。

    ページには、[HTTP API URL (Grafana 読み取り URL)][ネットワーク][URL] の列で表示されます。

    • パブリックhttps://{RegionId}.arms.aliyuncs.com:9443/api/v1/prometheus/{InstanceID}/{UserID}/{Secret}/cn-beijing

    • 内部http://{RegionId}-intranet.arms.aliyuncs.com:9090/api/v1/prometheus/{InstanceID}/{UserID}/{Secret}/cn-beijing

    後続のステップで使用するため、パブリックネットワークアドレスを Prometheus URL としてコピーします。

4.2 アダプターでの Prometheus URL の設定

  1. ACK コンソールにログインします。左側メニューで、[クラスター] をクリックします。

  2. [クラスター] ページで、対象のクラスター名をクリックします。左側メニューで、[アプリケーション] > [Helm] を選択します。

  3. [Helm] ページで ack-alibaba-cloud-metrics-adapter を見つけ、[操作] 列で [更新] をクリックします。

  4. [リリースの更新] パネルで、上記で記録した Prometheus URL を設定します。

    custom:
        - metricsQuery: sum(sum(container_memory_working_set_bytes)by(pod)  * on(pod)
            group_right sum(<<.Series>>{<<.LabelMatchers>>}) by(pod)) / 1024 / 1024
            / 1024
          name:
            as: container_memory_working_total
            matches: ^(.*)_labels
          resources:
            overrides:
              namespace:
                resource: namespace
              pod:
                resource: pod
          seriesQuery: kube_pod_labels{namespace!="",pod!=""}
        default: false
        enabled: true
        logLevel: 4
        metricsRelistInterval: 1m
        tls:
          ca: ""
          certificate: ""
          enable: false
          key: ""
        url: http://cn-beijing-intranet.arms.aliyuncs.com:9090/api/v1/prometheus/
          8cba801fff65546a3012e9a6843xxx/xxx0538168824xxx   xxx a174ae4xxx2xxx xxx xxx xxx
        ramRoleType: restricted
        replicas: 1
        service:
          type: ClusterIP
        serviceAccountName: admin
        tolerations: []
      ConfigReloader:
        image:
          repository: registry.aliyuncs.com/acs/configmap-reload
          tag: v0.0.1

4.3 ARMS メトリクスルールを adapter-config に追加

  1. [Helm] ページで、[ack-alibaba-cloud-metrics-adapter] をクリックします。

  2. [基本情報] タブで、[adapter-config] をクリックします。

  3. 右上隅で、[YAML の編集] をクリックします。

  4. 以下のルールを adapter-config に追加します。

    rules:
    - metricsQuery: sum(sum_over_time_lorc(<<.Series>>{service="arms-k8s-demo",clusterId="cc13c8725******a9839190b7d1695d7",serverIp=~".*",callKind=~"http|rpc|custom_entry|server|consumer|schedule",source="apm",<<.LabelMatchers>>}[1m])) or vector(0)
    #                                                    ご自身の ARMS サービス名に置き換えてください
    #                                                                          ご自身のクラスター ID に置き換えてください
      name:
        as: "${1}_per_second"       # HPA メトリクス名 arms_app_requests_per_second を生成します
        matches: "^(.*)_count_ign_destid_endpoint_ppid_prpc"
      resources:
        namespaced: false
      seriesQuery: arms_app_requests_count_ign_destid_endpoint_ppid_prpc{service="arms-k8s-demo",clusterId="cc13c8725******a9839190b7d1695d7"}
    #                                                                     ご自身の ARMS サービス名とクラスター ID に置き換えてください
    

    arms-k8s-demo をご自身の ARMS サービス名に、cc13c8725******a9839190b7d1695d7 をご自身のクラスター ID に置き換えてください。完全な adapter-config の例

    apiVersion: v1
    data:
      config.yaml: >
        rules:
    
        - metricsQuery: sum(<<.Series>>{<<.LabelMatchers>>}) by (<<.GroupBy>>)
          name:
            as: ${1}_bytes_per_second
            matches: ^(.*)_bytes
          resources:
            overrides:
              namespace:
                resource: namespace
              pod:
                resource: pod
          seriesQuery: container_memory_working_set_bytes{namespace!="",pod!=""}
        - metricsQuery: sum(rate(<<.Series>>{<<.LabelMatchers>>}[1m])) by
        (<<.GroupBy>>)
          name:
            as: ${1}_core_per_second
            matches: ^(.*)_seconds_total
          resources:
            overrides:
              namespace:
                resource: namespace
              pod:
                resource: pod
          seriesQuery: container_cpu_usage_seconds_total{namespace!="",pod!=""}
        - metricsQuery: sum(sum_over_time_lorc(<<.Series>>{service="arms-k8s-demo",clusterId="cc13c8725******a9839190b7d1695d7",serverIp=~".*",callKind=~"http|rpc|custom_entry|server|consumer|schedule",source="apm",<<.LabelMatchers>>}[1m])) or vector(0)
          name:
            as: "${1}_per_second"
            matches: "^(.*)_count_ign_destid_endpoint_ppid_prpc"
          resources:
            namespaced: false
          seriesQuery: arms_app_requests_count_ign_destid_endpoint_ppid_prpc{service="arms-k8s-demo",clusterId="cc13c8725******a9839190b7d1695d7"}
    kind: ConfigMap
    metadata:
      annotations:
        meta.helm.sh/release-name: ack-alibaba-cloud-metrics-adapter
        meta.helm.sh/release-namespace: kube-system
      creationTimestamp: '2024-04-02T02:29:32Z'
      labels:
        app.kubernetes.io/managed-by: Helm
      managedFields:
        - apiVersion: v1
          fieldsType: FieldsV1
          fieldsV1:
            'f:data':
              .: {}
              'f:config.yaml': {}
            'f:metadata':
              'f:annotations':
                .: {}
                'f:meta.helm.sh/release-name': {}
                'f:meta.helm.sh/release-namespace': {}
              'f:labels':
                .: {}
                'f:app.kubernetes.io/managed-by': {}
          manager: rc
          operation: Update
          time: '2024-04-02T02:40:52Z'
      name: adapter-config
      namespace: kube-system
      resourceVersion: '8223891'
      uid: 294634e6-aeae-4048-9e69-365a4ce4b2cd

4.4 メトリクスが利用可能かどうかの確認

  1. arms_app_requests_per_second が外部メトリクス API に表示されることを確認します。

    kubectl get --raw "/apis/external.metrics.k8s.io/v1beta1"

    出力で "name":"arms_app_requests_per_second" を探します。

  2. メトリクスがリアルタイムデータを返していることを確認します。

    kubectl get --raw "/apis/external.metrics.k8s.io/v1beta1/namespaces/arms-demo/arms_app_requests_per_second" | jq .

    期待される出力:

    {
      "kind": "ExternalMetricValueList",
      "apiVersion": "external.metrics.k8s.io/v1beta1",
      "metadata": {},
      "items": [
        {
          "metricName": "arms_app_requests_per_second",
          "metricLabels": {},
          "timestamp": "2025-02-13T02:51:31Z",
          "value": "2"
        }
      ]
    }

ステップ 5: HPA の作成

以下の内容で hpa.yaml を作成します。

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: test-hpa
  namespace: arms-demo
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: arms-springboot-demo
  minReplicas: 1
  maxReplicas: 10
  metrics:
    - type: External
      external:
        metric:
          name: arms_app_requests_per_second   # adapter-config によって生成された名前と一致する必要があります (ステップ 4.3 の name.as フィールド)
        target:
          type: AverageValue
          averageValue: 40                     # QPS が 40 を超えるとスケールアウトします。外部メトリクスは Value と AverageValue のみをサポートします

HPA を適用します。

kubectl apply -f hpa.yaml

メトリクスデータを取得していることを確認します。

kubectl get hpa -n arms-demo

期待される出力:

NAME       REFERENCE                         TARGETS       MINPODS   MAXPODS   REPLICAS   AGE
test-hpa   Deployment/arms-springboot-demo   12/40 (avg)   1         10        1          113s

TARGETS の値が空でない場合、HPA がメトリクスデータを正常に読み取っていることを示します。

ステップ 6: 負荷テストによる伸縮自在なスケーリングの検証

デモアプリケーションに対して負荷テストを実行します。47.94.XX.XX:8080arms-demo-svc の外部エンドポイントに置き換えてください。

ab -c 50 -n 2000 http://47.94.XX.XX:8080/demo/queryUser/10

テスト実行中に HPA を監視します。

kubectl get hpa -n arms-demo

スケーリング後の期待される出力:

NAME       REFERENCE                         TARGETS           MINPODS   MAXPODS   REPLICAS   AGE
test-hpa   Deployment/arms-springboot-demo   47500m/40 (avg)   1         10        10         6m43s

3 つのビューからスケーリング効果を確認します。

  • ARMS コンソール: 負荷テスト中、インターフェイスのリクエスト量が急激に増加します。

    ARMS Application Monitoring の [概要] タブで、負荷テスト中 (約 10:58–10:59) に以下のメトリクスの変化が観察されます。

    • 毎分リクエスト数: HTTP エントリリクエストが 0 近くから約 1,800 に急増します。

    • 毎分応答時間: HTTP エントリの応答時間が 800 ミリ秒から 1.6 秒の間で変動します。

    • 毎分スローコール数: テストの終わりに向かって約 6 に上昇します。

    • HTTP ステータスコード統計: 200 ステータスコードの数がリクエスト数に合わせて約 2,400 に急増し、他のステータスコードは 0 近くにとどまります。

  • Prometheus ダッシュボード: QPS が設定されたしきい値を超えると、HPA がスケールアウトをトリガーします。

    Grafana ダッシュボードでは、arms_app_requests_count メトリクスの折れ線グラフが、負荷テスト中に顕著なスパイクを示します。値は約 33.5 分でピークに達し、その後 1.40 分に戻ります。パネルの統計は、最小 8 秒、最大 33.5 分、平均 2.61 分、現在 1.40 分です。

  • ACK クラスター: Pod のレプリカ数が、インターフェイス呼び出しの QPS に応じてスケールインおよびスケールアウトします。

完全なスケーリングイベント履歴を表示するには、以下を実行します。

kubectl describe hpa test-hpa -n arms-demo

高度な例

以下の例は、より具体的なスケーリングシナリオのためにメトリクスアダプターを設定する方法を示しています。すべての例で、1 分間のウィンドウでリクエスト数を集計するために sum_over_time_lorc を使用します。

複数のサービスを個別にスケーリング

サービスごとに 1 つのルールを定義し、それぞれに一意のメトリクス名を与えることで、HPA がそれらを個別にターゲットにできるようにします。

rules:
- metricsQuery: sum(sum_over_time_lorc(<<.Series>>{service="arms-k8s-demo",clusterId="cc13c8725******a9839190b7d1695d7",serverIp=~".*",callKind=~"http|rpc|custom_entry|server|consumer|schedule",source="apm",<<.LabelMatchers>>}[1m])) or vector(0)
  name:
    as: "${1}_per_second_arms_k8s_demo"
    matches: "^(.*)_count_ign_destid_endpoint_ppid_prpc"
  resources:
    namespaced: false
  seriesQuery: arms_app_requests_count_ign_destid_endpoint_ppid_prpc{service="arms-k8s-demo",clusterId="cc13c8725******a9839190b7d1695d7"}
- metricsQuery: sum(sum_over_time_lorc(<<.Series>>{service="arms-k8s-demo-subcomponent",clusterId="cc13c8725******a9839190b7d1695d7",serverIp=~".*",callKind=~"http|rpc|custom_entry|server|consumer|schedule",source="apm",<<.LabelMatchers>>}[1m])) or vector(0)
  name:
    as: "${1}_per_second_arms_k8s_demo_subcomponent"
    matches: "^(.*)_count_ign_destid_endpoint_ppid_prpc"
  resources:
    namespaced: false
  seriesQuery: arms_app_requests_count_ign_destid_endpoint_ppid_prpc{service="arms-k8s-demo-subcomponent",clusterId="cc13c8725******a9839190b7d1695d7"}

特定の RPC エンドポイントに基づくスケーリング

クエリに rpc ラベルを追加して、サービスのすべてのトラフィックではなく、単一のエンドポイントをターゲットにします。

rules:
- metricsQuery: sum(sum_over_time_lorc(<<.Series>>{service="arms-k8s-demo",rpc="/demo/queryUser/{id}",clusterId="cc13c8725******a9839190b7d1695d7",serverIp=~".*",callKind=~"http|rpc|custom_entry|server|consumer|schedule",source="apm",<<.LabelMatchers>>}[1m])) or vector(0)
  name:
    as: "${1}_per_second_arms_k8s_demo_queryUser"
    matches: "^(.*)_count_ign_destid_endpoint_ppid_prpc"
  resources:
    namespaced: false
  seriesQuery: arms_app_requests_count_ign_destid_endpoint_ppid_prpc{service="arms-k8s-demo",rpc="/demo/queryUser/{id}",clusterId="cc13c8725******a9839190b7d1695d7"}
- metricsQuery: sum(sum_over_time_lorc(<<.Series>>{service="arms-k8s-demo",rpc="/demo/queryException/{id}",clusterId="cc13c8725******a9839190b7d1695d7",serverIp=~".*",callKind=~"http|rpc|custom_entry|server|consumer|schedule",source="apm",<<.LabelMatchers>>}[1m])) or vector(0)
  name:
    as: "${1}_per_second__arms_k8s_demo_queryException"
    matches: "^(.*)_count_ign_destid_endpoint_ppid_prpc"
  resources:
    namespaced: false
  seriesQuery: arms_app_requests_count_ign_destid_endpoint_ppid_prpc{service="arms-k8s-demo",rpc="/demo/queryException/{id}",clusterId="cc13c8725******a9839190b7d1695d7"}
- metricsQuery: sum(sum_over_time_lorc(<<.Series>>{service="arms-k8s-demo",rpc="/demo/queryNotExistDB/{id}",clusterId="cc13c8725******a9839190b7d1695d7",serverIp=~".*",callKind=~"http|rpc|custom_entry|server|consumer|schedule",source="apm",<<.LabelMatchers>>}[1m])) or vector(0)
  name:
    as: "${1}_per_second__arms_k8s_demo_queryNotExistDB"
    matches: "^(.*)_count_ign_destid_endpoint_ppid_prpc"
  resources:
    namespaced: false
  seriesQuery: arms_app_requests_count_ign_destid_endpoint_ppid_prpc{service="arms-k8s-demo",rpc="/demo/queryNotExistDB/{id}",clusterId="cc13c8725******a9839190b7d1695d7"}

関連ドキュメント