GitHub Actions OpenTelemetryをGoogle Cloudで試す方法をご紹介します。最新版はリポジトリで確認できます。
- 概要
- 前提条件
- ステップ 1: gcloud のデフォルト設定を構成する
- ステップ 2: GitHub Actions OpenTelemetry リポジトリをフォークする
- ステップ 3: サンプルコードをクローンする
- ステップ 4: OpenTelemetry Collector を Cloud Run にデプロイする
- ステップ 5: OTLP エンドポイントを設定する
- ステップ 6: ワークフローの有効化
- ステップ 7: ワークフローを実行する
- ステップ 8: Cloud Trace でトレースを確認する
- ステップ 9: Cloud Monitoring でメトリクスを確認する
- ステップ 10: クリーンアップ
概要
このガイドでは、OpenTelemetry Collector を Google Cloud の Cloud Run にデプロイし、github-actions-opentelemetry を使って GitHub Actions のワークフローからトレースやメトリクスを OpenTelemetry Protocol(OTLP)経由で Google Cloud に送信する方法を説明します。
なお、github-actions-opentelemetry は任意の OTLP エンドポイントと連携可能です。Google Cloud 以外でも使用できます。
前提条件
ステップ 1: gcloud のデフォルト設定を構成する
- デフォルトプロジェクトを設定:
gcloud config set project <PROJECT_ID>
<PROJECT_ID> を自身の Google Cloud プロジェクト ID に置き換えてください。
- デフォルトリージョンを設定:
gcloud config set run/region <REGION>
<REGION> を Cloud Run のリージョン(例: us-west1)に置き換えてください。
ステップ 2: GitHub Actions OpenTelemetry リポジトリをフォークする
サンプル GitHub Actions ワークフローを実行するには、github-actions-opentelemetry リポジトリをフォークしてください。

ステップ 3: サンプルコードをクローンする
フォークしたリポジトリをローカルにクローンし、google-cloud サンプルディレクトリに移動します。
git clone https://<YOUR_FORKED_REPOSITORY> cd github-actions-opentelemetry/examples/google-cloud
ステップ 4: OpenTelemetry Collector を Cloud Run にデプロイする
以下のコマンドで Collector をデプロイします。
gcloud run deploy collector \ --source . \ --allow-unauthenticated \ --port=4318 \ --max-instances=3
本番環境で利用する際は、Cloud Run への未認証アクセスを許可しないことを推奨します。
このコマンドは Dockerfile を使用してコンテナをビルドし、OpenTelemetry Collector を Cloud Run にデプロイします。コンテナは OpenTelemetry Collector Contrib リポジトリ をベースにしており、collector-config.yaml を設定ファイルとして使用します。
設定ファイルは OTLP 経由でテレメトリデータを受信し、Cloud Trace と Cloud Monitoring へ転送するよう構成されています。
ステップ 5: OTLP エンドポイントを設定する
OpenTelemetry Collector の Cloud Run エンドポイントを取得します。
gcloud run services describe collector --format 'value(status.url)'
取得した URL をコピーして、リポジトリのシークレット OTEL_EXPORTER_OTLP_ENDPOINT として登録します。

ステップ 6: ワークフローの有効化
フォークしたリポジトリの Actions タブを開き、ワークフローを有効化します。ワークフローを有効にするかどうかを尋ねるメッセージが表示されます。それらを確認し、この機能を有効にしてください。

ステップ 7: ワークフローを実行する
getting-started という新しいブランチを作成し、プッシュします。
git switch -c getting-started git commit --allow-empty -m "empty commit" git push --set-upstream origin getting-started
Actions タブで、Example Workflow が成功したか確認します。その後、Send Telemetry after Other Workflow Example ワークフローが実行され、github-actions-opentelemetry を使用して OTLP エンドポイントにトレースとメトリクスが送信されます。

ワークフローが完了したら、さらにコミットしてメトリクスの変化を確認しましょう。
git commit --allow-empty -m "empty commit" git push
以下が、Send Telemetry after Other Workflow Example の内容です。
name: Send Telemetry after Other Workflow Example on: workflow_run: workflows: - Example Workflow 01 - Example Workflow 02 - Example Workflow 03 types: - completed permissions: actions: read jobs: send-telemetry: name: Send CI Telemetry runs-on: ubuntu-latest steps: - name: Run id: run uses: paper2/github-actions-opentelemetry@main env: OTEL_EXPORTER_OTLP_ENDPOINT: ${{ secrets.OTEL_EXPORTER_OTLP_ENDPOINT }} OTEL_SERVICE_NAME: github-actions-opentelemetry with: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
指定したワークフローが完了すると、workflow_run イベントがこのジョブをトリガーし、github-actions-opentelemetry がワークフローの詳細を収集してトレースとメトリクスを OTLP エンドポイントに送信します。
ステップ 8: Cloud Trace でトレースを確認する
Example Workflow の run_id を特定し、Trace Explorer で run_id でフィルタリングしてトレースを確認します。

Span ID リンクをクリックして、詳細なトレース情報を確認できます。

ステップ 9: Cloud Monitoring でメトリクスを確認する
Metrics Explorer を開き、以下のメトリクスを選択します。
prometheus/github_job_duration_seconds/gauge

Aggregation 設定で workflow_name と job_name ごとにグループ化すると、それぞれのワークフローとジョブの実行時間を確認できます。

ステップ 10: クリーンアップ
Cloud Run サービスを削除します。
gcloud run services delete collector
その後、gcloud の設定をリセットします。
gcloud config unset project gcloud config unset run/region
最後に、必要がなければフォークしたリポジトリも削除してください。