計測とは、アプリケーションのランタイム動作に関するデータを生成または収集する特定のコードのことを指します。アプリケーション内で OpenTelemetry などを使用して計測を実行することで、言語ランタイム、フレームワーク、アプリケーション ロジックに関するドメイン固有の情報を収集し、そのデータを Google Cloud プロジェクトまたは他の宛先に送信できます。このデータはテレメトリーとも呼ばれ、指標、ログ、トレースなどが含まれます。
システムレベルの指標(CPU 使用率、メモリ使用量、ディスク使用量など)は、アプリケーションの問題を検出する際に役立ちますが、アプリケーション レベルの問題について十分な分析情報を得ることはできません。計測では、結果のテレメトリーからアプリケーション内で何が起きているのかがわかるため、アプリケーションが生成したデータから問題の根本原因の診断に必要な情報を得ることができます。多くの場合、ログには特定のエラー メッセージやスタック トレースなどのプログラムに関するコンテキストと、ソースコード内の場所が含まれています。同様に、分散トレースは、リクエストの処理時に複数のサービスがどのように関係しているのかを把握するのに役立ちます。指標を使用すると、アプリが正常に動作していない場合に通知を受け取ることができます。
アプリケーションを計測するには、テレメトリーを生成して、保存とクエリが可能な場所に送信します。たとえば、計測によってテレメトリーを Google Cloud プロジェクトに送信することもできます。Google Cloud Observability のサービスを使用すると、テレメトリー データの収集、分析、関連付けを行うことができます。また、デフォルトのダッシュボードやアラート ポリシーなど、組み込みのデフォルトも用意されているため、すぐにご利用を開始いただけます。Google Cloud Observability の詳細については、 Google Cloudのオブザーバビリティをご覧ください。
次の図は、アプリケーションが計測を使用してテレメトリーを生成し、ストレージ システムに送信する方法を示しています。
上の図のように、計測コードはアプリケーションのプロセス内に存在し、アプリケーションとやり取りしてテレメトリー データを生成します。その後、計測フレームワークが構成済みのストレージ システムにテレメトリーをエクスポートします。この図のストレージ システムは Google Cloud プロジェクトです。
ベンダーに依存しない測定フレームワークについて
テレメトリーを Google Cloudにのみ送信する場合でも、ベンダーに依存しないオープンソースの計測フレームワークを使用してアプリケーションを計測することをおすすめします。このようなフレームワークには、次のメリットがあります。
- ベンダー ロックインなし
- ベンダーに依存しないフレームワークは特定のベンダーに縛られず、独自のデータモデルを使用してテレメトリーを生成します。このため、データを複数のベンダーに送信できます。通常は、コードを変更せずにベンダーを変更できます。
- テレメトリー収集の手順が標準化されている
- OpenTelemetry などの優れた設計のフレームワークでは、アプリケーションからテレメトリーを収集するためのアプローチが標準化されています。サポートされている言語で記述されたアプリに同じフレームワークを使用できます。また、フレームワークが標準化されているため、すべてのサービスからテレメトリーを収集して比較できます。
- 相互運用可能なライブラリ
- 計測フレームワークでは、テレメトリーのシグナルを収集するライブラリのエコシステムが充実しています。また、これらのライブラリは相互運用が可能です。たとえば、OpenTelemetry には、トレースデータを収集するライブラリと指標データを収集するライブラリが用意されています。片方のライブラリを使用することも、両方のライブラリを使用することもできます。
一般的な推奨事項
このセクションでは、アプリの計測に関する一般的な推奨事項について説明します。 Google Cloudに固有のガイダンスについては、計測方法を選択するをご覧ください。
指標の収集には、OpenTelemetry または Prometheus を使用することをおすすめします。
OpenTelemetry は、アプリケーション計測用の統合フレームワークを提供するオープンソース プロジェクトです。よく利用されているライブラリ用の計測ライブラリも用意されています。OpenTelemetry では、テレメトリーを受信、変換、エクスポートできるスタンドアロン エージェントである OpenTelemetry Collector を利用できます。OpenTelemetry Collector の動作は、OpenTelemetry Collector 構成ファイルで決まります。テレメトリーをエージェントに送信するか、ストレージ システムに直接送信するには、OpenTelemetry Protocol(OTLP)を使用します。
Prometheus は人気のあるオープンソースのモニタリング システムです。Prometheus クライアント ライブラリを使用して、アプリケーションから指標を生成できます。また、人気のあるフレームワーク用の計測ライブラリに対してサードパーティのエコシステムが存在しています。Prometheus クライアントは、エージェントでスクレイピング可能な HTTP エンドポイントとして指標を公開します。
トレースの収集には、OpenTelemetry を使用することをおすすめします。
ログの収集には、Cloud Logging 用の JSON 構造化ログを出力するように構成可能なフレームワークを使用することをおすすめします。ログデータを書き込む場合は、次のものをおすすめします。
Google Cloud ソリューション
Google Cloud Observability には、テレメトリーを収集するための柔軟なオプションが用意されています。
アプリケーションを計測して Google Cloudにテレメトリーを送信する方法を示すコードサンプルについては、以下をご覧ください。
アプリケーションからレイテンシ データを収集して表示する方法については、アプリ リクエストのレイテンシを表示するをご覧ください。
Google Cloudの Prometheus 向けのフルマネージド、マルチクラウド、クロス プロジェクト ソリューションについては、Google Cloud Managed Service for Prometheus をご覧ください。
Ops エージェントの構成方法については、次のドキュメントをご覧ください。
次のステップ
Google Cloud Observability の詳細については、 Google Cloudのオブザーバビリティをご覧ください。