マイクロサービスのオブザーバビリティ ツールを使用すると、アプリケーションを計測して、Google Cloud やその他の場所にデプロイされた gRPC ワークロードからテレメトリー データを収集し、Cloud Monitoring、Cloud Logging、Cloud Trace で表示できるようになります。
このドキュメントは、gRPC サービスのオーナー、サイト信頼性エンジニア、および gRPC ワークロードのトラブルシューティングと最適化にテレメトリー データを使用するユーザーを対象としています。
オブザーバビリティは、依存関係を公開することなく、指標、トレース、gRPC ロギングの OpenCensus プラグインを 1 つの統合プラグインにラップします。マイクロサービス オブザーバビリティは、Cloud Monitoring、Cloud Logging、Cloud Trace と統合されるオブザーバビリティ データを利用します。このドキュメントでは、オブザーバビリティ プラグインを gRPC アプリケーションに組み込む手順について説明します。
マイクロサービス オブザーバビリティには、アプリケーションの情報収集とデバッグに役立つ次の機能があります。
- トランスポート レベルの RPC イベントログの生成。
- 分散トレースのサポート。
- Cloud Monitoring のサポート(事前定義されたダッシュボードを含む)。
- Cloud Logging による推奨クエリ。
- リソースラベルとカスタムラベル。
機能
このセクションでは、マイクロサービス オブザーバビリティ機能について説明します。
テレメトリー統合
デフォルトで、gRPC の各言語(C++、Go、Java)用のオブザーバビリティ プラグイン パッケージが Google Cloud Observability に統合されています。最小限の構成で、このプラグインはプロジェクトとデプロイメントに関するメタデータを取得し、トレース、指標、ログデータ生成のデフォルト値を構成します。
RPC トランスポート レベル イベントを検査する
リモート プロシージャ コール(RPC)のライフサイクルには、メタデータ イベント(ヘッダーやトレーラなど)、メッセージ イベント、ステータス イベント(OK ステータスやエラー ステータスなど)、終了イベントを含めることができます。マイクロサービス オブザーバビリティを使用すると、イベントの種類ごとに詳細を調べることができます。シリアル化されたメッセージの長さ、権限、クライアント / サーバーのアドレス、クライアントとサーバーが RPC をキャンセルしたかどうかを確認できます。
マイクロサービス オブザーバビリティで明示的に設定すると、メッセージやヘッダーのペイロード ロギングを有効にできます。ペイロードログ、制御メッセージ、ヘッダー ペイロード ログのサイズ制限は個別に設定できます。ワイルドカードの有無にかかわらず、メソッドのターゲット グループを指定することもできます。
RPC の分散トレースのサポート
サーバー アーキテクチャにより、コンポーネントを通過する複数回の呼び出しや個別のリクエストに RPC をファンアウトできます。マイクロサービス オブザーバビリティの分散トレースにより、複雑なシステムの分析とトラブルシューティングが容易になります。マイクロサービス オブザーバビリティ プロダクトには、gRPC アプリケーションがトレースを開始してスパンを生成し、トレース コンテキストを伝播するための組み込みサポートが用意されています。
指標モニタリングの測定値をキャプチャする
このプラグインは、メッセージ数やメッセージ サイズからレイテンシまでの幅広い範囲の測定をメッセージ レベル、RPC レベル、メソッドレベルでサポートしています。この測定値は Cloud Monitoring にアップロードされます。収集された指標は、Cloud Monitoring の Metrics Explorer で確認できます。このダッシュボードには、事前に設定された一連のグラフが表示されます。また、独自のダッシュボードに指標を表示することもできます。
トレースとログの相関関係
トレースはシステムのエラーや問題を特定するのに役立ち、ログエントリはエラーや問題の詳細を特定するのに役立ちます。トレースとログを組み合わせることで、エラーや問題の詳細な状況を把握でき、さまざまなシステムにまたがる RPC についてより深く理解できます。マイクロサービス オブザーバビリティでは、ログとトレースが自動的に関連付けられます。これは、アップストリームのサンプリング決定またはユーザー定義のサンプリング レートに基づいてサンプリングされます。
リソースラベルとカスタムラベル
オブザーバビリティ データをより効果的に探索できるように、マイクロサービス オブザーバビリティはデフォルトでリソースラベルを提供し、アプリケーションでカスタムラベルを定義できるようにします。リソースラベルは、Compute Engine ノード名や Google Kubernetes Engine 名前空間などのワークロードのロケーションにアノテーションを付ける、デプロイに固有の Key-Value ペアです。
カスタムラベルは、以下のようなカスタマイズされた情報を付加するメカニズムを提供します。
- トレースデータのスパンラベル。
- 指標データへの指標ラベルとして。
- ロギングデータへのログエントリ ラベルとして。
カスタムラベルは、ソース バージョンや正規サービス名を含める場合に役立ちます。これらを使用して、ユーザー固有の情報を追加できます。これにより、ログ、指標、トレースで特定のオブザーバビリティ データを特定できます。
推奨クエリ
マイクロサービス オブザーバビリティにより、Cloud Logging にいくつかの推奨クエリが自動的に提供されます。詳細については、推奨クエリをご覧ください。
アーキテクチャ
次の図は、マイクロサービス オブザーバビリティがオブザーバビリティ データを収集して提供する仕組みを示しています。
まず、オブザーバビリティ構成を gRPC ワークロードに指定します。オブザーバビリティ構成は、環境変数で設定したフィールドで構成されます。この構成では次のことを定義します。
- Cloud Trace にエクスポートされるトレーススパン。
- Monitoring にエクスポートされる指標データ。
- Cloud Logging にエクスポートされる RPC イベント。
この情報は Cloud Monitoring のカスタム ダッシュボードで確認できます。また、Cloud Logging でクエリの候補を取得できます。Cloud Trace、Cloud Monitoring、Cloud Logging の情報を任意のサードパーティ プラットフォームにエクスポートすることもできます。
料金
マイクロサービス オブザーバビリティの料金は Google Cloud Observability の料金と同じです。マイクロサービス オブザーバビリティ プラグインとともに Cloud Trace、Cloud Logging、Cloud Monitoring を使用する場合でも、個別の料金は発生しません。詳細については、Google Cloud Observability の料金をご覧ください。
次のステップ
マイクロサービス オブザーバビリティの設定については、マイクロサービス オブザーバビリティの設定をご覧ください。
構成データ、トレース定義、指標定義、ログ定義の詳細については、マイクロサービス オブザーバビリティ リファレンスをご覧ください。