コントロール プレーンのロギングとモニタリング
このドキュメントでは、Cloud Logging と Cloud Monitoring を使用して Cloud Service Mesh コントロール プレーンのログと指標を表示する方法について説明します。
サービス メッシュを使用すると、サービスとの間のトラフィックを監視できるため、サービス自体のコードを変更することなく、優れたモニタリングとデバッグが可能になります。ログエントリでは、正常な接続と切断の記録、誤って構成されたクライアントのエラーレポート、API リソースの競合に関するアラートなど、サービス メッシュをトラブルシューティングするための重要な情報が提供されます。
ユースケース
コントロール プレーンのロギングとモニタリングには、次の 3 つのユースケースがあります。
- Cloud Service Mesh コントロール プレーンを対象とした Cloud Logging: Logging のすべての組み込み機能を使用して、Cloud Service Mesh のすべてのロギングデータとイベントが対象であるアラートを安全に保存、検索、分析、設定できます。Cloud Service Mesh は、Envoy または gRPC クライアントが接続または切断された場合のほか、構成の問題を検出した場合に、ログを Logging にエクスポートします。
- Cloud Service Mesh コントロール プレーンを対象とした Cloud Monitoring: Cloud Service Mesh は、Cloud Service Mesh コントロール プレーンに接続されているクライアントの数を示す主要な指標を Monitoring にエクスポートします。Monitoring でダッシュボードを設定してこの指標をリアルタイムで可視化すると、クライアントが接続および切断された時点でのメッシュの健全性をモニタリングできます。これにより、メッシュに対して SLO を設定することもできます。
- すぐに問題のトラブルシューティングを行う: Cloud Service Mesh はデフォルトで、テレメトリーを Logging と Monitoring にエクスポートします。ロギングとモニタリングを構成するために追加の設定を行う必要はありません。メッシュを初めて設定する場合も含め、いつでも問題をトラブルシューティングできます。
ログを表示
Cloud Service Mesh のログを表示するには、ログ エクスプローラを使用します。以下のセクションでは、Cloud Service Mesh のログを表示するクエリの例を示しますが、上記のリンク先の情報を使用して独自のクエリを作成することもできます。
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
- [リソース] リストで、次の操作を行います。
- サービス ルーティング API を使用する場合は、
Gateway Scope
またはMesh
を選択します。 - 古い API を使用する場合は、
GCE Network
を選択します。
- サービス ルーティング API を使用する場合は、
- [ログ名] リストで、[
trafficdirector.googleapis.com/events
] を選択します。 - [実行] をクリックします。
Cloud Service Mesh ログエントリ フィールド
フィールド | 説明 |
---|---|
node_id |
xDS クライアントによって提供された、xDS クライアント ノードの ID。 |
client_type |
Cloud Service Mesh に接続された xDS クライアントの種類。有効な値は次のとおりです。
|
node_ip |
クライアントで定められるノードの IP アドレス。 |
api_version |
xDS クライアントが Cloud Service Mesh に接続するために使用する xDS API バージョン。有効な値は V2 と V3 です。 |
description |
テキストによるイベントの説明(詳細付き)。 |
ログエントリの例
ログエントリの例 | 説明 |
---|---|
「Cloud Service Mesh が xDS クライアントの構成を見つけることができませんでした。」 | このログは、構成が存在しないために xDS クライアントが Cloud Service Mesh によって拒否されたときに生成されます。これは、Cloud Service Mesh 関連の API リソースの設定が不完全であることが原因の可能性があります。 |
「クライアントが正常に接続されました。」 | このようなログ メッセージは、クライアントが Cloud Service Mesh に正常に接続されるたびに生成されます。 |
「クライアントが正常に切断されました。」 | 確立したクライアントが Cloud Service Mesh から切断されるたびに、このようなログ メッセージが生成されます。 |
「TRAFFICDIRECTOR_INTERCEPTION_PORT メタデータ変数が設定されていません。 インターセプト リスナーのルーティング構成は存在しますが、無視されます。」 | このようなログ メッセージは、Cloud Service Mesh リソースが正しく構成されているが、xDS クライアント ノードのメタデータに TRAFFICDIRECTOR_INTERCEPTION_PORT 変数が設定されていない場合に生成されます。そのため、この構成はクライアントに追加されません。 |
「インターセプト リスナーは指定されたポート 15001 に構築されていますが、ルーティング構成がありません。」 | このようなログ メッセージは、TRAFFICDIRECTOR_INTERCEPTION_PORT 変数が xDS クライアント ノード メタデータに設定されているが、Cloud Service Mesh に対して完全な xDS レスポンスを生成するように構成されたリソースがない場合に生成されます。 |
「ADS レスポンスを Cloud Service Mesh から送信できませんでした。ノードからの最新の検出リクエストに対して、誤ったバージョンやノンスが返されました。」 | このようなログ メッセージは、xDS クライアントからの通信の不具合により Cloud Service Mesh が xDS レスポンスを正しく処理できなかったときに生成されます。このメッセージは、クライアントの実装エラーを示しています。クライアントのログの確認をおすすめします。 |
「クライアントがバックエンド サービス backend_service_id にクロスリージョン トラフィックを送信しています。ソース リージョン: source_region
宛先リージョン: destination_region1, destination_region2 」 |
このようなログメッセージは、クライアントがソースリージョンから 1 つ以上の宛先リージョンにクロスリージョン トラフィックを送信したことを Cloud Service Mesh に報告したときに生成されます。 |
指標を表示
Cloud Service Mesh は、3 つの指標(xDS API の接続ストリーム数とリクエスト数、ゾーンごとのリクエスト数)を Cloud Monitoring にエクスポートします。xDS API の接続ストリーム数は、コントロール プレーンに接続されているクライアントの数を示します。リクエスト数は、バックエンド サービスに送信され、ソース リージョン、宛先リージョン、リクエスト ステータス別にグループ化されたリクエストの数を示します。ゾーンごとのリクエスト数は、バックエンド サービスに送信されたリクエストの数を表します。これは、送信元ゾーン、宛先ゾーン、リクエスト ステータスでグループ化されています。これらの指標を表示するには、Metrics Explorer を使用します。
Cloud Service Mesh の指標を表示する手順は次のとおりです。
Google Cloud コンソールで、[Metrics Explorer] ページに移動します。
- [Resource type] リストでリソースを選択します。
- サービス ルーティング API を使用する場合は、
Gateway Scope
またはMesh
を選択します。 - 古い API を使用する場合は、
Network
を選択します。
- サービス ルーティング API を使用する場合は、
- [Metric] リストで [
connected_clients
] を選択します。 - [Resource type] リストに戻り、[
Compute Engine Backend Service
] を選択します。 - [Metric] リストで、
Request count
またはRequest count by zone
を選択します。
または、クエリを使用してクロスリージョンのリクエスト数を表示することもできます。
- [MQL] を選択します。
- このフィールドに、次の例のクエリを入力します。
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)]
- [実行] をクリックします。
ログベースの指標とアラートを設定する
次のステップでは、ログベースの指標を設定する必要があります。ログベースの指標の設定については、概要をご覧ください。
ユーザー指定のメッセージが追加したログに出力された場合は通知するようにアラートを構成できます。こうしたアラートにより、予期しないことが発生したときにオペレータへ通知できます。たとえば、Cloud Service Mesh の構成の変更によって API リソースの競合が発生すると、そのエラー メッセージに関するアラートを受け取ることができます。ログベースの指標に関するアラートを設定するには、グラフとアラートを構成するをご覧ください。