このドキュメントでは、Container-Optimized OS で Google が構築した OpenTelemetry Collector を実行し、計測対象のアプリケーションから OTLP のログ、指標、トレースを収集して、そのデータを Google Cloudにエクスポートする方法について説明します。
始める前に
OpenTelemetry Collector を実行するには、次のリソースが必要です。
Cloud Monitoring API、Cloud Trace API、Cloud Logging API が有効になっている Google Cloud プロジェクト。
Google Cloud プロジェクトが存在しない場合は、次の操作を行います。
Google Cloud コンソールで、[新しいプロジェクト] に移動します。
[プロジェクト名] フィールドにプロジェクトの名前を入力して、[作成] をクリックします。
[お支払い] に移動します。
作成したプロジェクトをまだ選択していない場合は、ページ上部でプロジェクトを選択します。
既存のお支払いプロファイルを選択するか、新しいお支払いプロファイルを作成するように求められます。
新しいプロジェクトでは、Monitoring API、Trace API、Logging API がデフォルトで有効になっています。
Google Cloud プロジェクトがすでに存在する場合は、Monitoring API、Trace API、Logging API が有効になっていることを確認します。
Container-Optimized OS 仮想マシン(VM)。Container-Optimized OS VM が存在しない場合は、インスタンスの作成と構成の手順に沿って操作します。
gcloud
のインストール。gcloud
のインストールについては、Google Cloud CLI をインストールするをご覧ください。
Collector の権限を構成する
デフォルトでは、Container-Optimized OS VM は Compute Engine のデフォルトのサービス アカウント PROJECT_NUMBER-compute@developer.gserviceaccount.com
を使用します。このサービス アカウントには通常、このドキュメントで説明する指標とログの書き込みに必要な Identity and Access Management(IAM)のロールが付与されています。
インスタンスにカスタム サービス アカウントを構成する場合は、サービス アカウントへのアクセスを管理するをご覧ください。
Collector をデプロイする
Google がビルドした OpenTelemetry Collector を実行するには、Container-Optimized OS VM の構成ファイルを指定する必要があります。cloud-init
ツールを使用して構成ファイルを作成できます。Google が構築した Collector を使用する場合の推奨される cloud-init
ファイルは次のとおりです。
テレメトリーを送信する Collector コンテナとシステム上の他のコンテナ間の通信を容易にするために、Docker bridge
ネットワークを作成することをおすすめします。ネットワークを作成するには、次のコマンドを実行します。
docker network create -d bridge otel otel
次のコマンドを使用して Collector コンテナを実行します。
上記のコマンドは、次の処理を行います。
- Collector コンテナをバックグラウンドで実行します。
- Collector コンテナを、先ほど作成した otel ブリッジ ネットワークに接続します。他のコンテナをブリッジに接続してテレメトリーを送信できます。
- 構成ファイルをコンテナにマウントして、ファイルにアクセスし Collector を構成できるようにします。
Collector を構成する
Google が構築した Collector で使用できる OpenTelemetry Collector 構成が用意されています。この構成は、大量の OTLP の指標、ログ、トレースを送信するように設計されています。この構成は、一般的な取り込みの問題を回避するようにも設計されています。構成に追加することはできますが、要素を削除しないことを強くおすすめします。
このセクションでは、用意されている構成、エクスポータ、プロセッサ、レシーバーなどの主要コンポーネント、および利用可能なその他のコンポーネントについて説明します。
用意されている Collector の構成
Collector の構成は、opentelemetry-operations-collector
リポジトリの google-built-opentelemetry-collector
ディレクトリにあります。
エクスポータ
Collector の構成には、次のエクスポータが含まれています。
googlecloud
エクスポータ(ログとトレース用)。このエクスポータは、デフォルトのログ名で構成されています。googlemanagedprometheus
エクスポータ(指標用)。このエクスポータには構成は必要ありませんが、構成オプションがあります。googlemanagedprometheus
エクスポータの構成オプションについては、Google Cloud Managed Service for Prometheus ドキュメントの OpenTelemetry Collector を使ってみるをご覧ください。
プロセッサ
Collector の構成には、次のプロセッサが含まれています。
batch
: テレメトリー リクエストを、 Google Cloud のリクエストあたりの最大エントリ数に達した時点か、 Google Cloud の 5 秒ごとの最小間隔のいずれか早いほうでバッチ処理するように構成します。memory_limiter
: Collector のメモリ使用量を制限し、上限を超えたときにデータポイントを破棄することで、メモリ不足によるクラッシュを防止します。resourcedetection
:project_id
などの Google Cloud リソースラベルを自動的に検出します。
レシーバー
Collector の構成には、otlp
レシーバーのみが含まれています。アプリケーションを計測して OTLP のトレースと指標を Collector の OTLP エンドポイントに送信することについては、計測方法を選択するをご覧ください。
使用可能なコンポーネント
Google が構築した OpenTelemetry Collector には、Google Cloud Observability 内でリッチなエクスペリエンスを実現するためにほとんどのユーザーが必要とするコンポーネントが含まれています。使用可能なコンポーネントの全一覧については、opentelemetry-operations-collector
リポジトリのコンポーネントをご覧ください。
使用可能なコンポーネントの変更または追加をリクエストするには、opentelemetry-operations-collector
リポジトリで機能リクエストを開きます。
テレメトリーを生成する
オープンソースの telemetrygen
ツールを使用して構成をテストできます。OpenTelemetry プロジェクトは、GitHub Container Registry にコンテナを提供します。
次のコマンドを実行する前に、Collector をデプロイするで Docker コマンドに使用されているデフォルトを変更した場合は、次のプレースホルダを置き換えます。
- otel: Docker
bridge
ネットワークの作成時に指定した名前。 - opentelemetry-collector: コンテナの実行時に指定した名前。
ログを生成する
telemetrygen
ツールを使用してログを生成するには、次のコマンドを実行します。
docker run \ --net=otel \ ghcr.io/open-telemetry/opentelemetry-collector-contrib/telemetrygen:v0.105.0 \ logs --otlp-insecure --rate=3 --duration=5m \ --otlp-endpoint=opentelemetry-collector:4317
指標を生成
telemetrygen
ツールを使用して指標を生成するには、次のコマンドを実行します。
docker run \ --net=otel \ ghcr.io/open-telemetry/opentelemetry-collector-contrib/telemetrygen:v0.105.0 \ metrics --otlp-insecure --rate=0.1 --duration=5m \ --otlp-endpoint=opentelemetry-collector:4317
指標を生成
telemetrygen
ツールを使用してトレースを生成するには、次のコマンドを実行します。
docker run \ --net=otel \ ghcr.io/open-telemetry/opentelemetry-collector-contrib/telemetrygen:v0.105.0 \ traces --otlp-insecure --rate=3 --duration=5m \ --otlp-endpoint=opentelemetry-collector:4317
数分後、アプリケーションによって生成されたテレメトリーが、シグナルごとに Collector を介して Google Cloud コンソールに転送され始めます。
テレメトリーを表示する
Google が構築した OpenTelemetry Collector は、計測対象のアプリケーションから Google Cloud Observability に指標、ログ、トレースを送信します。Collector は自己オブザーバビリティ指標も送信します。以下の各セクションでは、このテレメトリーを表示する方法について説明します。
指標を表示する
Google が構築した OpenTelemetry Collector は、Metrics Explorer を使用して表示できる Prometheus 指標を収集します。収集される指標はアプリの計測によって異なりますが、Google が構築した Collector も一部のセルフ指標を書き込みます。
Google が構築した OpenTelemetry Collector によって収集された指標を表示する手順は次のとおりです。-
Google Cloud コンソールで leaderboard [Metrics explorer] のページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] の結果を選択します。
- Google Cloud コンソールのツールバーで、 Google Cloud プロジェクトを選択します。App Hub の構成には、App Hub ホスト プロジェクトまたはアプリ管理用フォルダの管理プロジェクトを選択します。
- [指標] 要素の [指標を選択] メニューを開いてフィルタバーに「
Prometheus Target
」と入力し、サブメニューを使用して特定のリソースタイプと指標を選択します。- [有効なリソース] メニューで、[Prometheus Target] を選択します。
- 指標を選択するには、[有効な指標カテゴリ] メニューと [有効な指標] メニューを使用します。Google が構築した OpenTelemetry Collector によって収集された指標には、接頭辞
prometheus.googleapis.com
が設定されています。 - [適用] をクリックします。
- データの表示方法を構成します。
指標の測定値が累積されている場合、Metrics Explorer によりアライメント期間ごとに測定データが自動的に正規化され、その結果、グラフに率が表示されます。詳細については、種類、タイプ、変換をご覧ください。
counter
指標など、integer 値または double 値が測定されると、Metrics Explorer によりすべての時系列が自動的に合計されます。この動作を変更するには、[集計] エントリの最初のメニューを [なし] に設定します。グラフの構成の詳細については、Metrics Explorer 使用時の指標の選択をご覧ください。
トレースを表示する
トレースデータを表示するには、次の操作を行います。
-
Google Cloud コンソールで、[Trace エクスプローラ] ページに移動します。
このページは、検索バーを使用して見つけることもできます。
- Google Cloud コンソールのツールバーで、 Google Cloud プロジェクトを選択します。App Hub 構成の場合は、App Hub ホスト プロジェクトまたはアプリ管理用フォルダの管理プロジェクトを選択します。
- ページの表セクションで、行を選択します。
[トレースの詳細] パネルのガントチャートで、スパンを選択します。
パネルが開き、トレースされたリクエストに関する情報が表示されます。詳細には、メソッド、ステータス コード、バイト数、呼び出し元のユーザー エージェントが含まれます。
このトレースに関連付けられているログを表示するには、[ログとイベント] タブを選択します。
このタブには、個々のログが表示されます。ログエントリの詳細を表示するには、ログエントリを開きます。[ログを表示] をクリックし、ログ エクスプローラを使用してログを表示することもできます。
Cloud Trace エクスプローラの使用方法について詳しくは、トレースを検索して調査するをご覧ください。
ログを表示する
ログ エクスプローラではログを調査できます。また、関連するトレース(存在する場合)を確認することもできます。
-
Google Cloud コンソールで [ログ エクスプローラ] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。
計測対象のアプリのログエントリを見つけます。詳細を表示するには、ログエントリを開きます。
トレース メッセージを含むログエントリの
[トレース] をクリックし、[トレースの詳細を表示] を選択します。
[トレースの詳細] パネルが開き、選択したトレースが表示されます。
ログ エクスプローラの使用方法については、ログ エクスプローラを使用してログを表示するをご覧ください。
Collector のモニタリングとデバッグ
Google が構築した OpenTelemetry Collector は、パフォーマンスのモニタリングと、OTLP 取り込みパイプラインの継続的な稼働時間の確保に役立つセルフ オブザーバビリティ指標を自動的に提示します。
Collector をモニタリングするには、Collector のサンプル ダッシュボードをインストールします。このダッシュボードでは、稼働時間、メモリ使用量、Google Cloud Observability に対する API 呼び出しなど、Collector のさまざまな指標に関する分析情報を一目で確認できます。
ダッシュボードのインストール手順は次のとおりです。
-
Google Cloud コンソールで [
ダッシュボード] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] の結果を選択します。
- [ダッシュボード テンプレート] をクリックします。
- OpenTelemetry Collector ダッシュボードを検索します。
- 省略可: ダッシュボードをプレビューするには、ダッシュボードを選択します。
[playlist_add ダッシュボードをリストに追加] をクリックし、ダイアログを完了します。
このダイアログでは、ダッシュボードの名前を選択し、ダッシュボードにラベルを追加できます。
ダッシュボードのインストールの詳細については、ダッシュボード テンプレートをインストールするをご覧ください。