문제
Linux에 New Relic의 .NET 에이전트를 설치한 후 데이터가 표시되지 않거나 누락된 데이터가 표시되거나 로그가 표시되지 않습니다.
해결책
중요
- 계속하려면 호스트에 대한 관리자 권한이 있는지 확인하세요.
- 설치 및 실행 단계를 따랐는지 확인합니다( 설치 가이드 ).
1단계: 애플리케이션의 에이전트 로그 확인
팁
- .NET Core용 에이전트를 설치했거나
NewRelic.Agent
NuGet 패키지와 함께 에이전트를 설치한 경우 시스템에서 에이전트가 추출된 디렉터리에서logs
폴더를 찾을 수 있습니다. - Linux의 일부 설치 방법에서 기본값은
/usr/local/newrelic-dotnet-agent
(에이전트 버전 10.0.0 이상) 또는/usr/local/newrelic-netcore20-agent
(에이전트 버전 9.9.0 이하)입니다.
- 현재 데이터를 보고 있는지 확인하십시오. 생성한 로그가 시스템의 현재 상태를 반영하도록 로그 디렉토리의 기존 파일을 삭제하거나 이동합니다.
- 응용 프로그램을 다시 시작하십시오.
- New Relic 계정에서 볼 것으로 예상되는 트래픽을 생성하는 방식으로 최소 1분 동안 애플리케이션을 실행하십시오.
- 해당 프로세스에 대한 로그가 생성되고 있는지 확인할 수 있도록 애플리케이션이 실행 중인 프로세스 ID(PID)를 기록해 둡니다. 명령줄을 통해 다음 명령 중 하나를 사용하여 PID를 찾을 수 있습니다.
pidof dotnet
또는pidof the_process_name
. - 에이전트 로그 디렉토리로 돌아가서 애플리케이션의 프로세스 ID를 포함하는 이름의 로그 파일을 찾으십시오(예:
NewRelic.Profiler.[PID].log
. - 로그 디렉토리에 해당
profiler log
파일이 있으면 해당 에이전트 로그가 있는지도 확인하십시오. - 접두어가
newrelic_agent
인 다른 파일을 찾습니다. 호스트에서 여러 .NET 응용 프로그램을 실행하는 경우 이 중 하나 이상이 있을 수 있습니다. 하나 이상이 표시되면 모니터링하려는 응용 프로그램에 해당하는 항목을 결정해야 합니다. - 에이전트 로그에서 문자열
(pid [your PID])
을 검색합니다(예:(pid 1573)
. 로그 파일에서 해당 문자열을 찾으면 애플리케이션과 연결된 에이전트 로그임을 알 수 있습니다.
2단계: 에이전트 프로파일러가 애플리케이션 프로세스에 로드되었는지 확인
콘솔에서 다음을 실행하고 pid
을 프로세스 ID로 바꿉니다.
bash
$sudo cat /proc/PID/maps | grep "libNewRelicProfiler.so"
출력에 따라 수행해야 할 작업은 다음과 같습니다.
- 해당 명령에서 결과를 얻지 못한 경우 다음 단계를 계속합니다.
- 결과가 나오면 4단계 (권한)로 건너뜁니다.
3단계: 필수 환경 변수를 확인합니다.
다음을 실행하고 PID
을 프로세스 ID로 바꿉니다.
bash
$xargs --null --max-args=1 < /proc/PID/environ | grep "CORECLR_"
출력에 따라 수행해야 할 작업은 다음과 같습니다.
결과가 없으면 환경 변수 를 설정하고 애플리케이션을 다시 시작한 다음 1단계로 돌아갑니다.
결과를 얻으면 4개의 필수 변수가 모두 설정되어 있고 유효한 값이 있는지 확인하십시오.
CORECLR_ENABLE_PROFILING
: 항상 1로 설정해야 합니다.CORECLR_PROFILER
: 항상{36032161-FFC0-4B61-B559-F6C5D41BAE5A}
로 설정해야 합니다.CORECLR_NEWRELIC_HOME
: .NET Core용 에이전트 디렉터리(newrelic.config
,libNewRelicProfiler.so
및 확장 디렉터리가 있는 디렉터리)의 정규화된 경로로 설정해야 합니다.CORECLR_PROFILER_PATH
:libNewRelicProfiler.so
파일에 대한 정규화된 경로로 설정해야 합니다. 이것은 거의 항상CORECLR_NEWRELIC_HOME
+/libNewRelicProfiler.so
와 같습니다.
환경 변수를 변경한 경우 앱을 다시 시작하고 1단계 로 돌아갑니다.
이러한 변수에 대한 자세한 내용은 .NET 에이전트 환경 변수 이해를참조하십시오.
4단계: 권한 확인
다음 권한 작업을 확인하십시오.
- 애플리케이션 프로세스가 실행 중인 사용자에게 시스템(
CORECLR_NEWRELIC_HOME
) 및 모든 하위 디렉터리에서 .NET Core용 .NET 에이전트가 추출된 디렉터리에 대한 읽기/쓰기/실행 권한이 있는지 확인하십시오. - 변경한 경우 앱을 다시 시작하고 1단계 로 돌아갑니다.
위의 단계로 문제가 해결되지 않으면 지원 포럼 에서 도움을 요청하여 지원팀에 문의하는 것이 좋습니다.