애플리케이션 계측 (Application Instrumentation)
애플리케이션 계측(Instrumentation)은 애플리케이션에 코드를 추가해 trace, 메트릭, 로그 같은 옵저버빌리티 데이터를 캡처하고 Datadog에 보고하는 과정이에요. Datadog APM에서의 계측은 다음을 포함해요:
출처: 문서
본문
- SDK 설정: 애플리케이션에 Datadog SDK를 추가해요.
- 스팬 생성: 옵저버빌리티 데이터를 스팬(분산 시스템에서 주어진 기간 동안의 논리적 작업 단위)으로 캡처해요.
스팬은 SDK가 로드되는 즉시 기본으로 자동 생성돼요. 이를 자동 계측(auto-instrumentation) 이라고 하며 대부분의 사용자에게 충분한 가시성을 제공해요. 더 많은 제어가 필요하면 선택적으로 커스텀 스팬을 추가할 수 있어요.
참고: 이 단계들은 trace를 받도록 Datadog Agent가 설치·구성되어 있다고 가정해요.
시작하기
💡 공급업체 중립적 계측을 선호하나요? Datadog와 함께 OpenTelemetry를 사용하려면 OpenTelemetry 문서를 참고해요.
Single step instrumentation (권장)
Single Step Instrumentation (SSI)은 단일 명령으로 Datadog SDK를 자동 설치·구성해요. 그러면 자동 계측이 지원되는 프레임워크와 라이브러리에서 즉시 trace 캡처를 시작하며, 코드 변경이 필요 없어요.
수동 설정과 커스텀 스팬
옵저버빌리티 요구가 커지면 더 많은 제어와 커스터마이징을 추가할 수 있어요:
전체 SDK 구성 제어: SDK 동작과 구성을 세밀하게 제어해야 한다면 수동 관리 Datadog SDK를 사용해요.
코드 변경 없는 커스텀 스팬: Dynamic Instrumentation으로 애플리케이션을 재배포하지 않고 Datadog UI에서 커스텀 스팬을 만들어요.
코드에서 커스텀 스팬: 코드 기반 커스텀 계측을 추가해 커스텀 비즈니스 로직을 계측하거나 스팬에 애플리케이션별 메타데이터를 추가해요.
이 옵션들은 결합할 수 있어요. 예를 들어 Single Step Instrumentation으로 시작하고 특정 스팬에 코드 기반 커스텀 계측을 추가하거나, 수동 관리 SDK를 Dynamic Instrumentation과 함께 사용해 배포 없는 스팬 추가를 할 수 있어요.
상세 비교
SDK 설정
Single Step Instrumentation은 대부분의 사용자에게 권장되는 시작점이에요. SDK 구성에 더 많은 제어가 필요하면 수동 관리 SDK를 대신 사용할 수 있어요:
| Single Step Instrumentation (권장) | 수동 관리 SDK |
|---|---|
| 작동 방식 | Datadog가 단일 명령으로 런타임에 SDK를 애플리케이션 프로세스에 자동 설치·로드해요. |
| 코드 변경? | 아니요 |
| 설정 복잡성 | 낮음 — 최소 구성 필요 |
| 구성 제어 | 표준 기본값과 선택적 재정의 |
| 사용 시점 | 코드 변경 없이 서비스 전반에 빠르고 일관된 계측을 위한 시작점. |
스팬 커스터마이징
자동 계측은 지원되는 프레임워크와 라이브러리에 대한 스팬을 자동으로 만들어 추가 작업 없이 필수 옵저버빌리티를 제공해요. 커스텀 코드 경로에 대한 가시성이 필요하거나 trace를 애플리케이션별 데이터로 보강하고 싶을 때, Dynamic Instrumentation 또는 코드 기반 커스텀 계측으로 커스텀 스팬을 추가할 수 있어요:
| Dynamic Instrumentation | 코드 기반 커스텀 계측 |
|---|---|
| 작동 방식 | Datadog UI에서 계측 규칙을 구성하고, 규칙이 런타임에 적용돼요. |
| 코드 변경? | 아니요 |
| 배포 필요 | 아니요 |
| 사용 시점 | 코드 변경이나 재배포 없이 커스텀 스팬 추가. |
APM 설정 튜토리얼
다음 튜토리얼은 다양한 인프라 시나리오의 샘플 애플리케이션에 자동·커스텀 계측으로 분산 트레이싱을 설정하는 과정을 안내해요.
언어와 환경을 선택해요:
- Datadog Agent와 같은 호스트의 Python 애플리케이션에서 Tracing 활성화
- 컨테이너의 Python 애플리케이션과 Datadog Agent에서 Tracing 활성화
- 컨테이너의 Python 애플리케이션과 호스트의 Agent에서 Tracing 활성화
- Datadog Agent와 같은 호스트의 Java 애플리케이션에서 Tracing 활성화
- 컨테이너의 Java 애플리케이션과 Datadog Agent에서 Tracing 활성화
- 컨테이너의 Java 애플리케이션과 호스트의 Agent에서 Tracing 활성화
- GKE의 Java 애플리케이션에서 Tracing 활성화
- Amazon EKS의 Java 애플리케이션에서 Tracing 활성화
- Amazon ECS(EC2)의 Java 애플리케이션에서 Tracing 활성화
- Amazon ECS(Fargate)의 Java 애플리케이션에서 Tracing 활성화
- Admission Controller로 Java 애플리케이션에서 Tracing 활성화
- Datadog Agent와 같은 호스트의 Go 애플리케이션에서 Tracing 활성화
- 컨테이너의 Go 애플리케이션과 Datadog Agent에서 Tracing 활성화
- Amazon ECS(EC2)의 Go 애플리케이션에서 Tracing 활성화
- Amazon ECS(Fargate)의 Go 애플리케이션에서 Tracing 활성화