본문으로 건너뛰기
sigiro
한국어
Esc
이동열기⌘J미리보기
이 페이지에서

에이전트로 코드 계측하기

에이전트에게 프롬프트 하나를 전달하십시오. 에이전트가 서비스에 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 + distro 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에서는 빌드 명령에 접두사를 추가하면 계측된 바이너리가 생성됩니다. 소스 파일은 전혀 변경하지 않습니다. 사용하는 도구는 otelc이며, OpenTelemetry 프로젝트에서 빌드합니다. 이 도구는 사용자가 제어할 수 없는 서드파티 라이브러리까지 계측하는데, 에이전트는 자신의 코드만 편집하므로 이를 수행할 수 없습니다.

v1.0.1 릴리스에서 사용 중인 플랫폼용 바이너리를 다운로드하십시오. 이 릴리스는 arm64 및 x86-64 기반 macOS와 Linux, 그리고 x86-64 기반 Windows용 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 파일은 변경되지 않습니다.

퀵스타트에서 사용하는 것과 동일한 두 개의 변수로 바이너리를 시작하십시오.

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

이 바이너리는 시작 시 트레이스 프로바이더, 미터 프로바이더, 로거 프로바이더를 생성합니다. 사용자가 작성한 SDK 코드는 필요하지 않습니다. 서비스는 HTTP 서버 스팬과 Go 런타임 메트릭을 보고합니다.

두 가지 제한 사항이 적용됩니다. 이 도구에는 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 응답 없이 실패합니다.

다음 단계

이 페이지가 도움이 되었나요?