このドキュメントでは、Cloud Run で Google が構築した OpenTelemetry Collector を実行して、計測対象のアプリケーションから OTLP のログ、指標、トレースを収集し、そのデータを Google Cloudにエクスポートする方法について説明します。
始める前に
Google が構築した OpenTelemetry Collector を実行するには、次のリソースが必要です。
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
- 
    
    
      In the Google Cloud console, on the project selector page, select or create a Google Cloud project. Roles required to select or create a project - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
- 
      Create a project: To create a project, you need the Project Creator
      (roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
 
- 
  
    Verify that billing is enabled for your Google Cloud project. 
- 
  
  
    
      Enable the Cloud Logging, Cloud Monitoring, and Cloud Trace APIs. Roles required to enable APIs To enable APIs, you need the Service Usage Admin IAM role ( roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
- 
    
    
      In the Google Cloud console, on the project selector page, select or create a Google Cloud project. Roles required to select or create a project - Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
- 
      Create a project: To create a project, you need the Project Creator
      (roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
 
- 
  
    Verify that billing is enabled for your Google Cloud project. 
- 
  
  
    
      Enable the Cloud Logging, Cloud Monitoring, and Cloud Trace APIs. Roles required to enable APIs To enable APIs, you need the Service Usage Admin IAM role ( roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
- Cloud Run サービス。Cloud Run サービスが存在しない場合は、サービスを計画して準備するの手順に沿って操作します。
- gcloudのインストール。- gcloudのインストールについては、- gcloudCLI をインストールするをご覧ください。
- Cloud Run 管理者(roles/run.admin)
- Secret Manager Secret Accessor- (roles/secretmanager.secretAccessor)
- 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 リソースラベルを自動的に検出します。
- 
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 ホスト プロジェクトまたは管理プロジェクトを選択します。
- ページの表セクションで、行を選択します。
- [トレースの詳細] パネルのガントチャートで、スパンを選択します。 - パネルが開き、トレースされたリクエストに関する情報が表示されます。詳細には、メソッド、ステータス コード、バイト数、呼び出し元のユーザー エージェントが含まれます。 
- このトレースに関連付けられているログを表示するには、[ログとイベント] タブを選択します。 - このタブには、個々のログが表示されます。ログエントリの詳細を表示するには、ログエントリを開きます。[ログを表示] をクリックし、ログ エクスプローラを使用してログを表示することもできます。 
- 
Google Cloud コンソールで [ログ エクスプローラ] ページに移動します。 検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。 
- 計測対象のアプリのログエントリを見つけます。詳細を表示するには、ログエントリを開きます。 
- トレース メッセージを含むログエントリの - [トレース] をクリックし、[トレースの詳細を表示] を選択します。 - [トレースの詳細] パネルが開き、選択したトレースが表示されます。 
- 
Google Cloud コンソールで [  ダッシュボード] ページに移動します。 ダッシュボード] ページに移動します。検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] の結果を選択します。 
- [ダッシュボード テンプレート] をクリックします。
- OpenTelemetry Collector ダッシュボードを検索します。
- 省略可: ダッシュボードをプレビューするには、ダッシュボードを選択します。
- [playlist_add ダッシュボードをリストに追加] をクリックし、ダイアログを完了します。 - このダイアログでは、ダッシュボードの名前を選択し、ダッシュボードにラベルを追加できます。 
Collector の権限を構成する
デフォルトでは、Cloud Run のジョブとサービスは Compute Engine のデフォルトのサービス アカウント PROJECT_NUMBER-compute@developer.gserviceaccount.com を使用します。このサービス アカウントには通常、このドキュメントで説明する指標とログの書き込みに必要な Identity and Access Management(IAM)のロールが付与されています。
プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼します。
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.137.0"
        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 の構成
Collector の構成は、opentelemetry-operations-collector リポジトリの google-built-opentelemetry-collector ディレクトリにあります。
エクスポータ
Collector の構成には、次のエクスポータが含まれています。
プロセッサ
Collector の構成には、次のプロセッサが含まれています。
レシーバー
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 が構築した Collector を使用しテレメトリーを生成できます。
テレメトリーを表示する
Google が構築した OpenTelemetry Collector は、計測対象のアプリケーションから Google Cloud Observability に指標、ログ、トレースを送信します。Collector は自己オブザーバビリティ指標も送信します。以下の各セクションでは、このテレメトリーを表示する方法について説明します。
指標を表示する
Google が構築した OpenTelemetry Collector は、Metrics Explorer を使用して表示できる Prometheus 指標を収集します。収集される指標はアプリの計測によって異なりますが、Google が構築した Collector も一部のセルフ指標を書き込みます。
Google が構築した OpenTelemetry Collector によって収集された指標を表示する手順は次のとおりです。トレースを表示する
トレースデータを表示するには、次の操作を行います。
Cloud Trace エクスプローラの使用方法について詳しくは、トレースを検索して調査するをご覧ください。
ログを表示する
ログ エクスプローラではログを調査できます。また、関連するトレース(存在する場合)を確認することもできます。
ログ エクスプローラの使用方法については、ログ エクスプローラを使用してログを表示するをご覧ください。
Collector のモニタリングとデバッグ
Google が構築した OpenTelemetry Collector は、パフォーマンスのモニタリングと、OTLP 取り込みパイプラインの継続的な稼働時間の確保に役立つセルフ オブザーバビリティ指標を自動的に提示します。
Collector をモニタリングするには、Collector のサンプル ダッシュボードをインストールします。このダッシュボードでは、稼働時間、メモリ使用量、Google Cloud Observability に対する API 呼び出しなど、Collector のさまざまな指標に関する分析情報を一目で確認できます。
ダッシュボードのインストール手順は次のとおりです。
ダッシュボードのインストールの詳細については、ダッシュボード テンプレートをインストールするをご覧ください。