런타임 메트릭

개요

런타임 메트릭은 애플리케이션의 메모리 사용량, 가비지 컬렉션 및 병렬화를 모니터링합니다. Datadog SDK는 지원되는 환경에서 이러한 메트릭을 자동으로 수집하며 Datadog Agent로 전송합니다.

이 메트릭은 병목 현상을 식별하고 성능 문제를 해결하며 리소스 사용을 최적화하는 데 도움을 줍니다. 트레이스 및 로그와 함께 런타임 메트릭을 확인하면 애플리케이션 상태와 성능에 대한 종합적인 가시성을 확보할 수 있습니다.

Datadog 트레이싱 라이브러리 대신 OpenTelemetry를 사용하는 경우 OpenTelemetry 런타임 메트릭을 참조하여 설정하세요.

호환성

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

  • 기본 활성화: 예
  • 라이브러리 버전: 0.29.0 이상
  • 런타임: Java 8 이상
AWS Lambda 환경에서는 JMX 메트릭 수집이 지원되지 않습니다.
  • 기본 활성화: 아니요
  • 라이브러리 버전: 0.30.0 이상
  • 지원 수준: 미리보기
  • 런타임: 지원되는 모든 Python 버전
  • 기본 활성화: 아니요
  • 라이브러리 버전: 0.44.0 이상
  • 런타임: 지원되는 모든 Ruby 버전
애플리케이션에 dogstatsd-ruby gem을 추가해야 합니다.
  • 기본 활성화: 아니요
  • 라이브러리 버전: 1.18.0 이상
  • 런타임: 지원되는 모든 Go 버전
  • 기본 활성화: 아니요
  • 라이브러리 버전: 3.0.0 이상
  • 런타임: 지원되는 모든 Node.js 버전
  • 기본 활성화: 예, .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 애플리케이션 풀 계정 및 일부 서비스 계정 포함)가 반대의 데이터에 액세스하려면 *성능 모니터링 사용자 그룹에 추가되어야 합니다.

IIS 애플리케이션 풀은 사용자 목록에 나타나지 않는 특수 계정을 사용합니다. 이 계정을 성능 모니터링 사용자 그룹에 추가하려면 IIS APPPOOL\<name of the pool> 형식을 사용합니다. 예를 들어, DefaultAppPool의 사용자는 IIS APPPOOL\DefaultAppPool입니다.

이 작업은 ‘컴퓨터 관리’ UI 또는 관리자 명령 프롬프트에서 수행할 수 있습니다.

net localgroup "Performance Monitor Users" "IIS APPPOOL\DefaultAppPool" /add
PHP에 대한 런타임 메트릭은 지원되지 않습니다.
C++에 대한 런타임 메트릭은 지원되지 않습니다.

설정 지침

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

1. Datadog Agent 구성

Agent에서 DogStatsD를 활성화합니다. 기본적으로 Datadog Agent는 포트 8125를 통해 메트릭을 수집하도록 구성되어 있습니다.

컨테이너화된 환경에서 Datadog Agent를 실행할 때 추가 구성이 필요합니다.

  1. DogStatsD 비로컬 트래픽이 활성화되어 있는지 확인합니다. 이 설정은 기본적으로 활성화되어 있습니다. 이전에 비활성화한 경우, 주 datadog.yaml 구성 파일에서 dogstatsd_non_local_traffic: true를 설정하거나 환경 변수 DD_DOGSTATSD_NON_LOCAL_TRAFFIC=true를 설정합니다.
  2. 다음의 컨테이너 전용 설정 지침을 따릅니다.
Docker
Kubernetes
Amazon ECS
ECS Fargate

  1. Datadog Agent의 DD_SITE 로 설정하여 Agent가 데이터를 올바른 Datadog 위치에 전송되도록 보장합니다.

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 이상에서 tracer v3.40.0 이상이면(그리고 NET 6/7에서 DD_RUNTIME_METRICS_ENABLED가 명시적으로 설정되지 않은 경우) true, 그 외는 false
설명: .NET 6부터 사용할 수 있는 설정입니다. .NET 트레이서가 System.Diagnostics.Metrics API를 사용하여 메트릭을 수집할지, 아니면 EventListener 기반 컬렉터를 사용할지를 제어합니다.

코드 기반 구성

환경 변수 외에도 일부 언어는 코드에서 직접 런타임 메트릭을 구성하는 것을 지원합니다.

런타임 메트릭은 환경 변수로만 활성화할 수 있습니다.

다만, 사용자 지정 JMX 메트릭을 추가하여 수집된 메트릭을 확장할 수 있습니다. 자세한 내용은 JMX 통합 설명서를 참조하세요.

런타임 메트릭은 환경 변수 또는 코드로 활성화할 수 있습니다.

from ddtrace.runtime import RuntimeMetrics
RuntimeMetrics.enable()
이 설정은 ddtrace-run
을 사용하지 않는 경우에만 적용됩니다.

런타임 메트릭은 환경 변수 또는 코드로 활성화할 수 있습니다.

# 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

런타임 메트릭은 환경 변수 또는 코드로 활성화할 수 있습니다.

// 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 이상에서 사용 가능)

런타임 메트릭은 환경 변수 또는 코드로 활성화할 수 있습니다.

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

런타임 메트릭은 환경 변수로만 활성화할 수 있습니다.

대시보드

설정이 완료되면 런타임 메트릭을 볼 수 있습니다.

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

문제 해결

  • 플레임 그래프 내에서 런타임 메트릭을 연결하려면 env 태그(대소문자 구분)가 설정되어 있고 환경과 일치하는지 확인하세요.
  • Fargate를 사용할 때 서비스 페이지에 런타임 메트릭이 표시되도록 하려면 DD_DOGSTATSD_TAGS가 Agent 작업에 설정되어 있고 구성된 env 태그가 계측된 서비스의 env와 일치하는지 확인하세요.

수집된 데이터

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

jvm.heap_memory
(gauge)
The total Java heap memory used.
Shown as byte
jvm.heap_memory_committed
(gauge)
The total Java heap memory committed to be used.
Shown as byte
jvm.heap_memory_init
(gauge)
The initial Java heap memory allocated.
Shown as byte
jvm.heap_memory_max
(gauge)
The maximum Java heap memory available.
Shown as byte
jvm.loaded_classes
(gauge)
Number of classes currently loaded.
jvm.non_heap_memory
(gauge)
The total Java non-heap memory used. Non-heap memory is calculated as follows: Metaspace + CompressedClassSpace + CodeCache
Shown as byte
jvm.non_heap_memory_committed
(gauge)
The total Java non-heap memory committed to be used.
Shown as byte
jvm.non_heap_memory_init
(gauge)
The initial Java non-heap memory allocated.
Shown as byte
jvm.non_heap_memory_max
(gauge)
The maximum Java non-heap memory available.
Shown as byte
jvm.thread_count
(count)
The number of live threads.
Shown as thread
jvm.gc.cms.count
(count)
The total number of garbage collections that have occurred.
jvm.gc.major_collection_count
(gauge)
The rate of major garbage collections. Set new_gc_metrics: true to receive this metric.
jvm.gc.minor_collection_count
(gauge)
The rate of minor garbage collections. Set new_gc_metrics: true to receive this metric.
jvm.gc.parnew.time
(gauge)
The approximate accumulated garbage collection time elapsed.
Shown as millisecond
jvm.gc.major_collection_time
(gauge)
The fraction of time spent in major garbage collection. Set new_gc_metrics: true to receive this metric.
Shown as permille
jvm.gc.minor_collection_time
(gauge)
The fraction of time spent in minor garbage collection. Set new_gc_metrics: true to receive this metric.
Shown as permille
jvm.gc.old_gen_size
(gauge)
The current Java heap memory usage of the Old Generation memory pool.
Shown as byte
jvm.gc.eden_size
(gauge)
The current Java heap memory usage of the Eden memory pool.
Shown as byte
jvm.gc.survivor_size
(gauge)
The current Java heap memory usage of the Survivor memory pool.
Shown as byte
jvm.gc.metaspace_size
(gauge)
The current Java non-heap memory usage of the Metaspace memory pool.
Shown as byte
jvm.cpu_load.system
(gauge)
Recent CPU utilization for the whole system.
Shown as fraction
jvm.cpu_load.process
(gauge)
Recent CPU utilization for the process.
Shown as fraction
jvm.buffer_pool.direct.used
(gauge)
Measure of memory used by direct buffers.
Shown as byte
jvm.buffer_pool.direct.count
(gauge)
Number of direct buffers in the pool.
jvm.buffer_pool.direct.capacity
(gauge)
Measure of total memory capacity of direct buffers.
Shown as byte
jvm.buffer_pool.mapped.used
(gauge)
Measure of memory used by mapped buffers.
Shown as byte
jvm.buffer_pool.mapped.count
(gauge)
Number of mapped buffers in the pool.
jvm.buffer_pool.mapped.capacity
(gauge)
Measure of total memory capacity of mapped buffers.
Shown as byte
jvm.os.open_file_descriptors
(gauge)
The number of open file descriptors.

Note: Set new_gc_metrics: true in your jmx.d/conf.yaml to replace the following metrics:

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
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
runtime.ruby.class_count
(gauge)
Total number of classes loaded
Shown as resource
runtime.ruby.gc.remembered_wb_unprotected_objects
(gauge)
Number of write-barrier unprotected objects in the remembered set
Shown as resource
runtime.ruby.gc.remembered_wb_unprotected_objects_limit
(gauge)
Limit on write-barrier unprotected objects allowed in the remembered set
Shown as resource
runtime.ruby.gc.oldmalloc_increase_bytes
(gauge)
Total bytes allocated to old objects
Shown as byte
runtime.ruby.gc.oldmalloc_increase_bytes_limit
(gauge)
Bytes limit that will trigger garbage collection of old objects
Shown as byte
runtime.ruby.gc.malloc_increase_bytes
(gauge)
Total bytes allocated to objects
Shown as byte
runtime.ruby.gc.malloc_increase_bytes_limit
(gauge)
Bytes limit that will trigger garbage collection of objects
Shown as byte
runtime.ruby.gc.total_allocated_objects
(gauge)
Total number of allocated objects over the lifetime of this process
Shown as resource
runtime.ruby.gc.total_freed_objects
(gauge)
Total number of freed objects over the lifetime of this process
Shown as resource
runtime.ruby.gc.total_allocated_pages
(gauge)
Total number of allocated pages over the lifetime of this process
Shown as page
runtime.ruby.gc.total_freed_pages
(gauge)
Total number of freed pages over the lifetime of this process
Shown as page
runtime.ruby.gc.heap_live_slots
(gauge)
Number of live objects slots
Shown as resource
runtime.ruby.gc.heap_final_slots
(gauge)
Number of object slots with finalizers attached to them
Shown as resource
runtime.ruby.gc.heap_marked_slots
(gauge)
Count of old objects which survived more than 3 GC cycles and number of write-barrier unprotected objects
Shown as resource
runtime.ruby.gc.heap_available_slots
(gauge)
Total number of slots in heap pages
Shown as resource
runtime.ruby.gc.heap_free_slots
(gauge)
Number of free slots in heap pages
Shown as resource
runtime.ruby.thread_count
(gauge)
Total number of threads
Shown as thread
runtime.ruby.gc.old_objects
(gauge)
Total number of old objects
Shown as resource
runtime.ruby.gc.old_objects_limit
(gauge)
Limit on number of old objects
Shown as resource
runtime.ruby.global_constant_state
(gauge)
Global constant cache generation
Shown as event
runtime.ruby.global_method_state
(gauge)
Global method cache generation
Shown as event
runtime.ruby.constant_cache_invalidations
(gauge)
Constant cache invalidations
Shown as resource
runtime.ruby.constant_cache_misses
(gauge)
Constant cache misses
Shown as resource
runtime.go.num_cpu
(gauge)
CPUs detected by the runtime.
Shown as resource
runtime.go.num_goroutine
(gauge)
goroutines spawned.
Shown as invocation
runtime.go.num_cgo_call
(gauge)
CGO calls made.
Shown as invocation
runtime.go.mem_stats.alloc
(gauge)
Alloc is bytes of allocated heap objects.
Shown as byte
runtime.go.mem_stats.total_alloc
(gauge)
TotalAlloc is cumulative bytes allocated for heap objects.
Shown as byte
runtime.go.mem_stats.sys
(gauge)
Sys is the total bytes of memory obtained from the OS.
Shown as byte
runtime.go.mem_stats.lookups
(gauge)
Lookups is the number of pointer lookups performed by the
Shown as unit
runtime.go.mem_stats.mallocs
(gauge)
Mallocs is the cumulative count of heap objects allocated.
Shown as unit
runtime.go.mem_stats.frees
(gauge)
Frees is the cumulative count of heap objects freed.
Shown as unit
runtime.go.mem_stats.heap_alloc
(gauge)
HeapAlloc is bytes of allocated heap objects.
Shown as byte
runtime.go.mem_stats.heap_sys
(gauge)
HeapSys is bytes of heap memory obtained from the OS.
Shown as byte
runtime.go.mem_stats.heap_idle
(gauge)
HeapIdle is bytes in idle (unused) spans.
Shown as byte
runtime.go.mem_stats.heap_inuse
(gauge)
HeapInuse is bytes in in-use spans.
Shown as byte
runtime.go.mem_stats.heap_released
(gauge)
HeapReleased is bytes of physical memory returned to the OS.
Shown as byte
runtime.go.mem_stats.heap_objects
(gauge)
HeapObjects is the number of allocated heap objects.
Shown as unit
runtime.go.mem_stats.stack_inuse
(gauge)
StackInuse is bytes in stack spans.
Shown as byte
runtime.go.mem_stats.stack_sys
(gauge)
StackSys is bytes of stack memory obtained from the OS.
Shown as byte
runtime.go.mem_stats.m_span_inuse
(gauge)
MSpanInuse is bytes of allocated mspan structures.
Shown as byte
runtime.go.mem_stats.m_span_sys
(gauge)
MSpanSys is bytes of memory obtained from the OS for mspan structures.
Shown as byte
runtime.go.mem_stats.m_cache_inuse
(gauge)
MCacheInuse is bytes of allocated mcache structures.
Shown as byte
runtime.go.mem_stats.m_cache_sys
(gauge)
MCacheSys is bytes of memory obtained from the OS for
Shown as byte
runtime.go.mem_stats.buck_hash_sys
(gauge)
BuckHashSys is bytes of memory in profiling bucket hash tables.
Shown as byte
runtime.go.mem_stats.gc_sys
(gauge)
GCSys is bytes of memory in garbage collection metadata.
Shown as byte
runtime.go.mem_stats.other_sys
(gauge)
OtherSys is bytes of memory in miscellaneous off-heap
Shown as byte
runtime.go.mem_stats.next_gc
(gauge)
NextGC is the target heap size of the next GC cycle.
Shown as byte
runtime.go.mem_stats.last_gc
(gauge)
LastGC is the time the last garbage collection finished, as nanoseconds since 1970 (the UNIX epoch).
Shown as nanosecond
runtime.go.mem_stats.pause_total_ns
(gauge)
PauseTotalNs is the cumulative nanoseconds in GC
Shown as nanosecond
runtime.go.mem_stats.num_gc
(gauge)
NumGC is the number of completed GC cycles.
Shown as unit
runtime.go.mem_stats.num_forced_gc
(gauge)
NumForcedGC is the number of GC cycles that were forced by the application calling the GC function.
Shown as unit
runtime.go.mem_stats.gc_cpu_fraction
(gauge)
GCCPUFraction is the fraction of this program’s available CPU time used by the GC since the program started.
Shown as fraction
runtime.go.gc_stats.pause_quantiles.min
(gauge)
Distribution of GC pause times: minimum values
Shown as nanosecond
runtime.go.gc_stats.pause_quantiles.25p
(gauge)
Distribution of GC pause times: 25th percentile
Shown as nanosecond
runtime.go.gc_stats.pause_quantiles.75p
(gauge)
Distribution of GC pause times: 50th percentile
Shown as nanosecond
runtime.go.gc_stats.pause_quantiles.95p
(gauge)
Distribution of GC pause times: 75th percentile
Shown as nanosecond
runtime.go.gc_stats.pause_quantiles.max
(gauge)
Distribution of GC pause times: maximum values
Shown as nanosecond
runtime.node.cpu.user
(gauge)
CPU usage in user code
Shown as percent
runtime.node.cpu.system
(gauge)
CPU usage in system code
Shown as percent
runtime.node.cpu.total
(gauge)
Total CPU usage
Shown as percent
runtime.node.mem.rss
(gauge)
Resident set size
Shown as byte
runtime.node.mem.heap_total
(gauge)
Total heap memory
Shown as byte
runtime.node.mem.heap_used
(gauge)
Heap memory usage
Shown as byte
runtime.node.mem.total
(gauge)
Total system memory size
Shown as byte
runtime.node.mem.free
(gauge)
Free system memory size
Shown as byte
runtime.node.mem.external
(gauge)
External memory
Shown as byte
runtime.node.heap.total_heap_size
(gauge)
Total heap size
Shown as byte
runtime.node.heap.total_heap_size_executable
(gauge)
Total executable heap size
Shown as byte
runtime.node.heap.total_physical_size
(gauge)
Total physical heap size
Shown as byte
runtime.node.heap.used_heap_size
(gauge)
Used heap size
Shown as byte
runtime.node.heap.heap_size_limit
(gauge)
Heap size limit
Shown as byte
runtime.node.heap.malloced_memory
(gauge)
Malloced memory
Shown as byte
runtime.node.heap.peak_malloced_memory
(gauge)
Peak allocated memory
Shown as byte
runtime.node.heap.size.by.space
(gauge)
Heap space size
Shown as byte
runtime.node.heap.used_size.by.space
(gauge)
Heap space used size
Shown as byte
runtime.node.heap.available_size.by.space
(gauge)
Heap space available size
Shown as byte
runtime.node.heap.physical_size.by.space
(gauge)
Heap space physical size
Shown as byte
runtime.node.process.uptime
(gauge)
Process uptime
Shown as second
runtime.node.event_loop.delay.max
(gauge)
Maximum event loop delay
Shown as nanosecond
runtime.node.event_loop.delay.min
(gauge)
Minimum event loop delay
Shown as nanosecond
runtime.node.event_loop.delay.avg
(gauge)
Average event loop delay
Shown as nanosecond
runtime.node.event_loop.delay.sum
(rate)
Total event loop delay
Shown as nanosecond
runtime.node.event_loop.delay.median
(gauge)
Median event loop delay
Shown as nanosecond
runtime.node.event_loop.delay.95percentile
(gauge)
95th percentile event loop delay
Shown as nanosecond
runtime.node.event_loop.delay.count
(rate)
Event loop iteration count where a delay is detected
Shown as execution
runtime.node.event_loop.utilization
(gauge)
Fraction of time the event loop is active
Shown as unit
runtime.node.gc.pause.max
(gauge)
Maximum garbage collection pause
Shown as nanosecond
runtime.node.gc.pause.min
(gauge)
Minimum garbage collection pause
Shown as nanosecond
runtime.node.gc.pause.avg
(gauge)
Average garbage collection pause
Shown as nanosecond
runtime.node.gc.pause.sum
(rate)
Total garbage collection pause
Shown as nanosecond
runtime.node.gc.pause.median
(gauge)
Median garbage collection pause
Shown as nanosecond
runtime.node.gc.pause.95percentile
(gauge)
95th percentile garbage collection pause
Shown as nanosecond
runtime.node.gc.pause.count
(rate)
Number of garbage collections
Shown as garbage collection
runtime.node.gc.pause.by.type.max
(gauge)
Maximum garbage collection pause by type
Shown as nanosecond
runtime.node.gc.pause.by.type.min
(gauge)
Minimum garbage collection pause by type
Shown as nanosecond
runtime.node.gc.pause.by.type.avg
(gauge)
Average garbage collection pause by type
Shown as nanosecond
runtime.node.gc.pause.by.type.sum
(rate)
Total garbage collection pause by type
Shown as nanosecond
runtime.node.gc.pause.by.type.median
(gauge)
Median garbage collection pause by type
Shown as nanosecond
runtime.node.gc.pause.by.type.95percentile
(gauge)
95th percentile garbage collection pause by type
Shown as nanosecond
runtime.node.gc.pause.by.type.count
(rate)
Number of garbage collections by type
Shown as garbage collection
runtime.dotnet.cpu.system
(gauge)
The number of milliseconds executing in the kernel
Shown as millisecond
runtime.dotnet.cpu.user
(gauge)
The number of milliseconds executing outside the kernel
Shown as millisecond
runtime.dotnet.cpu.percent
(gauge)
The percentage of total CPU used by the application
Shown as percent
runtime.dotnet.mem.committed
(gauge)
Memory usage
Shown as byte
runtime.dotnet.threads.count
(gauge)
The number of threads
Shown as thread
runtime.dotnet.threads.workers_count
(gauge)
The number of workers in the threadpool (.NET Core 3.1+ only)
Shown as thread
runtime.dotnet.threads.contention_time
(gauge)
The cumulated time spent by threads waiting on a lock (.NET Core 3.1+ only)
Shown as millisecond
runtime.dotnet.threads.contention_count
(count)
The number of times a thread stopped to wait on a lock
runtime.dotnet.exceptions.count
(count)
The number of first-chance exceptions
Shown as exception
runtime.dotnet.gc.size.gen0
(gauge)
The size of the gen 0 heap
Shown as byte
runtime.dotnet.gc.size.gen1
(gauge)
The size of the gen 1 heap
Shown as byte
runtime.dotnet.gc.size.gen2
(gauge)
The size of the gen 2 heap
Shown as byte
runtime.dotnet.gc.size.loh
(gauge)
The size of the large object heap
Shown as byte
runtime.dotnet.gc.memory_load
(gauge)
The percentage of the total memory used by the process. The GC changes its behavior when this value gets above 85. (.NET Core 3.1+ only)
Shown as percent
runtime.dotnet.gc.pause_time
(gauge)
The amount of time the GC paused the application threads (.NET Core 3.1+ only)
Shown as millisecond
runtime.dotnet.gc.count.gen0
(count)
The number of gen 0 garbage collections
Shown as garbage collection
runtime.dotnet.gc.count.gen1
(count)
The number of gen 1 garbage collections
Shown as garbage collection
runtime.dotnet.gc.count.gen2
(count)
The number of gen 2 garbage collections
Shown as garbage collection
runtime.dotnet.aspnetcore.requests.total
(gauge)
The total number of HTTP requests received by the server (.NET Core 3.1+ only)
Shown as request
runtime.dotnet.aspnetcore.requests.failed
(gauge)
The number of failed HTTP requests received by the server (.NET Core 3.1+ only)
Shown as request
runtime.dotnet.aspnetcore.requests.current
(gauge)
The total number of HTTP requests that have started but not yet stopped (.NET Core 3.1+ only)
Shown as request
runtime.dotnet.aspnetcore.requests.queue_length
(gauge)
The current length of the server HTTP request queue (.NET 5+ only)
Shown as request
runtime.dotnet.aspnetcore.connections.total
(gauge)
The total number of HTTP connections established to the server (.NET 5+ only)
Shown as connection
runtime.dotnet.aspnetcore.connections.current
(gauge)
The current number of active HTTP connections to the server (.NET 5+ only)
Shown as connection
runtime.dotnet.aspnetcore.connections.queue_length
(gauge)
The current length of the HTTP server connection queue (.NET 5+ only)
Shown as connection

추가 자료