본문 바로가기
WIKI 기술 지식 베이스

런타임 메트릭 (Runtime Metrics)

원문 보기 위키 갱신

런타임 메트릭으로 애플리케이션의 메모리 사용량, 가비지 컬렉션, 병렬화를 모니터링할 수 있어요. Datadog SDK는 지원되는 환경에서 이 메트릭을 자동으로 수집해 Datadog Agent로 보내요.

출처: 문서

본문

개요 (Overview)

런타임 메트릭은 캐스팅 포함 애플리케이션의 메모리 사용량, 가비지 컬렉션(garbage collection), 병렬화(parallelization)를 모니터링해요. Datadog SDK는 지원되는 환경에서 이러한 메트릭을 자동으로 수집해 Datadog Agent로 보내요.

이 메트릭은 병목을 식별하고, 성능 문제를 트러블슈팅하고, 리소스 사용을 최적화하는 데 도움이 돼요. trace·로그와 함께 런타임 메트릭을 보면 애플리케이션의 상태와 성능에 대한 포괄적인 가시성을 얻을 수 있어요.

Datadog tracing 라이브러리 대신 OpenTelemetry로 애플리케이션을 계측한다면 OpenTelemetry Runtime Metrics에서 설정 지침을 확인해요.

호환성 (Compatibility)

런타임 메트릭은 여러 프로그래밍 언어와 런타임에서 사용할 수 있으며, 지원 수준과 구성 옵션이 다양해요.

Java

  • 기본 활성화: 예
  • 라이브러리 버전: 0.29.0+
  • 런타임: Java 8+

⚠️ JMX 메트릭 수집은 AWS Lambda 환경에서 지원되지 않아요.

Python

  • 기본 활성화: 아니요
  • 라이브러리 버전: 0.30.0+
  • 지원 수준: Preview
  • 런타임: 지원되는 모든 Python 버전

Ruby

  • 기본 활성화: 아니요
  • 라이브러리 버전: 0.44.0+
  • 런타임: 지원되는 모든 Ruby 버전

💡 애플리케이션에 dogstatsd-ruby 젬을 추가해야 해요.

Go

  • 기본 활성화: 아니요
  • 라이브러리 버전: 1.18.0+
  • 런타임: 지원되는 모든 Go 버전

Node.js

  • 기본 활성화: 아니요
  • 라이브러리 버전: 3.0.0+
  • 런타임: 지원되는 모든 Node.js 버전

.NET

  • 기본 활성화: 예, .NET 6+ (v3.40.0+)에서.
  • 라이브러리 버전: 1.23.0+
  • 런타임: .NET Framework 4.6.1+ 및 .NET Core 3.1+ (.NET 5 이상 포함)

IIS (Internet Information Services) 권한 (.NET Framework 전용) — .NET Framework에서 메트릭은 성능 카운터를 사용해 수집돼요. 비대화형 로그온 세션의 사용자(IIS 애플리케이션 풀 계정과 일부 서비스 계정 포함)는 카운터 데이터에 접근하려면 Performance Monitoring Users 그룹에 추가되어야 해요.

IIS 애플리케이션 풀은 사용자 목록에 표시되지 않는 특수 계정을 사용해요. 이 계정을 Performance Monitoring Users 그룹에 추가하려면 IIS APPPOOL\<name of the pool>을 찾아요. 예를 들어 DefaultAppPool 사용자는 IIS APPPOOL\DefaultAppPool이에요.

이 작업은 "Computer Management" UI 또는 관리자 명령 프롬프트에서 할 수 있어요:

net localgroup "Performance Monitor Users" "IIS APPPOOL\DefaultAppPool" /add

PHP

⚠️ PHP의 런타임 메트릭은 지원되지 않아요.

C++

⚠️ C++의 런타임 메트릭은 지원되지 않아요.

설정 지침 (Setup instructions)

런타임 메트릭을 설정하려면 Datadog Agent와 애플리케이션을 모두 구성해야 해요.

1. Datadog Agent 구성하기

Agent용 DogStatsD를 활성화해요. 기본적으로 Datadog Agent는 UDP 포트 8125로 메트릭을 수집하도록 구성돼 있어요.

컨테이너별 구성 — 컨테이너화된 환경에서 Agent를 실행할 때 추가 구성이 필요해요:

  1. DogStatsD 비로컬 트래픽이 활성화되어 있는지 확인해요. 이 설정은 기본적으로 활성화돼 있어요. 이전에 비활성화했다면 기본 datadog.yaml 구성 파일에서 dogstatsd_non_local_traffic: true를 설정하거나 환경 변수 DD_DOGSTATSD_NON_LOCAL_TRAFFIC=true를 설정해요.
  2. 다음 컨테이너별 설정 지침을 따라요:

⚠️ us3.datadoghq.com, us5.datadoghq.com, app.datadoghq.eu, app.ddog-gov.com, us2.ddog-gov.com, ap1.datadoghq.com, ap2.datadoghq.com, uk1.datadoghq.com Datadog 사이트 사용자분들께.

Agent가 올바른 Datadog 위치로 데이터를 보내도록 Datadog Agent에서 DD_SITE를 <YOUR_DATADOG_SITE>로 설정해요.

2. 애플리케이션 구성하기

환경 변수를 사용해 애플리케이션에서 런타임 메트릭을 구성해요. 일부 언어는 코드에서 직접 런타임 메트릭을 구성하는 것도 지원해요.

환경 변수 — 애플리케이션에서 런타임 메트릭을 구성하려면 다음 환경 변수를 사용해요:

DD_RUNTIME_METRICS_ENABLED 기본값: Java와 .NET 6+ (v3.40.0+)에서는 true, 다른 모든 언어와 런타임에서는 false. 설명: 런타임 메트릭 수집을 활성화해요. 메트릭은 계측된 애플리케이션에 대해 구성된 대로 Datadog agent로 보내져요.

DD_RUNTIME_METRICS_RUNTIME_ID_ENABLED 기본값: Java에서는 true, Node.js, Ruby, Python에서는 false. .NET과 Go에는 존재하지 않아요. runtime_id는 항상 보고돼요. 설명: 모든 메트릭과 함께 runtime_id 태그를 제공하는 향상된 런타임 메트릭을 활성화해요. runtime_id는 애플리케이션의 프로세스 식별자를 나타내며 개별 실행 중인 애플리케이션과 런타임 메트릭을 직접 연결할 수 있게 해줘요.

DD_AGENT_HOST 기본값: localhost 설명: SDK의 메트릭 제출을 위한 호스트 주소를 설정해요. 호스트 이름 또는 IP 주소가 될 수 있어요.

DD_DOGSTATSD_PORT 기본값: 8125 설명: SDK의 메트릭 제출용 포트를 설정해요.

DD_RUNTIME_METRICS_DIAGNOSTICS_METRICS_API_ENABLED 기본값: .NET 8+ 및 (.NET 6/7에서 DD_RUNTIME_METRICS_ENABLED가 명시적으로 설정되지 않은 경우) tracer v3.40.0+부터 true, 그 외에는 false. 설명: .NET 6부터 사용할 수 있어요. .NET tracer가 EventListener 기반 수집기 대신 새 System.Diagnostics.Metrics API를 사용해 메트릭을 수집할지 제어해요.

코드 기반 구성 — 환경 변수 외에도 일부 언어는 코드에서 직접 런타임 메트릭을 구성하는 것을 지원해요.

Java: 환경 변수로만 런타임 메트릭을 활성화할 수 있어요. 다만 커스텀 JMX 메트릭을 추가해 수집되는 메트릭을 확장할 수 있어요. 자세한 내용은 JMX Integration 문서를 참고해요.

Python: 환경 변수나 코드로 런타임 메트릭을 활성화할 수 있어요:

from ddtrace.runtime import RuntimeMetrics
RuntimeMetrics.enable()

⚠️ 이 설정은 ddtrace-run을 사용하지 않는 경우에만 적용돼요.

Ruby: 환경 변수나 코드로 런타임 메트릭을 활성화할 수 있어요:

# config/initializers/datadog.rb
require 'datadog/statsd'
require 'datadog' # Use 'ddtrace' if you're using v1.x

Datadog.configure do |c|
  c.runtime_metrics.enabled = true

  # Optionally, you can configure the DogStatsD instance used for sending runtime metrics.
  # DogStatsD is automatically configured with default settings if `dogstatsd-ruby` is available.
  # You can configure with host and port of Datadog agent; defaults to 'localhost:8125'.
  c.runtime_metrics.statsd = Datadog::Statsd.new
end

Go: 환경 변수나 코드로 런타임 메트릭을 활성화할 수 있어요:

// Basic configuration
tracer.Start(tracer.WithRuntimeMetrics())

// With custom DogStatsD address
tracer.Start(
  tracer.WithRuntimeMetrics(),
  tracer.WithDogstatsdAddr("custom-host:8125")
)

WithDogstatsdAddr 옵션을 사용하면 DogStatsD 서버의 커스텀 주소를 지정할 수 있어요. 주소가 기본값 localhost:8125와 다르면 WithDogstatsdAddr(또는 WithDogstatsdAddress v1) 옵션을 사용해요. (1.18.0+에서 사용 가능)

Node.js: 환경 변수나 코드로 런타임 메트릭을 활성화할 수 있어요:

const tracer = require('dd-trace').init({
  // Other tracer options...
  runtimeMetrics: true
})

.NET: 환경 변수로만 런타임 메트릭을 활성화할 수 있어요.

대시보드 (Dashboards)

설정이 완료되면 다음 위치에서 런타임 메트릭을 볼 수 있어요:

  • 계측된 서비스의 세부 정보 페이지
  • 플레임 그래프의 Metrics 탭
  • 기본 런타임 대시보드

트러블슈팅 (Troubleshooting)

  • 플레임 그래프 안에서 런타임 메트릭을 연관시키려면 환경 전반에 env 태그(대문자·소문자 구분)가 설정되어 있고 일치하는지 확인해요.
  • Fargate 사용 시 서비스 페이지에 런타임 메트릭이 표시되도록 하려면 Agent 태스크에 DD_DOGSTATSD_TAGS가 설정되어 있고, 구성된 env 태그가 계측된 서비스의 env와 일치하는지 확인해요.

수집되는 데이터 (Data collected)

각 지원 언어는 메모리 사용량, 가비지 컬렉션, CPU 사용률 및 기타 성능 지표에 대한 인사이트를 제공하는 런타임 메트릭 집합을 수집해요.

Java

메트릭 설명
jvm.heap_memory(gauge) 사용 중인 총 Java 힙 메모리단위: byte
jvm.heap_memory_committed(gauge) 사용하도록 커밋된 총 Java 힙 메모리단위: byte
jvm.heap_memory_init(gauge) 할당된 초기 Java 힙 메모리단위: byte
jvm.heap_memory_max(gauge) 사용 가능한 최대 Java 힙 메모리단위: byte
jvm.loaded_classes(gauge) 현재 로드된 클래스 수.
jvm.non_heap_memory(gauge) 사용 중인 총 Java 비힙 메모리. 비힙 메모리는 Metaspace + CompressedClassSpace + CodeCache로 계산돼요단위: byte
jvm.non_heap_memory_committed(gauge) 사용하도록 커밋된 총 Java 비힙 메모리단위: byte
jvm.non_heap_memory_init(gauge) 할당된 초기 Java 비힙 메모리단위: byte
jvm.non_heap_memory_max(gauge) 사용 가능한 최대 Java 비힙 메모리단위: byte
jvm.thread_count(count) 활성 스레드 수단위: thread
jvm.gc.cms.count(count) 발생한 가비지 컬렉션의 총 횟수.
jvm.gc.major_collection_count(gauge) 주요 가비지 컬렉션 비율. 이 메트릭을 받으려면 new_gc_metrics: true를 설정해요.
jvm.gc.minor_collection_count(gauge) 부(minor) 가비지 컬렉션 비율. 이 메트릭을 받으려면 new_gc_metrics: true를 설정해요.
jvm.gc.parnew.time(gauge) 경과된 대략적인 누적 가비지 컬렉션 시간단위: millisecond
jvm.gc.major_collection_time(gauge) 주요 가비지 컬렉션에 소요된 시간 비율. 이 메트릭을 받으려면 new_gc_metrics: true를 설정해요단위: permille
jvm.gc.minor_collection_time(gauge) 부 가비지 컬렉션에 소요된 시간 비율. 이 메트릭을 받으려면 new_gc_metrics: true를 설정해요단위: permille
jvm.gc.old_gen_size(gauge) Old Generation 메모리 풀의 현재 Java 힙 메모리 사용량단위: byte
jvm.gc.eden_size(gauge) Eden 메모리 풀의 현재 Java 힙 메모리 사용량단위: byte
jvm.gc.survivor_size(gauge) Survivor 메모리 풀의 현재 Java 힙 메모리 사용량단위: byte
jvm.gc.metaspace_size(gauge) Metaspace 메모리 풀의 현재 Java 비힙 메모리 사용량단위: byte
jvm.cpu_load.system(gauge) 전체 시스템의 최근 CPU 사용률단위: fraction
jvm.cpu_load.process(gauge) 프로세스의 최근 CPU 사용률단위: fraction
jvm.buffer_pool.direct.used(gauge) 다이렉트 버퍼가 사용하는 메모리 측정값단위: byte
jvm.buffer_pool.direct.count(gauge) 풀의 다이렉트 버퍼 수.
jvm.buffer_pool.direct.capacity(gauge) 다이렉트 버퍼의 총 메모리 용량 측정값단위: byte
jvm.buffer_pool.mapped.used(gauge) 매핑된 버퍼가 사용하는 메모리 측정값단위: byte
jvm.buffer_pool.mapped.count(gauge) 풀의 매핑된 버퍼 수.
jvm.buffer_pool.mapped.capacity(gauge) 매핑된 버퍼의 총 메모리 용량 측정값단위: byte
jvm.os.open_file_descriptors(gauge) 열린 파일 디스크립터 수.

참고: jmx.d/conf.yaml에서 new_gc_metrics: true를 설정하면 다음 메트릭이 교체돼요:

jvm.gc.cms.count   => jvm.gc.minor_collection_count
                      jvm.gc.major_collection_count
jvm.gc.parnew.time => jvm.gc.minor_collection_time
                      jvm.gc.major_collection_time

Python

메트릭 설명
runtime.python.cpu.time.sys(gauge) 커널에서 실행한 초 수단위: second
runtime.python.cpu.time.user(gauge) 커널 외부에서 실행한 초 수단위: second
runtime.python.cpu.percent(gauge) CPU 사용률 퍼센트단위: percent
runtime.python.cpu.ctx_switch.voluntary(gauge) 자발적 컨텍스트 스위치 수단위: invocation
runtime.python.cpu.ctx_switch.involuntary(gauge) 비자발적 컨텍스트 스위치 수단위: invocation
runtime.python.gc.count.gen0(gauge) generation 0 객체 수단위: resource
runtime.python.gc.count.gen1(gauge) generation 1 객체 수단위: resource
runtime.python.gc.count.gen2(gauge) generation 2 객체 수단위: resource
runtime.python.mem.rss(gauge) resident set 메모리단위: byte
runtime.python.thread_count(gauge) 스레드 수단위: thread

Ruby

메트릭 설명
runtime.ruby.class_count(gauge) 로드된 총 클래스 수단위: resource
runtime.ruby.gc.remembered_wb_unprotected_objects(gauge) remembered set의 write-barrier 비보호 객체 수단위: resource
runtime.ruby.gc.remembered_wb_unprotected_objects_limit(gauge) remembered set에서 허용되는 write-barrier 비보호 객체 한도단위: resource
runtime.ruby.gc.oldmalloc_increase_bytes(gauge) old 객체에 할당된 총 바이트단위: byte
runtime.ruby.gc.oldmalloc_increase_bytes_limit(gauge) old 객체의 가비지 컬렉션을 트리거할 바이트 한도단위: byte
runtime.ruby.gc.malloc_increase_bytes(gauge) 객체에 할당된 총 바이트단위: byte
runtime.ruby.gc.malloc_increase_bytes_limit(gauge) 객체의 가비지 컬렉션을 트리거할 바이트 한도단위: byte
runtime.ruby.gc.total_allocated_objects(gauge) 이 프로세스 수명 동안 할당된 총 객체 수단위: resource
runtime.ruby.gc.total_freed_objects(gauge) 이 프로세스 수명 동안 해제된 총 객체 수단위: resource
runtime.ruby.gc.total_allocated_pages(gauge) 이 프로세스 수명 동안 할당된 총 페이지 수단위: page
runtime.ruby.gc.total_freed_pages(gauge) 이 프로세스 수명 동안 해제된 총 페이지 수단위: page
runtime.ruby.gc.heap_live_slots(gauge) 활성 객체 슬롯 수단위: resource
runtime.ruby.gc.heap_final_slots(gauge) finalizer가 연결된 객체 슬롯 수단위: resource
runtime.ruby.gc.heap_marked_slots(gauge) 3번 이상의 GC 사이클을 견딘 old 객체 수와 write-barrier 비보호 객체 수단위: resource
runtime.ruby.gc.heap_available_slots(gauge) 힙 페이지의 총 슬롯 수단위: resource
runtime.ruby.gc.heap_free_slots(gauge) 힙 페이지의 여유 슬롯 수단위: resource
runtime.ruby.thread_count(gauge) 총 스레드 수단위: thread
runtime.ruby.gc.old_objects(gauge) 총 old 객체 수단위: resource
runtime.ruby.gc.old_objects_limit(gauge) old 객체 수 한도단위: resource
runtime.ruby.global_constant_state(gauge) 전역 상수 캐시 세대단위: event
runtime.ruby.global_method_state(gauge) 전역 메서드 캐시 세대단위: event
runtime.ruby.constant_cache_invalidations(gauge) 상수 캐시 무효화단위: resource
runtime.ruby.constant_cache_misses(gauge) 상수 캐시 미스단위: resource

Go

메트릭 설명
runtime.go.num_cpu(gauge) 런타임이 감지한 CPU단위: resource
runtime.go.num_goroutine(gauge) 생성된 goroutine단위: invocation
runtime.go.num_cgo_call(gauge) 수행된 CGO 호출단위: invocation
runtime.go.mem_stats.alloc(gauge) 할당된 힙 객체의 바이트(Alloc)단위: byte
runtime.go.mem_stats.total_alloc(gauge) 힙 객체에 누적 할당된 바이트(TotalAlloc)단위: byte
runtime.go.mem_stats.sys(gauge) OS에서 얻은 총 메모리 바이트(Sys)단위: byte
runtime.go.mem_stats.lookups(gauge) 수행된 포인터 룩업 수(Lookups)단위: unit
runtime.go.mem_stats.mallocs(gauge) 할당된 힙 객체의 누적 수(Mallocs)단위: unit
runtime.go.mem_stats.frees(gauge) 해제된 힙 객체의 누적 수(Frees)단위: unit
runtime.go.mem_stats.heap_alloc(gauge) 할당된 힙 객체의 바이트(HeapAlloc)단위: byte
runtime.go.mem_stats.heap_sys(gauge) OS에서 얻은 힙 메모리의 바이트(HeapSys)단위: byte
runtime.go.mem_stats.heap_idle(gauge) 유휴(미사용) 스팬의 바이트(HeapIdle)단위: byte
runtime.go.mem_stats.heap_inuse(gauge) 사용 중인 스팬의 바이트(HeapInuse)단위: byte
runtime.go.mem_stats.heap_released(gauge) OS로 반환된 물리적 메모리의 바이트(HeapReleased)단위: byte
runtime.go.mem_stats.heap_objects(gauge) 할당된 힙 객체 수(HeapObjects)단위: unit
runtime.go.mem_stats.stack_inuse(gauge) 스택 스팬의 바이트(StackInuse)단위: byte
runtime.go.mem_stats.stack_sys(gauge) OS에서 얻은 스택 메모리의 바이트(StackSys)단위: byte
runtime.go.mem_stats.m_span_inuse(gauge) 할당된 mspan 구조체의 바이트(MSpanInuse)단위: byte
runtime.go.mem_stats.m_span_sys(gauge) mspan 구조체용으로 OS에서 얻은 메모리의 바이트(MSpanSys)단위: byte
runtime.go.mem_stats.m_cache_inuse(gauge) 할당된 mcache 구조체의 바이트(MCacheInuse)단위: byte
runtime.go.mem_stats.m_cache_sys(gauge) mcache 구조체용으로 OS에서 얻은 메모리의 바이트(MCacheSys)단위: byte
runtime.go.mem_stats.buck_hash_sys(gauge) 프로파일링 버킷 해시 테이블의 메모리 바이트(BuckHashSys)단위: byte
runtime.go.mem_stats.gc_sys(gauge) 가비지 컬렉션 메타데이터의 메모리 바이트(GCSys)단위: byte
runtime.go.mem_stats.other_sys(gauge) 기타 오프힙 메모리의 바이트(OtherSys)단위: byte
runtime.go.mem_stats.next_gc(gauge) 다음 GC 사이클의 목표 힙 크기(NextGC)단위: byte
runtime.go.mem_stats.last_gc(gauge) 마지막 가비지 컬렉션이 끝난 시간, 1970년(UNIX epoch) 이후 나노초(LastGC)단위: nanosecond
runtime.go.mem_stats.pause_total_ns(gauge) GC의 누적 나노초(PauseTotalNs)단위: nanosecond
runtime.go.mem_stats.num_gc(gauge) 완료된 GC 사이클 수(NumGC)단위: unit
runtime.go.mem_stats.num_forced_gc(gauge) 애플리케이션이 GC 함수를 호출해 강제한 GC 사이클 수(NumForcedGC)단위: unit
runtime.go.mem_stats.gc_cpu_fraction(gauge) 프로그램 시작 이후 GC가 사용한 이 프로그램의 사용 가능한 CPU 시간 비율(GCCPUFraction)단위: fraction
runtime.go.gc_stats.pause_quantiles.min(gauge) GC 일시 중지 시간 분포: 최솟값단위: nanosecond
runtime.go.gc_stats.pause_quantiles.25p(gauge) GC 일시 중지 시간 분포: 25번째 백분위수단위: nanosecond
runtime.go.gc_stats.pause_quantiles.75p(gauge) GC 일시 중지 시간 분포: 50번째 백분위수단위: nanosecond
runtime.go.gc_stats.pause_quantiles.95p(gauge) GC 일시 중지 시간 분포: 75번째 백분위수단위: nanosecond
runtime.go.gc_stats.pause_quantiles.max(gauge) GC 일시 중지 시간 분포: 최댓값단위: nanosecond

Node.js

메트릭 설명
runtime.node.cpu.user(gauge) 사용자 코드의 CPU 사용량단위: percent
runtime.node.cpu.system(gauge) 시스템 코드의 CPU 사용량단위: percent
runtime.node.cpu.total(gauge) 총 CPU 사용량단위: percent
runtime.node.mem.rss(gauge) resident set 크기단위: byte
runtime.node.mem.heap_total(gauge) 총 힙 메모리단위: byte
runtime.node.mem.heap_used(gauge) 힙 메모리 사용량단위: byte
runtime.node.mem.total(gauge) 총 시스템 메모리 크기단위: byte
runtime.node.mem.free(gauge) 여유 시스템 메모리 크기단위: byte
runtime.node.mem.external(gauge) 외부 메모리단위: byte
runtime.node.heap.total_heap_size(gauge) 총 힙 크기단위: byte
runtime.node.heap.total_heap_size_executable(gauge) 총 실행 가능 힙 크기단위: byte
runtime.node.heap.total_physical_size(gauge) 총 물리 힙 크기단위: byte
runtime.node.heap.used_heap_size(gauge) 사용된 힙 크기단위: byte
runtime.node.heap.heap_size_limit(gauge) 힙 크기 한도단위: byte
runtime.node.heap.malloced_memory(gauge) malloc된 메모리단위: byte
runtime.node.heap.peak_malloced_memory(gauge) 최고 할당 메모리단위: byte
runtime.node.heap.size.by.space(gauge) 힙 공간 크기단위: byte
runtime.node.heap.used_size.by.space(gauge) 힙 공간 사용 크기단위: byte
runtime.node.heap.available_size.by.space(gauge) 힙 공간 사용 가능 크기단위: byte
runtime.node.heap.physical_size.by.space(gauge) 힙 공간 물리 크기단위: byte
runtime.node.process.uptime(gauge) 프로세스 업타임단위: second
runtime.node.event_loop.delay.max(gauge) 최대 이벤트 루프 지연단위: nanosecond
runtime.node.event_loop.delay.min(gauge) 최소 이벤트 루프 지연단위: nanosecond
runtime.node.event_loop.delay.avg(gauge) 평균 이벤트 루프 지연단위: nanosecond
runtime.node.event_loop.delay.sum(rate) 총 이벤트 루프 지연단위: nanosecond
runtime.node.event_loop.delay.median(gauge) 중앙값 이벤트 루프 지연단위: nanosecond
runtime.node.event_loop.delay.95percentile(gauge) 95번째 백분위수 이벤트 루프 지연단위: nanosecond
runtime.node.event_loop.delay.count(rate) 지연이 감지된 이벤트 루프 반복 횟수단위: execution
runtime.node.event_loop.utilization(gauge) 이벤트 루프가 활성인 시간의 비율단위: unit
runtime.node.gc.pause.max(gauge) 최대 가비지 컬렉션 일시 중지단위: nanosecond
runtime.node.gc.pause.min(gauge) 최소 가비지 컬렉션 일시 중지단위: nanosecond
runtime.node.gc.pause.avg(gauge) 평균 가비지 컬렉션 일시 중지단위: nanosecond
runtime.node.gc.pause.sum(rate) 총 가비지 컬렉션 일시 중지단위: nanosecond
runtime.node.gc.pause.median(gauge) 중앙값 가비지 컬렉션 일시 중지단위: nanosecond
runtime.node.gc.pause.95percentile(gauge) 95번째 백분위수 가비지 컬렉션 일시 중지단위: nanosecond
runtime.node.gc.pause.count(rate) 가비지 컬렉션 수단위: garbage collection
runtime.node.gc.pause.by.type.max(gauge) 유형별 최대 가비지 컬렉션 일시 중지단위: nanosecond
runtime.node.gc.pause.by.type.min(gauge) 유형별 최소 가비지 컬렉션 일시 중지단위: nanosecond
runtime.node.gc.pause.by.type.avg(gauge) 유형별 평균 가비지 컬렉션 일시 중지단위: nanosecond
runtime.node.gc.pause.by.type.sum(rate) 유형별 총 가비지 컬렉션 일시 중지단위: nanosecond
runtime.node.gc.pause.by.type.median(gauge) 유형별 중앙값 가비지 컬렉션 일시 중지단위: nanosecond
runtime.node.gc.pause.by.type.95percentile(gauge) 유형별 95번째 백분위수 가비지 컬렉션 일시 중지단위: nanosecond
runtime.node.gc.pause.by.type.count(rate) 유형별 가비지 컬렉션 수단위: garbage collection

.NET

메트릭 설명
runtime.dotnet.cpu.system(gauge) 커널에서 실행한 밀리초 수단위: millisecond
runtime.dotnet.cpu.user(gauge) 커널 외부에서 실행한 밀리초 수단위: millisecond
runtime.dotnet.cpu.percent(gauge) 애플리케이션이 사용한 총 CPU 비율단위: percent
runtime.dotnet.mem.committed(gauge) 메모리 사용량단위: byte
runtime.dotnet.threads.count(gauge) 스레드 수단위: thread
runtime.dotnet.threads.workers_count(gauge) 스레드풀의 워커 수 (.NET Core 3.1+ 전용)단위: thread
runtime.dotnet.threads.contention_time(gauge) 스레드가 락을 기다리며 보낸 누적 시간 (.NET Core 3.1+ 전용)단위: millisecond
runtime.dotnet.threads.contention_count(count) 스레드가 락을 기다리기 위해 멈춘 횟수
runtime.dotnet.exceptions.count(count) first-chance 예외 수단위: exception
runtime.dotnet.gc.size.gen0(gauge) gen 0 힙 크기단위: byte
runtime.dotnet.gc.size.gen1(gauge) gen 1 힙 크기단위: byte
runtime.dotnet.gc.size.gen2(gauge) gen 2 힙 크기단위: byte
runtime.dotnet.gc.size.loh(gauge) 대형 객체 힙 크기단위: byte
runtime.dotnet.gc.memory_load(gauge) 프로세스가 사용한 총 메모리 비율. GC는 이 값이 85를 넘으면 동작을 변경해요. (.NET Core 3.1+ 전용)단위: percent
runtime.dotnet.gc.pause_time(gauge) GC가 애플리케이션 스레드를 일시 중지한 시간 (.NET Core 3.1+ 전용)단위: millisecond
runtime.dotnet.gc.count.gen0(count) gen 0 가비지 컬렉션 수단위: garbage collection
runtime.dotnet.gc.count.gen1(count) gen 1 가비지 컬렉션 수단위: garbage collection
runtime.dotnet.gc.count.gen2(count) gen 2 가비지 컬렉션 수단위: garbage collection
runtime.dotnet.aspnetcore.requests.total(gauge) 서버가 수신한 총 HTTP 요청 수 (.NET Core 3.1+ 전용)단위: request
runtime.dotnet.aspnetcore.requests.failed(gauge) 서버가 수신한 실패한 HTTP 요청 수 (.NET Core 3.1+ 전용)단위: request
runtime.dotnet.aspnetcore.requests.current(gauge) 시작했지만 아직 멈추지 않은 총 HTTP 요청 수 (.NET Core 3.1+ 전용)단위: request
runtime.dotnet.aspnetcore.requests.queue_length(gauge) 서버 HTTP 요청 큐의 현재 길이 (.NET 5+ 전용)단위: request
runtime.dotnet.aspnetcore.connections.total(gauge) 서버에 설정된 총 HTTP 연결 수 (.NET 5+ 전용)단위: connection
runtime.dotnet.aspnetcore.connections.current(gauge) 서버에 대한 현재 활성 HTTP 연결 수 (.NET 5+ 전용)단위: connection
runtime.dotnet.aspnetcore.connections.queue_length(gauge) HTTP 서버 연결 큐의 현재 길이 (.NET 5+ 전용)단위: connection

더 알아보기 (Learn more)