このドキュメントでは、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 が構築したコレクタを使用する場合の推奨される cloud-init
ファイルは次のとおりです。
コレクタ コンテナとテレメトリーを送信するシステム上の他のコンテナ間の通信を容易にするために、Docker bridge
ネットワークを作成することをおすすめします。ネットワークを作成するには、次のコマンドを実行します。
docker network create -d bridge otel otel
次のコマンドを使用して Collector コンテナを実行します。
上記のコマンドは、次のことを行います。
- Collector コンテナをバックグラウンドで実行します。
- コレクタ コンテナを、前に作成した otel ブリッジ ネットワークに接続します。他のコンテナをブリッジに接続してテレメトリーを送信できます。
- 構成ファイルをコンテナにマウントして、ファイルにアクセスしてコレクタを構成できるようにします。
Collector を構成する
Google が構築した Collector で使用できる OpenTelemetry Collector 構成が用意されています。この構成は、大量の OTLP 指標、ログ、トレースを送信するように設計されています。この構成は、一般的な取り込みの問題を防ぐように設計されています。構成に追加することはできますが、要素を削除しないことを強くおすすめします。
このセクションでは、提供される構成、エクスポータ、プロセッサ、レシーバなどの主要コンポーネント、および利用可能なその他のコンポーネントについて説明します。
提供されたコレクタの構成
Collector の構成は、opentelemetry-operations-collector
リポジトリの google-built-opentelemetry-collector
ディレクトリにあります。
エクスポータ
Collector の構成には、次のエクスポータが含まれています。
googlecloud
エクスポーター(ログとトレースを対象)。このエクスポーターは、デフォルトのログ名で構成されています。googlemanagedprometheus
エクスポータ(指標用)。このエクスポータでは構成は必要ありませんが、構成オプションがあります。googlemanagedprometheus
エクスポーターの構成オプションについては、Google Cloud Managed Service for Prometheus ドキュメントの OpenTelemetry コレクタを使ってみるをご覧ください。
プロセッサ
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 にコンテナを提供します。
次のコマンドを実行する前に、コレクタをデプロイするで 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 が構築したコレクタも一部のセルフ指標を書き込みます。
Google が構築した OpenTelemetry Collector によって収集された指標を表示する手順は次のとおりです。-
Google Cloud コンソールで、[leaderboardMetrics 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 [ダッシュボードをリストに追加] をクリックし、ダイアログを完了します。
このダイアログでは、ダッシュボードの名前を選択したり、ダッシュボードにラベルを追加したりできます。
ダッシュボードのインストールの詳細については、ダッシュボード テンプレートをインストールするをご覧ください。