1.Gemini CLIのテレメトリー機能について

Gemini CLI にはテレメトリー機能として OpenTelemetry を設定できます。
この OpenTelemetry を有効化し、Gemini CLI の実行ログを Google Cloud の指定プロジェクトにエクスポート(Cloud Logging に保管)してみます。
この設定については Gemini CLI の公式ドキュメント Observability with OpenTelemetry を参考に進めました。

事前準備として以下が設定済みの状態から開始します。

  • Google Cloud アカウントに Gemini CLI の実行ログ保管先としてのプロジェクトを作成済み。(プロジェクト名 gemini-cli-observability
  • gcloud CLI がインストール済み。( gcloud --version
  • Gemini CLI がインストール済み。( gemini --version
  • gcloud CLI 認証を実行済み。( gcloud auth application-default login
  • デフォルトプロジェクトを設定済み。( gcloud config set project gemini-cli-observability
  • 設定ファイルの環境変数に使用するプロジェクトを設定済み。( export GOOGLE_CLOUD_PROJECT=gemini-cli-observability

2.テレメトリー関係のGoogle Cloud APIを有効化する

Gemini CLI からの実行ログを Google Cloud のプロジェクトで受け取れるよう以下のAPIを有効化します。

  • Cloud Trace API
  • Cloud Monitoring API
  • Cloud Logging API

以下のコマンドで有効化します。

gcloud services enable \
  cloudtrace.googleapis.com \
  monitoring.googleapis.com \
  logging.googleapis.com

以下の通り、finished successfully. と表示されれば成功です。

Operation "operations/acat.〜〜省略〜〜" finished successfully.

念の為、listコマンドでも API が有効化されていることを確認。

gcloud services list --enabled
NAME                                 TITLE
〜〜省略〜〜
cloudtrace.googleapis.com            Cloud Trace API
logging.googleapis.com               Cloud Logging API
monitoring.googleapis.com            Cloud Monitoring API
〜〜省略〜〜

3.サービスアカウントを設定する

続いてサービスアカウントを作ります。
サービスアカウントは AWS でいうところのIAMユーザーのようなもので、「誰が」を示します。

gcloud iam service-accounts create okawa-gemini-cli-telemetry \
  --display-name="Okawa Gemini CLI Telemetry"

作成できました。

Created service account [okawa-gemini-cli-telemetry].

このサービスアカウントに権限をつけます。

トレースの書き込み権限を付与。

# Cloud Trace Agent ロール
gcloud projects add-iam-policy-binding gemini-cli-observability \
  --member="serviceAccount:okawa-gemini-cli-telemetry@gemini-cli-observability.iam.gserviceaccount.com" \
  --role="roles/cloudtrace.agent"

メトリクスの書き込み権限を付与。

# Monitoring Metric Writer ロール
gcloud projects add-iam-policy-binding gemini-cli-observability \
  --member="serviceAccount:okawa-gemini-cli-telemetry@gemini-cli-observability.iam.gserviceaccount.com" \
  --role="roles/monitoring.metricWriter"

ログの書き込み権限を付与。

# Logs Writer ロール
gcloud projects add-iam-policy-binding gemini-cli-observability \
  --member="serviceAccount:okawa-gemini-cli-telemetry@gemini-cli-observability.iam.gserviceaccount.com" \
  --role="roles/logging.logWriter"

サービスアカウントに付与した権限が binding していることを念の為確認します。

gcloud projects get-iam-policy gemini-cli-observability \
  --flatten="bindings[].members" \
  --filter="bindings.members:serviceAccount:okawa-gemini-cli-telemetry*"

binding していることが確認できました。

bindings:
  members: serviceAccount:okawa-gemini-cli-telemetry@gemini-cli-observability.iam.gserviceaccount.com
  role: roles/cloudtrace.agent
〜〜省略〜〜
bindings:
  members: serviceAccount:okawa-gemini-cli-telemetry@gemini-cli-observability.iam.gserviceaccount.com
  role: roles/logging.logWriter
〜〜省略〜〜
bindings:
  members: serviceAccount:okawa-gemini-cli-telemetry@gemini-cli-observability.iam.gserviceaccount.com
  role: roles/monitoring.metricWriter

次に認証キーの作成です。以下のコマンドを実行します。

gcloud iam service-accounts keys create ~/gemini-cli-key.json \
  --iam-account=okawa-gemini-cli-telemetry@gemini-cli-observability.iam.gserviceaccount.com

キーが作成されています。

ls -la ~/gemini-cli-key.json
-rw-------  1 名前  staff  2418 省略 /Users/名前/gemini-cli-key.json

設定ファイルに作成した認証キーを環境変数に設定します。

export GOOGLE_APPLICATION_CREDENTIALS=~/gemini-cli-key.json

Google Cloud 側の設定はこれで以上です。続いて Gemini CLI の設定に進みます。

4.Gemini CLIのTelemetryを有効化する

ローカルバージョン

まずローカルに実行ログを出力してみます。.gemini/settings.json に以下のテレメトリ設定を追加します。

{
〜〜省略〜〜
  "telemetry": {
    "enabled": true,
    "target": "local",
    "otlpEndpoint": "",
    "outfile": ".gemini/telemetry.log"
  }
}

settings.json の設定ができたら Gemini CLI を立ち上げ、簡単なプロンプトを実行してみます。

gemini "2025年12月11日に発表があったGoogle Maps Grounding Liteについて簡単に教えて"

.gemini/telemetry.log に実行ログが出力されているはずです。
確認してみたところ、個人的に想定以上の量のログが出力されていました。
wcコマンドや lsコマンドでみたところ、行数142,611行でファイルサイズは4.3MB でした。

wc -l telemetry.log
  142611 telemetry.log
ls -lh telemetry.log
〜〜省略〜〜 4.3M 〜〜省略〜〜 telemetry.log

ログファイルから実際に記録されたイベントをグレップして10個表示させてみました。
Gemini CLI が起動したとのイベント、ユーザーがプロンプトを送信したときに発行されるイベント等が記録されています。
このあたりのイベント名が何を示しているかは 公式ドキュメントの Logs and metrics を参照ください。

grep '"event.name"' telemetry.log | head -10
    "event.name": "gemini_cli.config",
    "event.name": "gemini_cli.user_prompt",
    "event.name": "gemini_cli.api_request",
    "event.name": "gemini_cli.api_response",
    "event.name": "gen_ai.client.inference.operation.details",
    "event.name": "gemini_cli.model_routing",
    "event.name": "gemini_cli.api_request",
    "event.name": "gemini_cli.api_response",
    "event.name": "gen_ai.client.inference.operation.details",
    "event.name": "gemini_cli.api_request",

ローカルでの動作確認は以上です。次は Google Cloud バージョンです。

Google Cloudバージョン

.gemini/settings.json のテレメトリ設定は以下です。

{
〜〜省略〜〜
  "telemetry": {
    "enabled": true,
    "target": "gcp"
  }
}

Gemini CLI を立ち上げ、ローカルバージョンの時と同じプロンプトを実行します。

gemini "2025年12月11日に発表があったGoogle Maps Grounding Liteについて簡単に教えて"

出力が英語となっていますが、今回の目的は Google Cloud にログ出力されるかなので、このまま進めます。

プロンプトを実行し、応答があったので Cloud Logging を見てみます。

gemini 〜 や Tool call 〜 のような Gemini CLI の実行に関するログが確認できました。

以下のコマンドで Gemini CLI のイベントがログに送信されているか見てみます。

gcloud logging read --project=gemini-cli-observability --limit 100 --format json | jq -r '.[] | .jsonPayload["event.name"]' | grep -v null | head -10
gen_ai.client.inference.operation.details
gemini_cli.api_response
gen_ai.client.inference.operation.details
gemini_cli.api_request
gemini_cli.tool_call
gen_ai.client.inference.operation.details
gemini_cli.api_response
gen_ai.client.inference.operation.details
gemini_cli.api_request
gen_ai.client.inference.operation.details

Gemini CLI のイベント名が表示され、実行ログが Google Cloud に送信されていることが確認できました。

5.まとめ

公式ドキュメントを参考に Gemini CLI の実行ログをローカルや Google Cloud に送信する設定を実装してみました。セットアップに関してはシンプルだったかと思います。
ただ、短いプロンプトの実行でもある程度のログ量が生成されるため、運用を視野に入れた場合、ログの保管戦略、自動削除ルール、コスト最適化など、運用設計の重要性が頭をよぎりました。
まずは公式ドキュメントや本記事を参考に設定を進め、その後の運用方針を検討していくことをお勧めします。
本記事が Gemini CLI の Observability 環境構築の参考になれば幸いです。