アプリケーションの API へのリクエストトラフィックが急増した場合、API の秒間クエリ数 (QPS) に基づいて Horizontal Pod Autoscaler (HPA) ポリシーを設定し、アプリケーションを自動的にスケーリングできます。このトピックでは、ARMS アプリケーション監視を使用して、アプリケーションの HPA ベースの弾性スケーリングを実装する方法について説明します。
仕組み
ACK クラスター内の Java アプリケーションを ARMS アプリケーション監視に接続すると、アプリケーションの API の詳細なアクセス情報を取得できます。Java アプリケーションを ARMS アプリケーション監視に接続する方法の詳細については、「Java アプリケーション監視」をご参照ください。ARMS アプリケーション監視は、ARMS データを Alibaba Cloud Prometheus データ形式に変換します。その後、alibaba-cloud-metrics-adapter コンポーネントが Alibaba Cloud Prometheus メトリックを HPA が使用できるメトリックに変換します。このプロセスにより、アプリケーションの HPA ベースの弾性スケーリングが可能になります。
このトピックでは、arms-springboot-demo アプリケーションのデプロイメントと、その /demo/queryUser/10 インターフェイスのストレステストを例として使用します。
前提条件
Alibaba Cloud Prometheus モニタリングコンポーネントをデプロイします。詳細については、「Alibaba Cloud Prometheus を使用したモニタリング」をご参照ください。
ack-alibaba-cloud-metrics-adapter コンポーネントをデプロイし、その
prometheus.urlフィールドを設定します。名前空間が作成されます。詳細については、「名前空間とクォータの管理」をご参照ください。このトピックでは、arms-demo 名前空間を例として使用します。
Java 開発キット (JDK) がインストールされています。ARMS アプリケーション監視がサポートする JDK のバージョンの詳細については、「ARMS がサポートする Java コンポーネントとフレームワーク」をご参照ください。
手順

ステップ 1: ARMS アプリケーション監視コンポーネントをインストールする
アプリケーションを ARMS アプリケーション監視に接続するには、クラスターに one-pilot コンポーネントをインストールします。
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスター ページで、管理したいクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[アドオン] をクリックします。
ack-onepilot コンポーネントを検索します。画面の指示に従ってパラメーターを設定し、インストールを完了します。
ステップ 2: ARMS アクセス権限を付与する
Serverless Kubernetes クラスター内のアプリケーション、または ECI に接続されているアプリケーションを監視するには、RAM クイック承認ページで権限付与を完了します。その後、ack-onepilot コンポーネントのすべての Pod を再起動します。
ACK クラスターアプリケーションを監視するには、まず ARMS Addon Token が存在するかどうかを確認します。
ACK クラスターに ARMS Addon Token が存在する場合、ARMS はパスワードなしの権限付与を実行します。
説明デフォルトでは、ARMS Addon Token は ACK マネージドクラスターに存在します。ただし、かなり前に作成された一部の ACK マネージドクラスターには ARMS Addon Token が存在しない場合があります。このような場合は、クラスターへの ARMS アクセス権限を手動で付与する必要があります。
ACK クラスターに ARMS Addon Token が存在しない場合は、次の操作を実行して、クラスターへの ARMS アクセス権限を手動で付与します。
次の内容でカスタムポリシーを作成できます。詳細については、「ステップ 1: カスタムポリシーを作成する」をご参照ください。
{ "Action": "arms:*", "Resource": "*", "Effect": "Allow" }前のステップで作成したカスタムポリシーをクラスターの WorkerRole にアタッチできます。詳細については、「ステップ 2: クラスターのワーカー RAM ロールに権限を付与する」をご参照ください。
ステップ 3: Java アプリケーションの ARMS アプリケーション監視を有効にする
クラスターに Java アプリケーションをデプロイするときに、アプリケーションにラベルを追加することで ARMS アプリケーション監視を有効にできます。
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスター ページで、管理したいクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
[デプロイメント] ページの右上隅にある [YAML から作成] をクリックします。
[サンプルテンプレート] を選択します。[テンプレート] (YAML 形式) で、spec.template.metadata パスに次の
labelsを追加します。labels: armsPilotAutoEnable: "on" armsPilotCreateAppName: "<your-deployment-name>" # <your-deployment-name> をアプリケーション名に置き換えます。 one-agent.jdk.version: "OpenJDK11" # アプリケーションが JDK 11 を使用する場合にこのパラメーターを設定します。 armsSecAutoEnable: "on" # このパラメーターを設定してアプリケーションセキュリティを有効にします。説明アプリケーションセキュリティの詳細については、「アプリケーションセキュリティとは」をご参照ください。
アプリケーションセキュリティを有効にすると、その使用量に対して課金されます。課金の詳細については、「課金」をご参照ください。

次の YAML テンプレートは、ステートレス (Deployment) アプリケーションを作成し、ARMS アプリケーション監視を有効にする方法を示しています。
アプリケーションのデプロイメントを検証します。
[デプロイメント] ページでは、ターゲットアプリケーションの [アクション] 列に [ARMS コンソール] ボタンが表示されます。

[ARMS コンソール] をクリックしてモニタリングデータを表示できます。左側のナビゲーションウィンドウで [インターフェイス呼び出し] をクリックすると、HTTP インターフェイスなどのアプリケーションインターフェイスのアクセス詳細を表示できます。提供されているデモアプリケーション arms-springboot-demo は、継続的なインターフェイス呼び出しを自動的に生成します。

arms-springboot-demo アプリケーション用のサービスを手動で作成し、ロードバランシングを有効にしてアプリケーションの API にアクセスします。
クラスター ページで、目的のクラスターを見つけてその名前をクリックします。左側のペインで、 を選択します。
ページの右上隅にある [作成] をクリックします。アプリケーションのサービスを設定し、[作成] をクリックします。設定項目の詳細については、「サービスを作成する」をご参照ください。
サービスが作成されるのを待ちます。[サービス] ページで、arms-demo-svc の [外部エンドポイント] (例: 47.94.XX.XX:8080) を記録します。
次のコマンドを実行して、外部エンドポイント経由でこのサービスの /demo/queryUser/10 インターフェイスにアクセスします。
curl http://47.94.XX.XX:8080/demo/queryUser/10期待される出力:
{"id":1,"name":"KeyOfSpectator","password":"12****"}期待される出力は、インターフェイスへのアクセスが成功したことを示します。
ステップ 4: alibaba-cloud-metrics-adapter コンポーネントと統合する
Alibaba Cloud Prometheus モニタリングコンポーネントがデプロイされていることを確認してください。そうでない場合、この操作は実行できません。詳細については、「Alibaba Cloud Prometheus モニタリングを有効にする」をご参照ください。
alibaba-cloud-metrics-adapter コンポーネントが kube-system 名前空間にデプロイされていることを確認してください。そうでない場合、この操作は実行できません。詳細については、「ステップ 1: ack-alibaba-cloud-metrics-adapter コンポーネントをデプロイする」をご参照ください。
ARMS コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
[インスタンス] ページで、ターゲットインスタンスの名前 (arms_metrics_{RegionId}_XXX の形式) をクリックします。左側のナビゲーションウィンドウで、[設定] をクリックします。[設定] タブの下部で、Prometheus URL である [HTTP API アドレス (Grafana 読み取りアドレス)] を表示して記録します。

前のステップで記録した [HTTP API アドレス (Grafana 読み取りアドレス)] (Prometheus URL) を使用して ack-alibaba-cloud-metrics-adapter を設定します。
ack-alibaba-cloud-metrics-adapter の 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) 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"}以下は完全な例です:
次のコマンドを実行して、クラスター内のメトリックデータを表示します。
次のコマンドを実行して、arms_app_requests_per_second メトリックが存在するかどうかを確認します。
kubectl get --raw "/apis/external.metrics.k8s.io/v1beta1"期待される出力:
{"kind":"APIResourceList","apiVersion":"v1","groupVersion":"external.metrics.k8s.io/v1beta1","resources":[{"name":"slb_l4_packet_rx","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"k8s_workload_cpu_util","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cost_custom_week","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cost_custom_month","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"billing_pretax_gross_amount_total","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"k8s_workload_memory_usage","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"k8s_workload_network_rx_rate","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"k8s_workload_network_rx_errors","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"sls_ingress_latency_p95","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cost_cpu_request","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cost_week","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"metrics_kube_pod_labels","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cost_total","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"sls_ingress_latency_p9999","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"slb_l7_status_3xx","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"ahas_sentinel_block_qps","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cost_month","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cost_custom_hour","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cost_pod_cpu_request","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"k8s_workload_memory_request","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"sls_ingress_qps","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"slb_l4_traffic_rx","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"slb_l4_traffic_tx","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"slb_l4_packet_tx","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"slb_l4_connection_utilization","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"slb_l7_rt","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"k8s_workload_cpu_request","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cost_cpu_utilization","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cost_memory_request","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cost_total_hour","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"memory_usage_average","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cost_pod_memory_request","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"k8s_workload_cpu_limit","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"ahas_sentinel_pass_qps","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cost_day","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cost_min","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cost_ratio","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cost_custom","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"slb_l7_status_2xx","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"slb_l7_upstream_5xx","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"slb_l7_upstream_rt","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cost_hour","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cost_total_month","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"metrics_kube_pod_info","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"metrics_kube_node_info","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"memory_request_average","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"sls_ingress_latency_avg","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"slb_l7_status_5xx","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"k8s_workload_memory_limit","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"k8s_workload_memory_working_set","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cost_memory_utilization","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"slb_l4_active_connection","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"slb_l4_max_connection","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"billing_pretax_amount_node","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"slb_l7_status_4xx","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"slb_l7_upstream_4xx","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"k8s_workload_memory_cache","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cost_custom_day","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"ahas_sentinel_total_qps","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"sls_alb_ingress_qps","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"k8s_workload_memory_rss","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"k8s_workload_network_tx_rate","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cost_cpu_usage","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cost_total_min","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cost_total_week","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"billing_pretax_amount_total","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"sls_ingress_latency_p99","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cost_percorepricing","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cost_total_day","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cpu_core_request_average","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"slb_l7_qps","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"ahas_sentinel_avg_rt","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cost_memory_limit","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cpu_core_usage_average","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"sls_ingress_latency_p50","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"sls_ingress_inflow","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"k8s_workload_network_tx_errors","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cost_cpu_limit","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cost_memory_usage","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"cost_node","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]},{"name":"arms_app_requests_per_second","singularName":"","namespaced":true,"kind":"ExternalMetricValueList","verbs":["get"]}]}期待される出力は、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: APM メトリックに基づいて HPA スケーリングを設定する
次の内容で hpa.yaml という名前のファイルを作成します。
説明hpa.yaml で設定されたメトリック名は、前のステップで ack-alibaba-cloud-metrics-adapter で定義されたメトリック名と一致する必要があります。
hpa.yaml の
targetはスケーリングのしきい値です。QPS > 40 の場合にアプリケーションはスケールアウトします。
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 # External メトリックタイプでは、Value および AverageValue タイプのターゲット値のみがサポートされます。 target: type: AverageValue averageValue: 40次のコマンドを実行して、arms-springboot-demo アプリケーションに HPA をデプロイします。
kubectl apply -f hpa.yaml次のコマンドを実行して HPA の詳細を表示します。
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: ストレステストを通じて弾性スケーリング効果を検証する
次のコマンドを実行して、デモアプリケーションでストレステストを実行します。
arms-demo-svc サービスの外部エンドポイントで
47.94.XX.XX:8080を置き換えます。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期待される出力は Targets にデータが存在することを示しており、これは HPA が正常に設定されたことを意味します。
弾性スケーリング効果を確認します。
ARMS コンソールでは、ストレステストによりこのインターフェイスのリクエスト量が急増していることがわかります。

Prometheus ダッシュボードでは、インターフェイスの QPS が設定されたしきい値を超えると HPA がアプリケーションをスケーリングすることがわかります。

ACK クラスターでは、このサンプルアプリケーションの Pod レプリカ数がインターフェイス呼び出しの QPS に基づいてスケールインまたはスケールアウトすることがわかります。
kubectl describe hpa test-hpa -n arms-demoを実行して、発生したスケーリングイベントを表示できます。
高度な例
次のセクションでは、さまざまなシナリオにおける metrics-adapter の設定例を示します。
複数のサービスに対するメトリック変換
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 に対するメトリック変換
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 メトリックの詳細については、「アプリケーション監視メトリックの説明」をご参照ください。
