エクスポートされるメトリクス - AWS App Mesh

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

エクスポートされるメトリクス

Envoyは、独自の操作と、インバウンドおよびアウトバウンドトラフィックに関するさまざまなディメンションの両方に関する多くの統計を発行します。Envoy の統計の詳細については、Envoy のドキュメントの「統計」を参照してください。これらのメトリクスは、プロキシの管理ポート 上の /stats エンドポイントを介して利用可能になります (通常は 9901)。

stat プレフィックスは、単一リスナーを使用しているのか、複数のリスナーを使用しているのかによって異なります。その違いを示す例を以下に示します。

警告

単一リスナーを複数のリスナー機能に更新すると、以下の表に示す stat プレフィックスが更新され、重大な変更が発生する可能性があります。

Envoy イメージ 1.22.2.1-prod 以降を使用することをお勧めします。これにより、Prometheus エンドポイントで類似のメトリクス名を確認できます。

単一リスナー (SL)/「ingress」リスナープレフィックスが付いた既存の統計情報 複数のリスナー (ML)/「ingress.<protocol>.<port>」リスナープレフィックスが付いた新しい統計情報

http.*ingress*.rds.rds_ingress_http_5555.version_text

http.*ingress.http.5555*.rds.rds_ingress_http_5555.version_text

http.*ingress.http.6666*.rds.rds_ingress_http_6666.version_text

listener.0.0.0.0_15000.http.*ingress*.downstream_rq_2xx

listener.0.0.0.0_15000.http.*ingress.http.5555*.downstream_rq_2xx

listener.0.0.0.0_15000.http.*ingress.http.6666*.downstream_rq_2xx

http.*ingress*.downstream_cx_length_ms

http.*ingress.http.5555*.downstream_cx_length_ms

http.*ingress.http.6666*.downstream_cx_length_ms

統計エンドポイントの詳細については、Envoy のドキュメントの「統計エンドポイント」を参照してください。管理者インターフェイスの詳細については、「Envoy プロキシ管理インターフェイスを有効にする」を参照してください。

Amazon EKS での App Mesh の Prometheus

Prometheus はオープンソースのシステムモニタリングおよびアラートツールキットです。その機能の 1 つは、他のシステムが使用できるメトリクスを出力するための形式を指定することです。Prometheus の詳細については、Prometheus のドキュメントの「概要」を参照してください。Envoy は、パラメーター /stats?format=prometheus を渡すことで、統計エンドポイントを介してメトリクスを発行できます。

Envoy イメージビルド v1.22.2.1-prod を使用している場合、入力リスナー固有の統計情報を示すために 2 つのディメンションが追加されています。

  • appmesh.listener_protocol

  • appmesh.listener_port

Prometheus の既存の統計情報と新しい統計情報の比較です。

  • 「ingress」リスナープレフィックスが付いた既存の統計情報

    envoy_http_downstream_rq_xx{appmesh_mesh="multiple-listeners-mesh",appmesh_virtual_node="foodteller-vn",envoy_response_code_class="2",envoy_http_conn_manager_prefix="ingress"} 931433
  • 「ingress.<protocol>.<port>」が付いた新しい統計情報、Appmesh Envoy イメージ v1.22.2.1-prod 以降

    envoy_http_downstream_rq_xx{appmesh_mesh="multiple-listeners-mesh",appmesh_virtual_node="foodteller-vn",envoy_response_code_class="2",appmesh_listener_protocol="http",appmesh_listener_port="5555",envoy_http_conn_manager_prefix="ingress"} 20
  • 「ingress.<protocol>.<port>」が付いた新しい統計情報、カスタム Envoy イメージビルド

    envoy_http_http_5555_downstream_rq_xx{appmesh_mesh="multiple-listeners-mesh",appmesh_virtual_node="foodteller-vn",envoy_response_code_class="2",envoy_http_conn_manager_prefix="ingress"} 15983

複数のリスナーの場合、特別なクラスター cds_ingress_<mesh name>_<virtual gateway name>_self_redirect_<ingress_listener_port>_<protocol>_<port> はリスナー固有になります。

  • 「ingress」リスナープレフィックスが付いた既存の統計情報

    envoy_cluster_assignment_stale{appmesh_mesh="multiple-listeners-mesh",appmesh_virtual_gateway="tellergateway-vg",Mesh="multiple-listeners-mesh",VirtualGateway="tellergateway-vg",envoy_cluster_name="cds_ingress_multiple-listeners-mesh_tellergateway-vg_self_redirect_http_15001"} 0
  • 「ingress.<protocol>.<port>」が付いた新しい統計情報

    envoy_cluster_assignment_stale{appmesh_mesh="multiple-listeners-mesh",appmesh_virtual_gateway="tellergateway-vg",envoy_cluster_name="cds_ingress_multiple-listeners-mesh_tellergateway-vg_self_redirect_1111_http_15001"} 0 envoy_cluster_assignment_stale{appmesh_mesh="multiple-listeners-mesh",appmesh_virtual_gateway="tellergateway-vg",envoy_cluster_name="cds_ingress_multiple-listeners-mesh_tellergateway-vg_self_redirect_2222_http_15001"} 0

Prometheus のインストール

  1. EKS リポジトリを Helm に追加します。

    helm repo add eks https://aws.github.io/eks-charts
  2. App Mesh Prometheus のインストール

    helm upgrade -i appmesh-prometheus eks/appmesh-prometheus \ --namespace appmesh-system

Prometheus の例

次は、Prometheus 永続的ストレージ用に PersistentVolumeClaim を作成する例です。

helm upgrade -i appmesh-prometheus eks/appmesh-prometheus \ --namespace appmesh-system \ --set retention=12h \ --set persistentVolumeClaim.claimName=prometheus

Prometheus の使用方法のチュートリアル

Amazon EKS を使用した Prometheus と Prometheus について詳しく知るには

App Mesh の CloudWatch

Amazon EKS から CloudWatch に Envoy 統計を出力します。

CloudWatch エージェントをクラスターにインストールし、プロキシからメトリクスのサブセットを収集するように設定できます。Amazon EKS クラスターをまだ作成していない場合は、GitHub の「チュートリアル:Amazon EKS を使用した App Mesh」の手順を使用して作成できます。同じチュートリアルに従って、サンプルアプリケーションをクラスターにインストールできます。

クラスターに適切な IAM アクセス許可を設定し、エージェントをインストールするには、「Prometheus メトリクスコレクションを持つ CloudWatch エージェントをインストールする」の手順に従います。デフォルトのインストールには、Envoy 統計の有用なサブセットを取得する Prometheus スクレイプ設定が含まれています。詳細については、「App Mesh の Prometheus メトリクス」を参照してください。。

エージェントが収集するメトリクスを表示するように設定された App Mesh カスタム CloudWatch ダッシュボードを作成するには、「Prometheus メトリクスの表示」チュートリアルの手順に従います。トラフィックが App Mesh アプリケーションに入ると、グラフに対応するメトリクスが入力され始めます。

CloudWatch のメトリクスのフィルタ処理

App Mesh メトリクス拡張機能には、メッシュで定義したリソースの動作に関するインサイトを提供する便利なメトリクスのサブセットが用意されています。CloudWatch エージェントでは Prometheus メトリクスのスクレイピングがサポートされているため、Envoy からプルして CloudWatch に送信するメトリクスを選択するためのスクレープ設定を提供できます。

Prometheus を使用してメトリクスをスクレイピングする例については、「メトリクス拡張機能」チュートリアルを参照してください。

CloudWatch の例

CloudWatch の設定例は、AWSサンプルリポジトリにあります。

CloudWatch を使用するためのチュートリアル

App Mesh のメトリクス拡張機能

Envoy は、数百のメトリクスをいくつかの異なる次元に分けて生成します。メトリクスは、App Mesh との関連付け方法においては簡単ではありません。仮想サービスの場合、特定の仮想ノードまたは仮想ゲートウェイと通信している仮想サービスを確実に知るメカニズムはありません。

App Mesh メトリクス拡張により、メッシュで実行される Envoy プロキシが強化されます。この機能拡張により、プロキシは、定義したリソースを認識した追加のメトリクスを出力できます。追加のメトリクスのこの小さなサブセットは、App Mesh で定義したリソースの動作をより詳細に把握するのに役立ちます。

App Mesh メトリクス拡張機能を有効にするには、環境変数 APPMESH_METRIC_EXTENSION_VERSION1 に設定します。

APPMESH_METRIC_EXTENSION_VERSION=1

Envoy 設定変数の詳細については、Envoy 設定変数 を参照してください。

インバウンドトラフィックに関連するメトリクス

  • ActiveConnectionCount

    • envoy.appmesh.ActiveConnectionCount — アクティブな TCP 接続の数。

    • ディメンション — メッシュ、VirtualNode、VirtualGateWay

  • NewConnectionCount

    • envoy.appmesh.NewConnectionCount — TCP 接続の合計数。

    • ディメンション — メッシュ、VirtualNode、VirtualGateWay

  • ProcessedBytes

    • envoy.appmesh.ProcessedBytes — ダウンストリームクライアントとの間で送受信された TCP バイトの合計。

    • ディメンション — メッシュ、VirtualNode、VirtualGateWay

  • RequestCount

    • envoy.appmesh.RequestCount – 処理された HTTP リクエストの数。

    • ディメンション — メッシュ、VirtualNode、VirtualGateWay

  • GrpcRequestCount

    • envoy.appmesh.GrpcRequestCount – 処理された gPRC リクエストの数。

    • ディメンション — メッシュ、VirtualNode、VirtualGateWay

アウトバウンドトラフィックに関連するメトリクス

アウトバウンドメトリクスは、仮想ノードからのものか仮想ゲートウェイからのものかに基づいて、さまざまなディメンションが表示されます。

  • TargetProcessedBytes

    • envoy.appmesh.TargetProcessedBytes — Envoy のアップストリームターゲットとの間で送受信された TCP バイトの合計。

    • ディメンション:

      • 仮想ノードのディメンション — メッシュ、VirtualNode、ターゲット仮想サービス、ターゲット仮想ノード

      • 仮想ゲートウェイのディメンション — メッシュ、VirtualGateWay、TargetVirtualService、TargetVirtualNode

  • HTTPCode_Target_2XX_Count

    • envoy.appmesh.HTTPCode_Target_2XX_Count — 2xx HTTP レスポンスを発生させた、Envoy のアップストリームターゲットへの HTTP リクエストの数。

    • ディメンション:

      • 仮想ノードのディメンション — メッシュ、VirtualNode、ターゲット仮想サービス、ターゲット仮想ノード

      • 仮想ゲートウェイのディメンション — メッシュ、VirtualGateWay、TargetVirtualService、TargetVirtualNode

  • HTTPCode_Target_3XX_Count

    • envoy.appmesh.HTTPCode_Target_3XX_Count — 3xx HTTP レスポンスを発生させた、Envoy のアップストリームターゲットへの HTTP リクエストの数。

    • ディメンション:

      • 仮想ノードのディメンション — メッシュ、VirtualNode、ターゲット仮想サービス、ターゲット仮想ノード

      • 仮想ゲートウェイのディメンション — メッシュ、VirtualGateWay、TargetVirtualService、TargetVirtualNode

  • HTTPCode_Target_4XX_Count

    • envoy.appmesh.HTTPCode_Target_4XX_Count — 4xx HTTP レスポンスを発生させた、Envoy のアップストリームターゲットへの HTTP リクエストの数。

    • ディメンション:

      • 仮想ノードのディメンション — メッシュ、VirtualNode、ターゲット仮想サービス、ターゲット仮想ノード

      • 仮想ゲートウェイのディメンション — メッシュ、VirtualGateWay、TargetVirtualService、TargetVirtualNode

  • HTTPCode_Target_5XX_Count

    • envoy.appmesh.HTTPCode_Target_5XX_Count — 5xx HTTP レスポンスを発生させた、Envoy のアップストリームターゲットへの HTTP リクエストの数。

    • ディメンション:

      • 仮想ノードのディメンション — メッシュ、VirtualNode、ターゲット仮想サービス、ターゲット仮想ノード

      • 仮想ゲートウェイのディメンション — メッシュ、VirtualGateWay、TargetVirtualService、TargetVirtualNode

  • RequestCountPerTarget

    • envoy.appmesh.RequestCountPerTarget — Envoy のアップストリームターゲットに送信されたリクエストの数。

    • ディメンション:

      • 仮想ノードのディメンション — メッシュ、VirtualNode、ターゲット仮想サービス、ターゲット仮想ノード

      • 仮想ゲートウェイのディメンション — メッシュ、VirtualGateWay、TargetVirtualService、TargetVirtualNode

  • TargetResponseTime

    • envoy.appmesh.TargetResponseTime — Envoy のアップストリームターゲットに対してリクエストが行われた時点から完全なレスポンスが受信されるまでの経過時間。

    • ディメンション:

      • 仮想ノードのディメンション — メッシュ、VirtualNode、ターゲット仮想サービス、ターゲット仮想ノード

      • 仮想ゲートウェイのディメンション — メッシュ、VirtualGateWay、argetVirtualService、TargetVirtualNode

App Mesh の Datadog

Datadog は、クラウドアプリケーションのエンドツーエンドの監視、メトリクス、およびログ記録のための監視およびセキュリティアプリケーションです。Datadog は、インフラストラクチャ、アプリケーション、およびサードパーティアプリケーションを完全に監視できるようにします。

Datadog のインストール

Datadog の詳細について