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

Alibaba Cloud Service Mesh:ASM メトリクスの定期的なクリーンアップの設定

最終更新日:Jun 22, 2026

Service Mesh (ASM) は、サービスメッシュ内外およびサービスメッシュ内を流れるすべてのトラフィックに対して監視メトリクスを生成し、サービスの動作を監視するのに役立ちます。これらのメトリクスには、トラフィック量、エラーレート、応答時間などの情報が含まれます。時間の経過とともに大量のメトリクスデータが蓄積され、Envoy と Prometheus のリソース消費が増加する可能性があります。これを管理するために、ASM は監視メトリクスを定期的にクリーンアップする機能を提供します。この機能は、Envoy にキャッシュされた未使用のメトリクスを自動的に削除し、Envoy のメモリ消費を削減し、Prometheus がメトリクスをスクレイプする際のネットワーク負荷を低減します。このトピックでは、この機能の設定方法と実用的な例について説明します。

前提条件

操作手順

  1. ASM コンソールにログインします。左側のナビゲーションウィンドウで、[Service Mesh] > [メッシュ管理] を選択します。

  2. [メッシュ管理] ページで、ASM インスタンスの名前をクリックします。 左側のナビゲーションウィンドウで、[可観測性管理センター] > [可観測性設定項目] を選択します。

  3. Observability Settings ページで Global タブをクリックします。Metric Settings セクションで、[メトリックの定期的クリーニング時間] の値を入力し、Submit をクリックします。

    [メトリクスの定期的なクリーンアップを有効にする] スイッチをオンにします。

    重要

    定期的なクリーンアップ時間は、Prometheus の scrape_interval の少なくとも 2 倍に設定してください。これにより、メトリクスがクリアされる前に Prometheus がメトリクスを正常にスクレイプできるようになります。

サンプルアプリケーションのデプロイ

  1. 次の YAML コンテンツを使用して、データプレーンクラスターにサンプルアプリケーションをデプロイします。詳細については、「ステートレスなワークロード Deployment の作成」または「YAML ファイルを使用したリソースの作成」をご参照ください。

    YAML をクリックして表示

    apiVersion: v1
    kind: Service
    metadata:
      name: httpbin
      labels:
        app: httpbin
        service: httpbin
    spec:
      ports:
      - name: http
        port: 8000
        targetPort: 80
      selector:
        app: httpbin
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: httpbin
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: httpbin
          version: v1
      template:
        metadata:
          labels:
            app: httpbin
            version: v1
        spec:
          containers:
          - image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/httpbin:0.1.0
            imagePullPolicy: IfNotPresent
            name: httpbin
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: sleep
      labels:
        app: sleep
        service: sleep
    spec:
      ports:
      - port: 80
        name: http
      selector:
        app: sleep
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: sleep
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: sleep
      template:
        metadata:
          labels:
            app: sleep
        spec:
          terminationGracePeriodSeconds: 0
          containers:
          - name: sleep
            image: registry.cn-hangzhou.aliyuncs.com/acs/curl:8.1.2
            command: ["/bin/sleep", "infinity"]
            imagePullPolicy: IfNotPresent
  2. 次のコマンドを実行して、アプリケーションのステータスを確認します。

    kubectl get pod

    出力例:

    NAME                       READY   STATUS    RESTARTS   AGE
    httpbin-846bxxx694-xxxxx   2/2     Running   0          44s
    sleep-866xxx97f9-xxxxx     2/2     Running   0          44s

メトリクスの有効化とテスト

  1. ASM コンソールにログインします。左側のナビゲーションウィンドウで、[Service Mesh] > [メッシュ管理] を選択します。

  2. [メッシュ管理] ページで ASM インスタンスの名前をクリックし、左側のナビゲーションウィンドウで [可観測性管理センター] > [可観測性設定項目] を選択します。

  3. Observability Settings ページで、Global タブをクリックします。Metric Settings セクションで、[サーバーサイドメトリック] セクションの REQUEST_COUNT メトリックの Enabled チェックボックスを選択します。その後、Submit をクリックします。

  4. 次のコマンドを実行して、httpbin アプリケーションにアクセスします。

     kubectl exec -it deploy/sleep -- sh -c 'for i in $(seq 1 10); do curl -s httpbin:8000/status/418 > /dev/null; done'
  5. 次のコマンドを実行して、httpbin アプリケーションの監視メトリクスを表示します。

    kubectl exec -it deploy/httpbin -c istio-proxy -- curl 0.0.0.0:15020/stats/prometheus | grep istio_requests_total{

    出力例:

    istio_requests_total{reporter="destination",source_workload="sleep",source_canonical_service="sleep",...,request_protocol="http",response_code="418",grpc_response_status="",response_flags="-",connection_security_policy="mutual_tls"} 20

定期的なメトリッククリーンアップの設定

  1. 操作手順」セクションの手順に従って、監視メトリクスの定期的なクリーンアップ時間を 10 秒に設定します。

    メトリックのクリーンアップは数秒遅れることがあります。検証中に、必要に応じてクリーンアップ時間を調整できます。
  2. 設定が完了したら、次のコマンドを実行して httpbin アプリケーションの監視メトリクスを表示します。

    kubectl exec -it deploy/httpbin -c istio-proxy -- sh -c ' for i in $(seq 1 2); do echo "# istio_requests_total メトリックの現在の内容:"; curl -s 0.0.0.0:15020/stats/prometheus | grep istio_requests_total{; sleep 15; done'

    出力例:

    # istio_requests_total メトリックの現在の内容:
    istio_requests_total{reporter="destination",source_workload="sleep",source_canonical_service="sleep",...connection_security_policy="mutual_tls"} 30
    # istio_requests_total メトリックの現在の内容:
    テストコマンドは 2 回のポーリングリクエストを行います。クリーンアップ前に行われた最初のリクエストは、1 行のメトリック出力と 1 行のカスタム出力を返します。15 秒後、メトリックデータはクリアされ、その後続のリクエストは 1 行のカスタム出力のみを返します。