このドキュメントでは、Cloud Run で Google が構築した OpenTelemetry Collector を実行して、計測対象のアプリケーションから OTLP ログ、指標、トレースを収集し、そのデータを Google Cloudにエクスポートする方法について説明します。
始める前に
Google が構築した 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 が有効になっていることを確認します。
Cloud Run サービス。Cloud Run サービスがない場合は、サービスを計画して準備するの手順に沿って操作します。
gcloud
のインストール。gcloud
のインストールについては、gcloud
CLI をインストールするをご覧ください。
Collector の権限を構成する
デフォルトでは、Cloud Run のジョブとサービスは Compute Engine のデフォルトのサービス アカウント PROJECT_NUMBER-compute@developer.gserviceaccount.com
を使用します。このサービス アカウントには通常、このドキュメントで説明する指標とログの書き込みに必要な Identity and Access Management(IAM)のロールが付与されています。
プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼します。
- Cloud Run 管理者(
roles/run.admin
) Secret Manager Secret Accessor
(roles/secretmanager.secretAccessor)
Cloud Run のユーザー管理サービス アカウントを構成することもできます。ユーザー管理のサービス アカウントには、これらのロールも必要です。Cloud Run のサービス アカウントの詳細については、サービス ID の概要をご覧ください。
Collector をデプロイする
Google が構築した OpenTelemetry Collector を Cloud Run のサイドカーとしてインストールするには、まず、コレクタの構成を保存する Secret を作成します。
gcloud secrets create SECRET_NAME --data-file=config.yaml --project=PROJECT_ID
次に、Google が構築した OpenTelemetry Collector をサイドカーとして service.yaml
に追加します。
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
annotations:
run.googleapis.com/launch-stage: ALPHA
name: google-otel-cloud-run-sample
spec:
template:
metadata:
annotations:
# [REQUIRED] set the collector as a parent to the app
run.googleapis.com/container-dependencies: "{app:[collector]}"
run.googleapis.com/secrets: 'SECRET_NAME:projects/PROJECT_ID/secrets/SECRET_NAME'
spec:
containers:
- image: my-app
name: app
ports:
- containerPort: 8080
env:
- name: "OTEL_EXPORTER_OTLP_ENDPOINT"
value: "http://localhost:4317"
- image: "us-docker.pkg.dev/cloud-ops-agents-artifacts/google-cloud-opentelemetry-collector/otelcol-google:0.122.1"
args:
- --config=/etc/otelcol-google/config.yaml
name: collector
startupProbe:
httpGet:
path: /
port: 13133
timeoutSeconds: 30
periodSeconds: 30
livenessProbe:
httpGet:
path: /
port: 13133
timeoutSeconds: 30
periodSeconds: 30
volumeMounts:
- mountPath: /etc/otelcol-google/
name: config
volumes:
- name: config
secret:
items:
- key: latest
path: config.yaml
secretName: 'SECRET_NAME'
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
リポジトリで機能リクエストを開きます。
テレメトリーを生成する
テレメトリーを生成するには、サイドカー コレクタを使用して Cloud Run アプリケーションを作成します。ドキュメントの OpenTelemetry サイドカーを使用して OTLP 指標を書き込むでは、Google が構築した OpenTelemetry Collector をサイドカーとして使用するチュートリアルを提供しています。このチュートリアルでは、Google が構築したコレクタを使用してテレメトリーを生成します。
テレメトリーを表示する
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 [ダッシュボードをリストに追加] をクリックし、ダイアログを完了します。
このダイアログでは、ダッシュボードの名前を選択したり、ダッシュボードにラベルを追加したりできます。
ダッシュボードのインストールの詳細については、ダッシュボード テンプレートをインストールするをご覧ください。