コンテンツにスキップ
sigiro
日本語
Esc
移動開く⌘Jプレビュー
このページの内容

エージェントでコードを計装する

エージェントにプロンプトを 1 つ渡すだけです。エージェントがサービスに OpenTelemetry の自動計装を追加し、その向き先を sigiro に設定します。これは Claude Code、OpenCode、Codex で動作します。

このガイドでは、計装がまったく入っていないサービスに OpenTelemetry を追加する方法を、エージェントに編集させながら説明します。以下のプロンプトをエージェントに貼り付けてください。エージェントがフレームワークを検出し、公式の自動計装をインストールし、エクスポーターの向き先を sigiro に設定します。

これは Claude Code、OpenCode、Codex、あるいはファイルを編集してパッケージマネージャーを実行できる任意のエージェントで動作します。

はじめる前に

送信先として sigiro サーバーが必要です。sigiro serve で起動するか、クイックスタートにある Docker コマンドで起動してください。セルフホストのサーバーにはキーは不要です。キーが必要なのはホステッドサービスのみで、そのキーは sk_<tenant>_<random> という形式です。

自動計装は Python、Node.js、Java、.NET、Ruby 向けに提供されています。対象のサービスが Go の場合、このプロンプトは使用しないでください。代わりに Go のセクションへ進んでください。

1. エージェントに次のプロンプトを渡す

エンドポイントを置き換えてください。ホステッドサービスを使用しない場合は、キーの行を削除してください。

Instrument this codebase for sigiro observability.

SIGIRO ENDPOINT: http://localhost:4318  (replace with your OTLP ingest address)
HOSTED API KEY: sk_<tenant>_<random>  (omit entirely for a self-hosted server)

Goal: add OpenTelemetry auto-instrumentation so this service emits traces,
metrics, and logs to sigiro. Make the minimum change that works — prefer
auto-instrumentation over hand-written spans.

Rules:
- Detect the language and framework automatically
- Use official OTel auto-instrumentation where it exists (Python opentelemetry-instrument,
  Java javaagent, Node.js auto-instrumentations-node, etc.)
- If auto-instrumentation is not available for this language/framework, add
  manual OTel SDK spans for HTTP handlers and database calls
- Set OTEL_EXPORTER_OTLP_ENDPOINT to the sigiro OTLP HTTP endpoint (:4318)
- For hosted sigiro only, set OTEL_EXPORTER_OTLP_HEADERS with the tenant bearer token
- Set OTEL_SERVICE_NAME to identify this service (use the existing service name or repo name)
- Use the existing package manager (pip, npm, Maven, Gradle, gem, go get)
- For hosted sigiro, do NOT hardcode the tenant key — read it from SIGIRO_API_KEY
- If a file already initializes the OTel SDK, update it rather than re-initializing
- Add SIGIRO_API_KEY to .env.example only for a hosted deployment

エージェントが誤った言語を検出した場合は、直接指示してください。

Language: <python|nodejs|java|dotnet|ruby>
Framework: <fastapi|express|spring-boot|rails|...>

2. やってはいけないことをエージェントに伝える

ここでエージェントは、必要以上のことをやりがちです。作業を始める前に、次の制限を明示してください。

  • OTel Collector をインストールしないでください。sigiro がコレクターです。
  • エンドポイントごとに手書きのスパンを追加しないでください。自動計装がカバーします。
  • データベース接続文字列やビジネスロジックを変更しないでください。
  • ダッシュボードやアラート設定をセットアップしないでください。sigiro にはどちらもありません。

タスクの全体はこれだけです。フレームワークを検出し、自動計装をインストールし、その向き先を sigiro に設定することです。

3. 得られるカバレッジを確認する

言語 アプローチ カバー範囲
Python opentelemetry-instrument CLI + ディストリビューション HTTP(FastAPI、Flask、Starlette)、DB(psycopg2、asyncpg)、Redis
Node.js @opentelemetry/auto-instrumentations-node HTTP(Express、Fastify)、DB(pg、mysql2、mongoose)
Java opentelemetry-javaagent.jar HTTP(サーブレット、Spring)、DB(JDBC)、JVM メトリクス
.NET OpenTelemetry.AutoInstrumentation スタートアップフック HTTP(ASP.NET Core)、DB(EF Core)
Ruby opentelemetry-instrumentation-all gem HTTP(Rails)、DB(ActiveRecord)、Sidekiq
Go otelc コンパイル時計装 HTTP サーバースパン、Go ランタイムメトリクス、サードパーティライブラリ

あるライブラリでスパンがまったく取得できない場合は、そのライブラリに限って手動でスパンを追加してください。

Go: ソースではなくビルドを計装する

Go の場合、この作業をエージェントに任せないでください。Go ではビルドコマンドに接頭辞を付けるだけで、計装済みのバイナリが生成されます。ソースファイルは 1 つも変更しません。ツールは otelc で、OpenTelemetry プロジェクトがビルドしています。このツールは、自分で管理していないサードパーティライブラリも計装します。エージェントは自分のコードしか編集できないため、これはエージェントには不可能です。

お使いのプラットフォーム向けのバイナリを v1.0.1 リリースからダウンロードしてください。このリリースでは、macOS と Linux 向けの arm64 および x86-64 版、Windows 向けの x86-64 版の otelc が公開されています。

curl -fsSL -o otelc https://github.com/open-telemetry/opentelemetry-go-compile-instrumentation/releases/download/v1.0.1/otelc-darwin-arm64
chmod +x otelc
./otelc version

このツールでは go install は使えません。モジュールがコマンドパスを公開していないためです。アセットが提供されていないプラットフォームでは、リポジトリをクローンして make build を実行してください。

続いて、通常のビルドコマンドの前に otelc を付けます。

./otelc go build -o checkout .

初回のビルドでは OpenTelemetry のパッケージをダウンロードするため、通常のビルドより時間がかかります。go.mod ファイルは変更されません。

クイックスタートで使用しているのと同じ 2 つの変数を指定して、バイナリを起動します。

OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 \
OTEL_SERVICE_NAME=checkout \
  ./checkout

バイナリは起動時にトレースプロバイダー、メータープロバイダー、ロガープロバイダーを作成します。ユーザー側の SDK コードは不要です。サービスは HTTP サーバースパンと Go ランタイムメトリクスをレポートします。

制限が 2 つあります。このツールには Go 1.25 以降が必要であり、現在のバージョンは 1.0.1 で、プロジェクトが 2026 年 7 月 14 日にタグ付けしたものです。カバーされるライブラリについては、アップストリームのドキュメントを参照してください。

4. 動作していることを確認する

OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 \
OTEL_SERVICE_NAME=my-service \
  <your-app-start-command>

次に、どのサービスを受信したかを sigiro に問い合わせます。

curl http://localhost:9999/v1/services

実際のトラフィックが発生してから数秒以内にサービスが表示されます。表示された後は、sigiro diagnose my-service が読み取れるデータが揃っています。

サービスが表示されない場合は、次の点を確認してください。ポートを確認します。HTTP は :4318、gRPC は :4317 です。sigiro status を実行して、サーバーが正常であることを確認します。自分のサービスのログを読み、OTel の起動時エラーを確認してください。エクスポーターの設定が誤っている場合、起動時に障害がレポートされるためです。

ホステッドサービスでは、ヘッダーが正確に Authorization: Bearer sk_<tenant>_<random> であることを確認してください。セルフホストのサーバーはすべての認証ヘッダーを無視します。そのため、誤ったキーを指定しても、メッセージも 401 レスポンスもなく失敗します。

次のステップ

このページは役に立ちましたか?