アプリケーションを作成する場合は、コードを計測してテレメトリーを生成し、アプリケーションの内部ランタイム動作を詳細にオブザーブできます。このページでは、プロセス内計測のコンセプトについて説明し、OpenTelemetry などのベンダーに依存しないフレームワークのメリットについて解説します。また、Google Cloud Observability の言語固有のガイドとコードサンプルを紹介します。
計測とオブザーバビリティとは
計測 とは、アプリケーションのランタイム動作に関するデータを生成または収集する特定のコードのことを指します。アプリケーション内で OpenTelemetry などを使用して計測を実行することで、 言語ランタイム、フレームワーク、アプリケーション ロジックに関する ドメイン固有の情報を収集し、そのデータを プロジェクト Google Cloud または他の宛先に送信できます。 このデータはテレメトリーとも呼ばれ、 ログ、指標、トレースなどが含まれます。
システムレベルの指標(CPU 使用率、メモリ使用量、ディスク使用量など)は、アプリケーションの問題を検出する際に役立ちますが、アプリケーション レベルの問題について十分な分析情報を得ることはできません。計測では、結果のテレメトリーからアプリケーション内で何が起きているのかがわかるため、アプリケーションが生成したデータから問題の根本原因の診断に必要な情報を得ることができます。 多くの場合、ログには特定のエラー メッセージやスタック トレースなどのプログラムに関するコンテキストと、ソースコード内の場所が含まれています。同様に、分散トレースは、リクエストの処理時に複数のサービスがどのように関係しているのかを把握するのに役立ちます。指標を使用すると、アプリが正常に動作していない場合を判断できます。
アプリケーションを計測するには、テレメトリーを生成して、保存とクエリが可能なシステムに送信します。たとえば、計測によってテレメトリーを Google Cloud プロジェクトに送信することもできます。Google Cloud Observability のサービスを使用すると、テレメトリー データの収集、分析、関連付けを行うことができます。また、デフォルトのダッシュボードやアラート ポリシーなど、組み込みのデフォルトも用意されているため、すぐにご利用を開始いただけます。Google Cloud Observability の詳細については、 のオブザーバビリティをご覧ください Google Cloud。
次の図は、アプリケーションが計測を使用してテレメトリーを生成し、ストレージ システムに送信する方法を示しています。
上の図のように、計測コードはアプリケーションのプロセス内に存在し、アプリケーションとやり取りしてテレメトリー データを生成します。その後、計測フレームワークが構成済みのストレージ システムにテレメトリーをエクスポートします。この図のストレージ システムは Google Cloud プロジェクトです。
ベンダーに依存しない計測フレームワークを使用する理由
テレメトリーを Google Cloudにのみ送信する場合でも、 ベンダーに依存しないオープンソースの計測フレームワークを使用してアプリケーションを計測することをおすすめします。このようなフレームワークには、次のメリットがあります。
- ベンダー ロックインなし
- ベンダーに依存しないフレームワークは特定のベンダーに縛られず、独自のデータモデルを使用してテレメトリーを生成します。このため、データを複数のベンダーに送信できます。通常は、コードを変更せずにベンダーを変更できます。
- テレメトリー収集の手順が標準化されている
- OpenTelemetry などの優れた設計のフレームワークでは、アプリケーションからテレメトリーを収集するためのアプローチが標準化されています。サポートされている言語で記述されたアプリに同じフレームワークを使用できます。また、フレームワークが標準化されているため、すべてのサービスからテレメトリーを収集して比較できます。
- 相互運用可能なライブラリ
- 計測フレームワークでは、テレメトリーのシグナルを収集するライブラリのエコシステムが充実しています。また、これらのライブラリは相互運用が可能です。たとえば、OpenTelemetry には、トレースデータを収集するライブラリと指標データを収集するライブラリが用意されています。片方のライブラリを使用することも、両方のライブラリを使用することもできます。
計測戦略を決定する
- 計測アプローチを選択する では、コンピューティング Google Cloud プラットフォームとテレメトリーの要件に基づいて計測に関する推奨事項を示します。
- OpenTelemetry とはでは、OpenTelemetry のミッションと目標について説明します。
- のオブザーバビリティ Google Cloudでは、一般的な情報を提供します。
サンプルと実装ガイド
サンプルの概要では、次のコレクタベースのコードサンプルのアーキテクチャと必要な Identity and Access Management ロールについて説明します。
Trace エクスポータから OTLP エンドポイントに移行する では、直接エクスポートを使用して OTLP 形式のトレースデータを送信するアプリケーションを更新する方法について説明します。
GKE 上の Java ワークロードに OpenTelemetry ゼロコード計測を使用する では、Java アプリケーションを変更せずにテレメトリーを収集する方法について説明します。