Koog와 OpenTelemetry: AI 에이전트 트레이싱
이 노트북은 OpenTelemetry 기반 트레이싱(tracing)을 Koog AI 에이전트에 추가하는 방법을 보여줍니다. 다음 내용을 다룰 것입니다:
- 빠른 로컬 디버깅을 위해 콘솔로 스팬(span)을 내보냅니다.
- OpenTelemetry Collector로 스팬을 내보내고 Jaeger에서 확인합니다.
사전 요구 사항:
- Docker/Docker Compose 설치됨
- 환경 변수
OPENAI_API_KEY에 OpenAI API 키 사용 가능
노트북을 실행하기 전에 로컬 OpenTelemetry 스택(Collector + Jaeger)을 시작하세요:
bash
./docker-compose up -d에이전트 실행 후, Jaeger UI를 엽니다:
나중에 서비스를 중지하려면:
bash
docker-compose downkotlin
%useLatestDescriptors
// %use koogkotlin
import ai.koog.agents.core.agent.AIAgent
import ai.koog.agents.features.opentelemetry.feature.OpenTelemetry
import ai.koog.prompt.executor.clients.openai.OpenAIModels
import ai.koog.prompt.executor.llms.all.simpleOpenAIExecutor
import io.opentelemetry.exporter.logging.LoggingSpanExporter
import io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporterOpenTelemetry 익스포터 구성
다음 셀에서 다음을 수행합니다:
- Koog AIAgent 생성
- OpenTelemetry 기능 설치
- 두 개의 스팬 익스포터(exporter) 추가:
- 콘솔 로그용
LoggingSpanExporter http://localhost:4317(Collector)로 OTLP gRPC 익스포터
- 콘솔 로그용
이는 예제 설명과 일치합니다: 로컬 디버깅을 위한 콘솔 로그와 Jaeger에서 트레이스를 확인하기 위한 OTLP.
kotlin
val agent = AIAgent(
executor = simpleOpenAIExecutor(System.getenv("OPENAI_API_KEY")),
llmModel = OpenAIModels.Reasoning.GPT4oMini,
systemPrompt = "You are a code assistant. Provide concise code examples."
) {
install(OpenTelemetry) {
// Add a console logger for local debugging
addSpanExporter(LoggingSpanExporter.create())
// Send traces to OpenTelemetry collector
addSpanExporter(
OtlpGrpcSpanExporter.builder()
.setEndpoint("http://localhost:4317")
.build()
)
}
}에이전트 실행 및 Jaeger에서 트레이스 확인
다음 셀을 실행하여 간단한 프롬프트를 트리거(trigger)합니다. 다음 내용을 확인할 수 있습니다:
LoggingSpanExporter에서 오는 콘솔 스팬 로그- 로컬 OpenTelemetry Collector로 내보내진 트레이스,
http://localhost:16686의 Jaeger에서 확인 가능
팁: 셀을 실행한 후 Jaeger 검색 기능을 사용하여 최근 트레이스를 찾으세요.
kotlin
import ai.koog.agents.utils.use
import kotlinx.coroutines.runBlocking
runBlocking {
agent.use { agent ->
println("Running agent with OpenTelemetry tracing...")
val result = agent.run("Tell me a joke about programming")
"Agent run completed with result: '$result'.
Check Jaeger UI at http://localhost:16686 to view traces"
}
}정리 및 문제 해결
완료되면:
서비스 중지:
bashdocker-compose downJaeger에서 트레이스가 보이지 않는 경우:
- 스택이 실행 중인지 확인하세요:
./docker-compose up -d를 실행하고 몇 초 기다리세요. - 포트 확인:
- Collector (OTLP gRPC):
http://localhost:4317 - Jaeger UI:
http://localhost:16686
- Collector (OTLP gRPC):
- 컨테이너 로그 확인:
docker-compose logs --tail=200 - 노트북이 실행되는 환경에서
OPENAI_API_KEY가 설정되었는지 확인하세요. - 익스포터의 엔드포인트(endpoint)가 콜렉터(collector)와 일치하는지 확인하세요:
http://localhost:4317.
- 스택이 실행 중인지 확인하세요:
예상되는 스팬:
- Koog 에이전트 수명 주기
- LLM 요청/응답 메타데이터
- 모든 도구 실행 스팬 (도구를 추가하는 경우)
이제 에이전트를 반복적으로 개선하며 트레이싱 파이프라인(pipeline)의 변경 사항을 관찰할 수 있습니다.
