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の設定-
ACK コンソールにログインします。左側メニューで、[クラスター] をクリックします。
-
[クラスター] ページで、対象のクラスター名をクリックします。左側メニューで、[アプリケーション] > [Helm] を選択します。
-
[Helm] ページで ack-alibaba-cloud-metrics-adapter を見つけ、[操作] 列で [更新] をクリックします。
-
[リリースの更新] パネルで、
alibabaCloudMetricsAdapter.prometheus.urlをご自身の Prometheus データリクエスト URL に設定し、[OK] をクリックします。> Prometheus データリクエスト URL の取得方法については、「Prometheus データリクエスト URL の取得方法」をご参照ください。完全な設定ファイルの説明については、「ack-alibaba-cloud-metrics-adapter 設定リファレンス」をご参照ください。
-
-
デモ用に名前空間が作成されていること。このガイドでは
arms-demoを使用します。詳細については、「名前空間とクォータの管理」をご参照ください。 -
Java Development Kit (JDK) がインストールされていること。サポートされている JDK バージョンについては、「ARMS がサポートする Java コンポーネントとフレームワーク」をご参照ください。
ステップ 1: ARMS Application Monitoring コンポーネントのインストール
アプリケーションを ARMS Application Monitoring に接続するために、ack-onepilot コンポーネントをインストールします。
-
ACK コンソールにログインします。左側メニューで、[クラスター] をクリックします。
-
[クラスター] ページで、対象のクラスター名をクリックします。左側メニューで、[アドオン] をクリックします。
-
ack-onepilot を検索し、そのパラメーターを設定して、インストールを完了します。
ステップ 2: ARMS アクセス権限の付与
必要な承認は、クラスターのタイプによって異なります。
ACK Serverless クラスターまたは ECI に接続されたアプリケーションの場合:
RAM クイック承認ページで承認し、ack-onepilot コンポーネントのすべての Pod を再起動します。
標準 ACK クラスターの場合:
クラスター内に ARMS アドオントークンが存在するかどうかを確認します。
-
ACK コンソールにログインします。左側メニューで、[クラスター] をクリックします。
-
[クラスター] ページで、対象のクラスター名をクリックします。左側メニューで、[設定] > [Secret] を選択します。
-
ページ上部で、[名前空間] を [kube-system] に設定し、
addon.arms.tokenが存在するかどうかを確認します。
-
トークンが存在する場合: ARMS はパスワードなしの承認を自動的に実行します。
ACK マネージドクラスターには、デフォルトで ARMS アドオントークンが含まれています。一部の古いマネージドクラスターには含まれていない場合があります。その場合は、以下の手順で手動で権限を付与してください。
-
トークンが存在しない場合: 手動で権限を付与します。
-
以下の内容でカスタムポリシーを作成します。詳細については、「ステップ 1: カスタムポリシーの作成」をご参照ください。
json { "Action": "arms:*", "Resource": "*", "Effect": "Allow" } -
クラスターのワーカー RAM ロールにカスタムポリシーをアタッチします。詳細については、「ステップ 2: クラスターのワーカー RAM ロールへの権限付与」をご参照ください。
-
ステップ 3: Java アプリケーションで ARMS Application Monitoring を有効化
Deployment の spec.template.metadata セクションにラベルを追加して、モニタリングを有効にします。
-
ACK コンソールにログインします。左側メニューで、[クラスター] をクリックします。
-
[クラスター] ページで、対象のクラスター名をクリックします。左側メニューで、[ワークロード] > [Deployment] を選択します。
-
[Deployment] ページで、[YAML から作成] をクリックします。
-
[サンプルテンプレート] からテンプレートを選択します。[テンプレート] フィールドで、
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 -
デプロイメントを検証します。[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 ミリ秒) などです。このページには、呼び出しトポロジ図と、リクエスト数および応答時間のトレンドチャートも表示されます。 -
arms-springboot-demoの Service を作成し、Server Load Balancer (SLB) を介してアプリケーションの API を公開します。-
[クラスター] ページで、対象のクラスター名をクリックします。左側メニューで、[ネットワーク] > [Service] を選択します。
-
[作成] をクリックし、Service を設定してから [OK] をクリックします。設定の詳細については、「Service の作成」をご参照ください。
-
Service が作成された後、
arms-demo-svcの 外部 IP (例:47.94.XX.XX:8080) を記録します。 -
エンドポイントをテストします:
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 の取得
-
ARMS コンソールにログインします。
-
左側メニューで、[Managed Service for Prometheus] > [インスタンス] を選択します。
-
対象のインスタンス名 (形式:
arms_metrics_{RegionId}_XXX) をクリックします。左側メニューで、[設定] をクリックします。 -
[設定] タブの下部にある [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 の設定
-
ACK コンソールにログインします。左側メニューで、[クラスター] をクリックします。
-
[クラスター] ページで、対象のクラスター名をクリックします。左側メニューで、[アプリケーション] > [Helm] を選択します。
-
[Helm] ページで ack-alibaba-cloud-metrics-adapter を見つけ、[操作] 列で [更新] をクリックします。
-
[リリースの更新] パネルで、上記で記録した 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 に追加
-
[Helm] ページで、[ack-alibaba-cloud-metrics-adapter] をクリックします。
-
[基本情報] タブで、[adapter-config] をクリックします。
-
右上隅で、[YAML の編集] をクリックします。
-
以下のルールを
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 メトリクスが利用可能かどうかの確認
-
arms_app_requests_per_secondが外部メトリクス API に表示されることを確認します。kubectl get --raw "/apis/external.metrics.k8s.io/v1beta1"出力で
"name":"arms_app_requests_per_second"を探します。 -
メトリクスがリアルタイムデータを返していることを確認します。
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:8080 を arms-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"}
関連ドキュメント
-
アプリケーションモニタリングのメトリクスの説明 — アダプターのルールで使用可能な ARMS メトリクスの完全なリスト