Service Mesh (ASM) は、サービスパフォーマンスを監視するために、ASM 内のすべてのインバウンドトラフィック、アウトバウンドトラフィック、およびサービストラフィックのメトリクスを生成します。これらのメトリクスには、総トラフィック、エラー率、リクエスト応答時間などの情報が含まれます。ただし、長期運用では大量のメトリクスが生成され、Envoy と Prometheus のリソース消費が大幅に増加します。したがって、ASM は監視メトリクスの定期的なクリーニングの設定を提供し、一定期間使用されていない Envoy にキャッシュされたメトリクスをクリーンアップできるようにします。これは、Envoy のメモリ使用率を向上させ、Prometheus がメトリクスをプルする際のネットワーク負荷を軽減するのに役立ちます。このトピックでは、メトリクスの定期的なクリーニングの設定方法とその使用例について説明します。
前提条件
1.18 以降の ASM インスタンスにクラスターが追加されていること。詳細については、「ASM インスタンスへのクラスターの追加」をご参照ください。
手順
ASM コンソール にログインします。左側のナビゲーションペインで、 を選択します。
[メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションペインで、 を選択します。
[可観測性設定] ページで、[グローバル] タブをクリックし、[メトリクスの定期的なクリーニングを有効にする] で [メトリクスの定期的なクリーニング時間] を入力し、[送信] をクリックします。
重要Prometheus がクリーンアップされる前にメトリクスを確実にキャプチャできるように、メトリクスの定期的なクリーニング時間を Prometheus に設定されている
scrape_intervalの少なくとも 2 倍に設定することをお勧めします。
例
サンプルアプリケーションのデプロイ
以下のコマンドを実行して、データプレーンのクラスターにサンプルアプリケーションをデプロイします。具体的な操作については、「オーケストレーションテンプレートを使用した Linux アプリケーションの作成」または「YAML テンプレートを使用した作成」をご参照ください。
次のコマンドを実行して、アプリケーションの状態を確認します。
kubectl get pod予期される出力:
NAME READY STATUS RESTARTS AGE httpbin-846bxxx694-xxxxx 2/2 Running 0 44s sleep-866xxx97f9-xxxxx 2/2 Running 0 44s
メトリクスの有効化と検証の実行
ASM コンソール にログインします。左側のナビゲーションペインで、 を選択します。
[メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションペインで、 を選択します。
[可観測性設定] ページで、[グローバル] タブをクリックします。[監視メトリクス設定] リストの [サーバー側メトリクス] 列で、[REQUEST_COUNT] メトリクスの横にある [有効] をオンにします。次に、[送信] をクリックします。

次のコマンドを実行して、HTTPBin アプリケーションにアクセスします。
kubectl exec -it deploy/sleep -- sh -c 'for i in $(seq 1 10); do curl -s httpbin:8000/status/418 > /dev/null; done'次のコマンドを実行して、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
監視メトリクスの定期的なクリーニングの設定
手順 の手順に従って、メトリクスの定期的なクリーニング時間を 10 秒に設定します。
クリーンアップには数秒の遅延が発生します。検証プロセス中に、必要に応じてクリーンアップ時間を調整できます。
設定が完了したら、次のコマンドを実行して、HTTPBin アプリケーションの監視メトリクスを表示します。
kubectl exec -it deploy/httpbin -c istio-proxy -- sh -c ' for i in $(seq 1 2); do echo "# Current content of the istio_requests_total metric: "; curl -s 0.0.0.0:15020/stats/prometheus | grep istio_requests_total{; sleep 15; done'予期される出力:
# Current content of the istio_requests_total metric: istio_requests_total{reporter="destination",source_workload="sleep",source_canonical_service="sleep",...connection_security_policy="mutual_tls"} 30 # Current content of the istio_requests_total metric:上記のテストコマンドは合計 2 つのリクエストを送信します。この機能が有効になる前は、各リクエストは 1 行のメトリクスと 1 行のカスタム出力を返します。この機能が有効になると、メトリクスは 15 秒以内にクリーンアップされ、各リクエストは 1 行のカスタム出力を返します。