Datadog Exporter
원문: Koog Documentation — opentelemetry-datadog-exporter 이 글은 Koog 공식 문서의 opentelemetry-datadog-exporter 페이지를 한국어로 옮긴 번역본입니다. 문서 구조와 링크 의미를 유지하되, MkDocs 전용 UI 문법은 블로그에서 읽기 좋도록 정리했습니다.
Datadog Exporter
Koog는 관측 가능성 데이터에 대한 공개 표준인 OpenTelemetry을 사용하여 에이전트 추적을 내보냅니다. 이러한 추적을 Datadog으로 전송하기 위해 Koog에는 내장된 OpenTelemetry 내보내기 기능이 포함되어 있습니다. 수동 계측이 필요하지 않습니다.
일단 연결되면 Datadog의 OpenTelemetry support을 통해 시각화할 수 있습니다. 에이전트가 LLM, 도구 및 외부 API와 상호 작용하는 방식을 분석하고 디버깅합니다.
설정 지침
https://www.datadoghq.com/에서 Datadog 계정을 생성하세요
Organization Settings > API Keys에서 API 키 받기
addDatadogExporter()에 대한 매개변수로 또는 환경 변수를 통해 API 키를 제공하세요.
1export DD_API_KEY="<your-api-key>"- (선택 사항) US1(
datadoghq.com) 이외의 Datadog 지역을 사용하려면 사이트를addDatadogExporter()에 매개 변수로 전달하거나 환경 변수를 설정합니다.
1export DD_SITE="datadoghq.eu"지원되는 사이트:
| 대지 | 지역 |
|---|---|
datadoghq.com |
US1(기본값) |
datadoghq.eu |
EU1 |
us3.datadoghq.com |
US3 |
us5.datadoghq.com |
US5 |
ap1.datadoghq.com |
AP1(일본) |
구성
Datadog 내보내기를 활성화하려면 OpenTelemetry 기능을 설치하고 addDatadogExporter()을 호출하세요.
기본 예
코틀린
1fun main() = runBlocking {2 val agent = AIAgent(3 promptExecutor = promptExecutor,4 llmModel = OpenAIModels.Chat.GPT4oMini,5 systemPrompt = "You are a code assistant. Provide concise code examples."6 ) {7 install(OpenTelemetry) {8 addDatadogExporter()9 }10 }1112 println("Running agent with Datadog tracing")1314 val result = agent.run("Tell me a joke about programming")15 println("Result: $result\nSee traces in Datadog LLM Observability")16}자바
1public static void main(String[] args) {2 var agent = AIAgent.builder()3 .promptExecutor(promptExecutor)4 .llmModel(OpenAIModels.Chat.GPT4oMini)5 .systemPrompt("You are a code assistant. Provide concise code examples.")6 .install(OpenTelemetry.Feature, config ->7 config.addDatadogExporter()8 )9 .build();1011 System.out.println("Running agent with Datadog tracing");1213 var result = agent.run("Tell me a joke about programming");14 System.out.println("Result: " + result + "\nSee traces in Datadog LLM Observability");15}추적 속성
Koog가 Datadog에 에이전트 활동을 보낼 때 일련의 범위(예: 다음과 같은 개별 작업 기록)로 전송합니다. LLM 호출 또는 도구 실행. 관련 범위는 전체 에이전트 실행을 나타내는 trace로 그룹화됩니다. 처음부터 끝까지.
addDatadogExporter()은 traceAttributes 매개변수(설명하는 키-값 쌍의 맵)를 허용합니다.
추적을 내보내는 애플리케이션. 이는 모든 범위에 연결되어 추적을 쉽게 필터링하고 그룹화할 수 있습니다.
환경이나 버전과 같은 속성별 Datadog입니다.
포함할 공통 속성은 다음과 같습니다.
- env: 환경 이름(예:
production,staging또는development) - service.name: 서비스 또는 애플리케이션의 이름
- 버전: 애플리케이션 버전, 배포 간 동작을 비교하는 데 유용합니다.
추적 속성의 예
코틀린
1fun main() = runBlocking {2 val agent = AIAgent(3 promptExecutor = promptExecutor,4 llmModel = OpenAIModels.Chat.GPT4oMini,5 systemPrompt = "You are a helpful assistant."6 ) {7 install(OpenTelemetry) {8 addDatadogExporter(9 datadogSite = "datadoghq.eu", // Use EU region10 traceAttributes = mapOf(11 "env" to "production",12 "service.name" to "my-agent",13 "version" to "1.0.0"14 )15 )16 }17 }1819 println("Running agent with Datadog tracing")2021 agent.run("What is Kotlin?")22}자바
1public static void main(String[] args) {2 var agent = AIAgent.builder()3 .promptExecutor(promptExecutor)4 .systemPrompt("You are a helpful assistant.")5 .llmModel(OpenAIModels.Chat.GPT4oMini)6 .install(OpenTelemetry.Feature, config ->7 config.addDatadogExporter(8 null, // Use DD_API_KEY env var9 "datadoghq.eu", // Use EU region10 null, // Default timeout11 Map.of(12 "env", "production",13 "service.name", "my-agent",14 "version", "1.0.0"15 )16 ))17 .build();1819 System.out.println("Running agent with Datadog tracing");2021 agent.run("What is Kotlin?");22}맞춤형 수출업체 포장
내보내기 개체에 직접 액세스하여 등록하기 전에 추가 처리 논리로 래핑해야 하는 경우 buildDatadogExporter()을 사용하세요.
예를 들어 SpanExporter.composite()을 사용하여 한 번에 여러 백엔드로 추적을 보냅니다.
코틀린
1install(OpenTelemetry) {2 val datadogExporter = buildDatadogExporter()3 val localExporter = OtlpHttpSpanExporter.builder()4 .setEndpoint("http://localhost:4318/v1/traces")5 .build()6 addSpanExporter(SpanExporter.composite(datadogExporter, localExporter))7}추적되는 내용
Datadog 내보내기는 Koog의 일반 OpenTelemetry 통합과 동일한 활동을 캡처합니다. 캡처된 범위의 전체 목록과 LLM 프롬프트 및 응답 콘텐츠를 포함하는 방법은 What gets traced을 참조하세요.
Datadog의 OpenTelemetry 지원에 대한 자세한 내용은 Datadog OTLP API Intake을 참조하세요.
문제 해결
- 추적 없음:
DD_API_KEY및DD_SITE가 올바르게 설정되었는지 확인합니다(Setup instructions 참조). - 인증 오류: Organization Settings > API Keys에서 키가 활성화되어 있는지 확인하세요.
- 연결 문제: 환경이
https://otlp.<DD_SITE>/v1/traces에 도달할 수 있는지 확인합니다(예: US1의 경우https://otlp.datadoghq.com/v1/traces).
일반적인 문제 해결은 Troubleshooting을 참조하세요.