このドキュメントでは、Go、Java、Node.js、Python 言語用に提供されているインストルメンテーション サンプルの構造について説明します。これらのサンプルは、アプリケーションを計測する方法に関するガイダンスを提供します。
他の構成を示す他のサンプルもご覧ください。
エグザンプラを使用して指標とトレースを関連付けるでは、エグザンプラを生成する Go アプリケーションを構成する方法について説明します。エグザンプラは、指標データポイントに関連付けられたサンプル データポイントです。エグザンプラを使用して、トレースデータと指標データを関連付けることができます。
Ops エージェントと OpenTelemetry Protocol(OTLP)を使用するでは、アプリケーションから指標とトレースを収集するように Ops エージェントと OTLP レシーバーを構成する方法について説明します。
サンプルの仕組み
Go、Java、Node.js、Python のサンプルでは、OpenTelemetry プロトコルを使用してトレースデータと指標データを収集します。サンプルでは、構造化ログを書き込むようにロギング フレームワークを構成し、OpenTelemetry Collector はアプリケーションの stdout
ストリームから読み取るように構成されています。フレームワークの推奨事項については、計測方法を選択するをご覧ください。
アプリケーションは Docker を使用してビルドおよびデプロイされます。OpenTelemetry でアプリケーションを計測する場合、Docker を使用する必要はありません。
サンプルは、Cloud Shell、 Google Cloudリソース、またはローカル開発環境で実行できます。
詳細
サンプルでは、OpenTelemetry Collector をサイドカーとして使用して、アプリケーションのテレメトリーを受信して拡充し、Google Cloud エクスポータを使用して Google Cloud プロジェクトに送信します。エクスポータは、テレメトリーを Cloud Trace API、Cloud Monitoring API、Cloud Logging API と互換性のある形式に変換します。次に、API コマンドを実行して、変換されたデータを Google Cloud プロジェクトに送信します。
サンプルは、次の方法を示しています。
OpenTelemetry Collector を使用して指標とトレースを収集するように OpenTelemetry を構成します。
サンプルを確認すると、このステップの複雑さは言語によって異なることがわかります。たとえば、Go の場合、このステップでは、指標とトレースの収集を構成する関数を呼び出すように
main
関数を構成します。Go では、HTTP サーバーもクライアントも更新されています。構造化ログを書き込むようにロギング フレームワークを構成します。
アプリケーションで構造化ログを書き込むことをおすすめします。これにより、ログ ペイロードが JSON オブジェクトとしてフォーマットされます。これらのログでは、特定の JSON パスを検索するクエリを作成できます。また、ログ ペイロード内の特定のフィールドをインデックスに登録できます。
Google Kubernetes Engine などの一部のサービスには、構造化ログをスクレイピングして Google Cloud プロジェクトに送信するエージェントが組み込まれています。Compute Engine などの他のサービスでは、ログをスクレイピングして送信するエージェントをインストールする必要があります。インストールするエージェントについては、Ops エージェントの概要をご覧ください。
これらのサンプルを使用するのにエージェントをインストールする必要はありません。
Docker ファイルを構成します。すべてのサンプルには、次の YAML ファイルが含まれています。
docker-compose.yaml
: アプリケーションのサービス、OpenTelemetry Collector、ロードジェネレータを構成します。たとえば、OpenTelemetry Collector のサービスotelcol
では、イメージ、ボリューム、環境変数を指定します。OpenTelemetry コレクタのエンドポイントは、app
サービスで指定されたOTEL_EXPORTER_OTLP_ENDPOINT
環境変数によって設定されます。otel-collector-config.yaml
: レシーバー、エクスポータ、プロセッサ、パイプラインを構成します。telemetry
サービスは、トレースデータ、指標データ、ログデータのパイプラインを定義します。各パイプライン エントリには、レシーバー、プロセッサ、エクスポータが指定されます。指標とトレースには同じレシーバー(otlp
)が使用されます。exporters
セクションでは、収集されたデータを Google Cloud プロジェクトにエクスポートする方法について説明します。すべてのテレメトリーでエクスポータが使用されます。 Google Cloud エクスポータはテレメトリーを Cloud Trace API、Cloud Monitoring API、Cloud Logging API と互換性のある形式に変換します。次に、API コマンドを実行して、変換されたデータを Google Cloud プロジェクトに送信します。docker-compose.creds.yaml
: このファイルは、必要に応じてGoogle Cloud 認証情報ファイルをotelcol
コンテナにマウントします。このファイルは、アプリケーションのデフォルト認証情報(ADC)がファイルとしてのみ使用可能なローカルマシンでサンプルを実行する場合に必要です。
必要な権限
Cloud Shell、リソース、ローカル開発環境でサンプルを実行する場合は、このセクションに記載されている権限で十分です。 Google Cloud本番環境アプリケーションの場合、通常、サービス アカウントはログ、指標、トレース データを書き込む認証情報を提供します。
-
サンプル アプリケーションがログ、指標、トレース データを書き込むために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
- ログ書き込み(
roles/logging.logWriter
) -
モニタリング指標の書き込み(
roles/monitoring.metricWriter
) -
Cloud Trace エージェント (
roles/cloudtrace.agent
)
- ログ書き込み(
-
ログ、指標、トレース データを表示するために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
- ログ閲覧者(
roles/logging.viewer
) -
モニタリング閲覧者(
roles/monitoring.viewer
) -
Cloud Trace ユーザー (
roles/cloudtrace.user
)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
- ログ閲覧者(
必要な API
テレメトリー データを Google Cloud プロジェクトに送信するために必要な API について説明します。
Google Cloud コンソール
Enable the Cloud Logging, Cloud Monitoring, and Cloud Trace APIs.
Google Cloud CLI
Enable the Cloud Logging, Cloud Monitoring, and Cloud Trace APIs:
gcloud services enable logging.googleapis.commonitoring.googleapis.com cloudtrace.googleapis.com