콘텐츠로 이동

.NET

설치 및 설정

지원 버전

버전 Microsoft 지원 종료 상태 지원 상태 패키지 버전
.NET 7 - GA latest (>= 2.20.0)
.NET 6 - GA latest (>= 2.0.0)
.NET 5 - GA latest (>= 2.0.0)
.NET Core 3.1 12/03/2022 GA latest
.NET Core 2.1 08/21/2021 GA latest
.NET Core 3.0 03/03/2020 EOL Not recommended
.NET Core 2.2 12/23/2019 EOL Not recommended
.NET Core 2.0 10/01/2018 EOL Not recommended

Agent 설치

Info

머신 전체에 Datadog .NET Tracer를 설치하여 해당 머신의 모든 서비스를 감지할 수도 있고, 각 애플리케이션 단위로 설치하여 개발자가 애플리케이션의 종속성을 통해 감지를 관리하도록 할 수도 있습니다. 머신 범위 설치 지침을 보려면 Windows 또는 Linux 탭을 클릭하세요. 애플리케이션별 설치 지침을 보려면 NuGet 탭을 클릭하세요.

머신 전체에 .NET Tracer를 설치하려면 다음을 수행하세요.

  1. .NET Tracer MSI 설치 프로그램을 다운로드합니다. 운영 체제(x64 또는 x86)에 맞는 아키텍처의 MSI 설치 프로그램을 선택합니다.
  2. 관리자 권한으로 .NET Tracer MSI 설치 프로그램을 실행합니다. PowerShell에서 다음 명령을 실행하여 MSI 설치 프로그램을 스크립트로 실행할 수도 있습니다. Start-Process -Wait msiexec -ArgumentList '/qn /i datadog-apm.msi'.

머신 전체에 .NET Tracer를 설치하려면 다음을 수행하세요.

  1. .NET Tracer MSI 설치 프로그램을 다운로드합니다. 운영 체제(x64 또는 x86)에 맞는 아키텍처의 MSI 설치 프로그램을 선택합니다.
  2. 운영 체제에 맞는 아래 설치 패키지를 실행하고, 적절한 권한으로 .NET tracer 로그 디렉터리 /var/log/datadog/dotnet를 생성합니다.

    Debian or Ubuntu
    sudo dpkg -i ./datadog-dotnet-apm_<TRACER_VERSION>_amd64.deb && /opt/datadog/createLogPath.sh
    CentOS or Fedora
    sudo rpm -Uvh datadog-dotnet-apm<TRACER_VERSION>-1.x86_64.rpm && /opt/datadog/createLogPath.sh
    Alpine or other musl-based distributions
    sudo tar -C /opt/datadog -xzf datadog-dotnet-apm-<TRACER_VERSION>-musl.tar.gz && sh /opt/datadog/createLogPath.sh
    Other distributions
    sudo tar -C /opt/datadog -xzf datadog-dotnet-apm<TRACER_VERSION>-tar.gz && /opt/datadog/createLogPath.sh

셸이 없는 경량 또는 distroless Docker 이미지에 .NET tracer를 설치하려면 Dockerfile에서 다음 명령을 사용하세요.

  • ADD를 사용해 tracer 파일을 컨테이너에 넣습니다.
  • COPY --chown=$APP_UID를 사용하고 빈 디렉터리를 소스로 하여 로그 디렉터리를 생성합니다.

예를 들어 Dockerfile에는 다음과 같이 작성할 수 있습니다.

ADD datadog-dotnet-apm-<TRACER_VERSION>.tar.gz /opt/datadog/
COPY --chown=$APP_UID --from=<OTHER_STAGE> /empty/ /var/log/datadog/dotnet/
Info

주의: 이 설치 방식은 IIS에서 실행 중인 애플리케이션을 감지하지 않습니다. IIS에서 실행 중인 애플리케이션의 경우 Windows 머신 전체 설치 절차를 따르세요.

애플리케이션에 .NET Tracer 추가

  1. NuGet package를 사용하여 애플리케이션에 Datadog.Trace.Bundle를 추가합니다.

애플리케이션에서 Tracer 활성화

애플리케이션 서비스에서 .NET Tracer를 활성화하려면 필요한 환경 변수를 설정한 후 애플리케이션을 다시 시작해야 합니다.

환경 변수를 설정하는 다양한 방법에 대한 정보는 구성 절차의 환경 변수를 참조하세요.

Internet Information Services (IIS):

  1. .NET Tracer MSI 설치 프로그램이 필요한 모든 환경 변수를 추가합니다. 여기서는 추가 환경 변수를 구성해야 합니다.
  2. IIS에서 호스팅되는 애플리케이션을 자동 감지하려면 관리자 권한으로 다음 명령을 실행하여 IIS를 완전히 중지한 뒤 다시 시작하세요.
    net stop /y was
    net start w3svc
    
Info

주의: tracer를 활성화할 때는 항상 위 명령을 사용해 IIS를 완전히 중지한 뒤 다시 시작하세요. IIS 관리자 GUI 애플리케이션이나 iisreset.exe는 사용하지 마세요.

IIS가 아닌 애플리케이션

  1. 애플리케이션에 연결할 자동 감지를 위해 다음 필수 환경 변수를 설정합니다.
    CORECLR_ENABLE_PROFILING=1
    CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
    
  2. 애플리케이션을 다시 시작합니다.
  1. 애플리케이션에 자동 감지를 추가하기 위해 필요한 환경 변수를 설정합니다.
    CORECLR_ENABLE_PROFILING=1  
    CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}  
    CORECLR_PROFILER_PATH=/opt/datadog/Datadog.Trace.ClrProfiler.Native.so  
    DD_DOTNET_TRACER_HOME=/opt/datadog  
    
  2. 애플리케이션을 다시 시작합니다

.NET 애플리케이션에 사용자 정의 probe를 추가합니다.

  1. 애플리케이션 코드에서 Datadog.Trace.Tracer.Instance 속성을 통해 전역 tracer에 접근하여 새로운 span을 생성합니다.

환경 변수 구성

서비스에 자동 감지를 연결하려면 애플리케이션을 시작하기 전에 필요한 환경 변수를 설정해야 합니다. .NET tracer 설치 방법을 기준으로 설정해야 하는 환경 변수는 애플리케이션에서 tracer 활성화 섹션을 참고하고, 아래 예시를 따라 삽입 지시를 사용하는 서비스의 환경에 맞게 환경 변수를 올바르게 설정하세요.

아래의 어느 방식이든 해당 변수 정보를 추가해야 합니다.

DD_TRACE_AGENT_PORT=9529

DD_AGENT_HOST=localhost

Windows

Info

v2.14.0부터 MSI로 tracer를 설치한 경우 CORECLR_PROFILER를 설정할 필요가 없습니다.

레지스트리 편집기에서 HKLM\System\CurrentControlSet\Services\<SERVICE NAME> 키에 Environment라는 이름의 다중 문자열 값을 만들고 값 데이터를 다음과 같이 설정합니다.

CORECLR_ENABLE_PROFILING=1
CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
Img

[string[]] $v = @("CORECLR_ENABLE_PROFILING=1", "CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}")
Set-ItemProperty HKLM:SYSTEM\CurrentControlSet\Services\<SERVICE NAME> -Name Environment -Value $v

MSI 설치 후에는 추가 구성 없이 IIS 사이트를 자동 감지할 수 있습니다. 모든 IIS 사이트가 상속하는 추가 환경 변수를 설정하려면 다음 단계를 수행하세요.

  1. 레지스트리 편집기를 열고 HKLM\System\CurrentControlSet\Services\WAS 레지스트리 키에서 Environment라는 다중 문자열 값을 찾아 환경 변수를 한 줄씩 추가합니다. 예를 들어 로그 주입과 런타임 메트릭을 추가하려면 값 데이터에 다음 줄을 추가합니다.

    DD_LOGS_INJECTION=true
    DD_RUNTIME_METRICS_ENABLED=true
    

  2. 다음 명령을 실행하여 IIS를 다시 시작합니다.

    net stop /y was
    net start w3svc
    # 또한 WAS 종료 시 중지되던 다른 모든 서비스도 다시 시작됩니다.
    
    Img

콘솔 애플리케이션을 자동 감지하려면 애플리케이션을 시작하기 전에 배치 파일에서 환경 변수를 설정하세요.

rem Set environment variables
SET CORECLR_ENABLE_PROFILING=1
rem Unless v2.14.0+ and you installed the tracer with the MSI
SET CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}

rem Set additional Datadog environment variables
SET DD_LOGS_INJECTION=true
SET DD_RUNTIME_METRICS_ENABLED=true

rem Start application
dotnet.exe example.dll

Linux

애플리케이션을 시작하기 전에 bash에서 필요한 환경 변수를 설정합니다.

# Set environment variables
export CORECLR_ENABLE_PROFILING=1
export CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
export CORECLR_PROFILER_PATH=/opt/datadog/Datadog.Trace.ClrProfiler.Native.so
export DD_DOTNET_TRACER_HOME=/opt/datadog

# Set additional Datadog environment variables
export DD_LOGS_INJECTION=true
export DD_RUNTIME_METRICS_ENABLED=true

# Start your application
dotnet example.dll

Docker container에서 환경 변수를 설정합니다.

# Set environment variables
ENV CORECLR_ENABLE_PROFILING=1
ENV CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
ENV CORECLR_PROFILER_PATH=/opt/datadog/Datadog.Trace.ClrProfiler.Native.so
ENV DD_DOTNET_TRACER_HOME=/opt/datadog

# Set additional Datadog environment variables
ENV DD_LOGS_INJECTION=true
ENV DD_RUNTIME_METRICS_ENABLED=true

# Start your application
CMD ["dotnet", "example.dll"]

systemctl을 사용해 .NET 애플리케이션을 서비스로 실행할 때, 특정 서비스가 로드할 필요한 환경 변수를 추가할 수 있습니다.

  1. 다음을 포함하는 environment.env 파일을 생성합니다.

    # Set environment variables
    CORECLR_ENABLE_PROFILING=1
    CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
    CORECLR_PROFILER_PATH=/opt/datadog/Datadog.Trace.ClrProfiler.Native.so
    DD_DOTNET_TRACER_HOME=/opt/datadog
    
    # Set additional Datadog environment variables
    DD_LOGS_INJECTION=true
    DD_RUNTIME_METRICS_ENABLED=true
    

  2. 서비스 구성 파일에서 이를 서비스 블록의 EnvironmentFile로 참조합니다.

    EnvironmentFile=/path/to/environment.env
    ExecStart=<command used to start the application>
    

  3. .NET 서비스를 다시 시작합니다.

Info

주의: .NET 런타임은 이러한 환경 변수가 설정된 후 시작된 모든 .NET 프로세스에 tracer를 로드하려고 시도합니다. tracing이 필요한 애플리케이션에만 감지를 제한해야 합니다. 이러한 환경 변수를 전역으로 설정하지 마세요. 호스트의 모든 .NET 프로세스에 probe가 로드되기 때문입니다.

systemctl을 사용해 .NET 애플리케이션을 서비스로 실행할 때, systemctl로 실행되는 모든 서비스에 로드할 환경 변수를 설정할 수도 있습니다.

  1. systemctl-Set-environment를 실행하여 필요한 환경 변수를 설정합니다.

    systemctl set-environment CORECLR_ENABLE_PROFILING=1
    systemctl set-environment CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
    systemctl set-environment CORECLR_PROFILER_PATH=/opt/datadog/Datadog.Trace.ClrProfiler.Native.so
    systemctl set-environment DD_DOTNET_TRACER_HOME=/opt/datadog
    
    # Set additional Datadog environment variables
    systemctl set-environment DD_LOGS_INJECTION=true
    systemctl set-environment DD_RUNTIME_METRICS_ENABLED=true
    

  2. systemctl show environment를 실행하여 환경 변수가 성공적으로 설정되었는지 확인합니다.

  3. 애플리케이션 서비스를 다시 시작합니다.

트레이싱

수집기

DDTrace를 통해 .NET 애플리케이션 관련 Tracing 정보를 수집합니다.

메트릭

런타임 메트릭

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

런타임 메트릭 호환성

  • .NET Framework 4.6.1+
  • .NET Core 3.1
  • .NET 5
  • .NET 6
  • .NET 7

수집기

  1. DataKit에서 statsd 수집기를 활성화합니다.
  2. 기본 포트는 8125입니다.
  3. Agent를 컨테이너로 실행하는 경우 DD_DOGSTATSD_NON_LOCAL_TRAFFICtrue로 설정되어 있고 Agent의 8125 포트가 열려 있는지 확인하세요.

메트릭 정보

자세한 메트릭 정보

로그

파일 디렉터리

기본적으로 로그 파일은 아래 디렉터리에 저장됩니다. DD_TRACE_LOG_DIRECTORY 설정을 사용하면 이 경로를 변경할 수 있습니다.

플랫폼 디렉터리
Windows %ProgramData%\Datadog .NET Tracer\logs\
Linux /var/log/datadog/dotnet/
Linux (when using Kubernetes library injection) /datadog-lib/logs
Azure App Service %AzureAppServiceHomeDirectory%\LogFiles\datadog

주의: Linux에서는 디버그 모드를 활성화하기 전에 먼저 로그 디렉터리를 생성해야 합니다.

  • dotnet-tracer-managed-{processName}-{timestamp}.log에는 구성 로그가 포함됩니다.

  • dotnet-tracer-native.log에는 생성되는 경우 진단 로그가 포함됩니다.

Profiler

참고 문서.NET profiling

공식 문서

.NET 매개변수 문서

.NET Tracer

.NET 로그

.NET Runtime Metrics

문서 평가

이 페이지가 도움이 되었나요?