런타임 메트릭 호환성

  • .NET Framework 4.6.1 이상
  • .NET Core 3.1
  • .NET 5
  • .NET 6
  • NET 7
  • .NET 8

자동 설정

DD_RUNTIME_METRICS_ENABLED=true 환경 변수를 사용하여 .NET Tracer 1.23.0+에서 런타임 메트릭 컬렉션을 활성화합니다.

.NET 서비스와의 상관관계에서 런타임 메트릭을 봅니다. Datadog에서 서비스 카탈로그를 참조하세요.

기본적으로 애플리케이션의 런타임 메트릭은 포트 8125 를 통해 DogStatsD 으로 Datadog 에이전트로 전송됩니다. 에이전트에 [DogStatsD]가 활성화되어 있는지 확인하세요.

에이전트를 컨테이너 로 실행하는 경우 DD_DOGSTATSD_NON_LOCAL_TRAFFICtrue로 설정되어 있는지, 포트 8125가 에이전트 에서 열려 있는지 확인합니다. 또한:

또는 에이전트는 UDP 전송의 대안으로 유닉스 도메인 소켓(UDS)을 사용하여 메트릭을 수집할 수 있습니다. 자세한 내용은 DogStatsD 를 통한 Unix 도메인 소켓을 참조하세요.

수집한 데이터

.NET 메트릭을 사용하도록 설정하면 기본적으로 다음 메트릭이 수집됩니다.

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

메트릭 애플리케이션 성능 모니터링(APM) 서비스(현황) 페이지에서 Datadog는 기본 .NET 런타임 대시보드를 제공합니다.

IIS에 대한 추가 권한

.NET Framework에서는 성능 카운터를 사용하여 메트릭 데이터를 수집합니다. 비대화형 로그온 세션의 사용자(IIS 애플리케이션 풀 계정 및 일부 서비스 계정 포함)가 반대의 데이터에 액세스하려면 성능 모니터링 사용자 그룹에 추가되어야 합니다.

IIS 응용 프로그램 풀은 사용자의 목록 에 나타나지 않는 특수 계정을 사용합니다. 성능 모니터링 사용자 그룹에 추가하려면 IIS APPPOOL\<name of the pool> 을 찾습니다. 예를 들어 DefaultAppPool의 사용자는 IIS APPPOOL\DefaultAppPool 입니다.

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

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

참고 자료