コントロール プレーンのロギングとモニタリング

このドキュメントでは、Cloud LoggingCloud Monitoring を使用して Traffic Director コントロール プレーンのログと指標を表示する方法について説明します。

サービス メッシュを使用すると、サービスとの間のトラフィックを監視できるため、サービス自体のコードを変更することなく、優れたモニタリングとデバッグが可能になります。ログエントリでは、正常な接続と切断の記録、誤って構成されたクライアントのエラーレポート、API リソースの競合に関するアラートなど、サービス メッシュをトラブルシューティングするための重要な情報が提供されます。

ユースケース

コントロール プレーンのロギングとモニタリングには、次の 3 つのユースケースがあります。

  • Traffic Director コントロール プレーンを対象とした Cloud Logging: Logging のすべての組み込み機能を使用して、Traffic Director のすべてのロギングデータとイベントが対象であるアラートを安全に保存、検索、分析、設定できます。Traffic Director は、Envoy または gRPC クライアントが接続または切断された場合のほか、構成の問題を検出した場合に、ログを Logging にエクスポートします。
  • Traffic Director コントロール プレーンを対象とした Cloud Monitoring: Traffic Director は、Traffic Director コントロール プレーンに接続されているクライアントの数を示す主要な指標を Monitoring にエクスポートします。Monitoring でダッシュボードを設定してこの指標をリアルタイムで可視化すると、クライアントが接続および切断された時点でのメッシュの健全性をモニタリングできます。これにより、メッシュに対して SLO を設定することもできます。
  • すぐに問題のトラブルシューティングを行う: Traffic Director はデフォルトで、テレメトリーを Logging と Monitoring にエクスポートします。ロギングとモニタリングを構成するために追加の設定を行う必要はありません。メッシュを初めて設定する場合も含め、いつでも問題をトラブルシューティングできます。

ログを表示する

Traffic Director のログを表示するには、ログ エクスプローラを使用します。以下のセクションでは、Traffic Director のログを表示するクエリの例を示しますが、上記のリンク先の情報を使用して独自のクエリを作成することもできます。

  1. Google Cloud Console で、[ログ エクスプローラ] ページに移動します。

    [ログ エクスプローラ] に移動

  2. [リソース] リストで、次の操作を行います。
    • サービス ルーティング API を使用する場合は、Gateway Scope または Mesh を選択します。
    • 古い API を使用する場合は、GCE Network を選択します。
  3. [ログ名] リストで、[trafficdirector.googleapis.com/events] を選択します。
  4. [実行] をクリックします。

Traffic Director のログエントリ項目

項目 説明
node_id xDS クライアントで定められる xDS クライアント ノードの ID。
client_type Traffic Director に接続された xDS クライアントの種類。有効な値は次のとおりです。
  • ENVOY
  • GRPC-JAVA
  • GRPC-C++
  • GRPC-PYTHON
  • GRPC-GO
  • UNKNOWN
node_ip クライアントで定められるノードの IP アドレス。
api_version xDS クライアントが Traffic Director に接続するために使用する xDS API バージョン。有効な値は V2V3 です。
description テキストによるイベントの詳しい説明。

ログエントリの例

ログエントリの例 説明
「Traffic Director が xDS クライアントの構成を見つけることができませんでした。」 このログは、構成が存在しないために xDS クライアントが Traffic Director によって拒否されたときに生成されます。これは、Traffic Director 関連の API リソースの設定が不完全であることが原因の可能性があります。
「クライアントが正常に接続されました。」 このようなログ メッセージは、クライアントが Traffic Director に正常に接続されるたびに生成されます。
「クライアントが正常に切断されました。」 確立したクライアントが Traffic Director から切断されるたびに、このようなログ メッセージが生成されます。
「TRAFFICDIRECTOR_INTERCEPTION_PORT メタデータ変数が設定されていません。インターセプト リスナーのルーティング構成は存在しますが、無視されます。」 このようなログ メッセージは、Traffic Director リソースが正しく構成されているが、xDS クライアント ノードのメタデータに TRAFFICDIRECTOR_INTERCEPTION_PORT 変数が設定されていない場合に生成されます。そのため、この構成はクライアントに追加されません。
「インターセプト リスナーは指定されたポート 15001 に構築されていますが、ルーティング構成がありません。」 このようなログ メッセージは、TRAFFICDIRECTOR_INTERCEPTION_PORT 変数が xDS クライアント ノード メタデータに設定されているが、Traffic Director に対して完全な xDS レスポンスを生成するように構成されたリソースがない場合に生成されます。
「ADS レスポンスを Traffic Director から送信できませんでした。ノードからの最新の検出リクエストに対して、誤ったバージョンやノンスが返されました。」 このようなログ メッセージは、xDS クライアントからの通信の不具合により Traffic Director が xDS レスポンスを正しく処理できなかったときに生成されます。このメッセージは、クライアントの実装エラーを示しています。クライアントのログの確認をおすすめします。
「クライアントがバックエンド サービス backend_service_id にクロスリージョン トラフィックを送信しています。ソース リージョン: source_region 宛先リージョン: destination_region1, destination_region2 このようなログメッセージは、クライアントがソースリージョンから 1 つ以上の宛先リージョンにクロスリージョン トラフィックを送信したことを Traffic Director に報告したときに生成されます。

指標を表示する

Traffic Director は、3 つの指標(xDS API の接続ストリーム数リクエスト数ゾーンごとのリクエスト数)を Cloud Monitoring にエクスポートします。xDS API の接続ストリーム数は、コントロール プレーンに接続されているクライアントの数を示します。リクエスト数は、バックエンド サービスに送信され、ソース リージョン、宛先リージョン、リクエスト ステータス別にグループ化されたリクエストの数を示します。ゾーンごとのリクエスト数は、バックエンド サービスに送信されたリクエストの数を表します。これは、送信元ゾーン、宛先ゾーン、リクエスト ステータスでグループ化されています。これらの指標を表示するには、Metrics Explorer を使用します。

Traffic Director の指標を表示するには、次の手順を行います。

  1. Google Cloud コンソールで、[Metrics Explorer] ページに移動します。

    Metrics Explorer に移動

  2. [Resource type] リストでリソースを選択します。
    • サービス ルーティング API を使用する場合は、Gateway Scope または Mesh を選択します。
    • 古い API を使用する場合は、Network を選択します。
  3. [Metric] リストで [connected_clients] を選択します。
  4. [Resource type] リストに戻り、[Compute Engine Backend Service] を選択します。
  5. [Metric] リストで、Request count または Request count by zone を選択します。

または、クエリを使用してクロスリージョンのリクエスト数を表示することもできます。

  1. [MQL] を選択します。
  2. フィールドに次のサンプルクエリを入力します。
    fetch gce_backend_service
    | metric 'trafficdirector.googleapis.com/xds/server/request_count'
    | filter ( ne(metric.source_region, metric.destination_region))
    | align rate(1m)
    | every 1m
    | group_by [metric.source_region, metric.destination_region, resource.backend_service_id],
    [value_request_count_aggregate: aggregate(value.request_count)]
    
  3. [RUN QUERY] をクリックします。

ログベースの指標とアラートを設定する

次のステップでは、ログベースの指標を設定する必要があります。ログベースの指標の設定については、概要をご覧ください。

ユーザー指定のメッセージが追加したログに出力された場合は通知するようにアラートを構成できます。こうしたアラートにより、予期しないことが発生したときにオペレータへ通知できます。たとえば、Traffic Director の構成の変更によって API リソースの競合が発生すると、そのエラー メッセージに関するアラートを受け取ることができます。ログベースの指標に関するアラートを設定するには、グラフとアラートを構成するをご覧ください。