Python 런타임 메트릭

이 기능은 공용 베타 단계입니다.

자동 설정

ddtrace-run로 실행할 때 환경 변수 DD_RUNTIME_METRICS_ENABLED=true를 이용해 런타임 메트릭 수집을 활성화할 수 있습니다.

ddtrace-run를 사용하지 않는 경우 코드로 런타임 메트릭 수집을 활성화할 수 있습니다.

from ddtrace.runtime import RuntimeMetrics
RuntimeMetrics.enable()

Python 서비스와 연결해 런타임 메트릭을 볼 수 있습니다. Datadog의 서비스 카탈로그를 참고하세요.

참고: 런타임 UI의 경우 ddtrace >= 0.24.0이 지원됩니다.

기본적으로 애플리케이션 런타임 메트릭은 DogStatsD를 사용하여 8125포트를 통해 Datadog 에이전트로 전송됩니다. 에이전트에 DogStatsD가 활성화되어 있는지 확인하세요. 에이전트를 컨테이너로 실행하는 경우 DD_DOGSTATSD_NON_LOCAL_TRAFFICtrue로 설정되어 있는지 확인하고 8125 포트가 에이전트에 개방되어 있는지 확인하세요. 쿠버네티스의 경우 DogstatsD 포트를 호스트 포트로 바인딩하세요. ECS의 경우 작업을 정의할 때 적절한 플래그를 설정하세요.

또는 에이전트에서 UDP 전송 대신 UDS(Unix Domain Socket)을 사용해 메트릭을 수집할 수 있습니다. 자세한 내용은 Unix Domain Socket을 사용한 DogStatsD을 참고하세요.

수집된 데이터

런타임 메트릭을 활성화하면 기본적으로 다음 메트릭을 수집할 수 있습니다.

runtime.python.cpu.time.sys
(gauge)
Number of seconds executing in the kernel
Shown as second
runtime.python.cpu.time.user
(gauge)
Number of seconds executing outside the kernel
Shown as second
runtime.python.cpu.percent
(gauge)
CPU utilization percentage
Shown as percent
runtime.python.cpu.ctx_switch.voluntary
(gauge)
Number of voluntary context switches
Shown as invocation
runtime.python.cpu.ctx_switch.involuntary
(gauge)
Number of involuntary context switches
Shown as invocation
runtime.python.gc.count.gen0
(gauge)
Number of generation 0 objects
Shown as resource
runtime.python.gc.count.gen1
(gauge)
Number of generation 1 objects
Shown as resource
runtime.python.gc.count.gen2
(gauge)
Number of generation 2 objects
Shown as resource
runtime.python.mem.rss
(gauge)
Resident set memory
Shown as byte
runtime.python.thread_count
(gauge)
Number of threads
Shown as thread

Datadog에서는 APM 서비스 페이지에 이 메트릭을 표시하고 기본 Python 런타임 메트릭 대시보드를 제공합니다.

참고 자료