New Relic For .Net¶
New Relic의 .Net Agent는 .Net 기술 프레임워크를 기반으로 한 오픈소스 프로젝트로, .NET 기술 프레임워크로 개발된 App의 성능을 종합적으로 관측하는 데 사용할 수 있습니다. 또한 C#, VB.NET, CLI와 같이 .NET 기술 프레임워크와 호환되는 모든 언어에도 사용할 수 있습니다.
사전 준비¶
- 도메인 준비 및 인증서 생성과 설치
- New Relic 계정 등록
- New Relic Agent 설치, 현재 지원 버전은 6.27.0
- .Net Framework 설치, 현재 지원 버전은 3.0
New Relic .NET Agent 설치 및 설정¶
먼저 현재 Windows OS에 설치된 DotNet Framework 버전을 확인합니다.
cmd를 실행한 뒤 reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP"를 입력하여 현재 OS에 설치된 모든 버전을 확인합니다.
그다음 New Relic Agent를 설치합니다.
- 개인
New Relic계정에 로그인하여 설치할 수 있습니다.
계정에 들어간 뒤 왼쪽 탐색 영역 아래의 데이터 추가 + Add Data 하위 메뉴를 클릭하고, 오른쪽 Data source 하위 메뉴의 Application monitoring에서 .Net을 선택한 다음 설치 안내에 따라 설치합니다.
- 설치 프로그램으로도 설치할 수 있습니다.
다운로드 디렉터리에서 dotnet agent 버전 6.27.0에 맞는 설치 프로그램을 다운로드하여 선택합니다.
New Relic Agent 설정
- 필요한 환경 변수를 설정합니다.
바탕화면 왼쪽 아래의 Windows 로고를 마우스 오른쪽 버튼으로 클릭하여 시스템을 선택한 뒤, 고급 시스템 설정을 선택하고, 환경 변수를 선택한 다음, 시스템 변수 목록에 아래 환경 변수 구성이 포함되어 있는지 확인합니다.
- `COR_ENABLE_PROFILING`: 숫자값 1, 기본 활성화
- `COR_PROFILER`: 문자열값, 기본적으로 시스템이 자동 입력하는 `ID`
- `CORECLR_ENABLE_PROFILING`: 숫자값 1, 기본 활성화
- `NEW_RELIC_APP_NAME`: 문자열값, 관측할 `APP` 이름을 입력합니다. (선택 사항)
- `NEWRELIC_INSTALL_PATH`: `New Relic Agent` 설치 경로
- 구성 파일로
New Relic을 설정합니다.
New Relic Agent 설치 디렉터리 아래의 newrelic.config를 열고, 아래 예시의 {예시값}을 실제 값으로 바꾸고, 나머지 값은 예시를 참고하여 입력합니다.
<?xml version="1.0"?>
<!-- Copyright (c) 2008-2017 New Relic, Inc. All rights reserved. -->
<!-- 자세한 내용은 다음을 참고하세요: https://newrelic.com/docs/dotnet/dotnet-agent-configuration -->
<configuration xmlns="urn:newrelic-config" agentEnabled="true" agentRunID="{agent id (직접 지정해도 되고 비워도 됨)}">
<service licenseKey="{실제 license key}" ssl="true" host="{www.your-domain-name.com}" port="{Datakit 포트 번호}" />
<application>
<name>{모니터링할 APP 이름}</name>
</application>
<log level="debug" />
<transactionTracer enabled="true" transactionThreshold="apdex_f" stackTraceThreshold="500" recordSql="obfuscated" explainEnabled="false" explainThreshold="500" />
<crossApplicationTracer enabled="true" />
<errorCollector enabled="true">
<ignoreErrors>
<exception>System.IO.FileNotFoundException</exception>
<exception>System.Threading.ThreadAbortException</exception>
</ignoreErrors>
<ignoreStatusCodes>
<code>401</code>
<code>404</code>
</ignoreStatusCodes>
</errorCollector>
<browserMonitoring autoInstrument="true" />
<threadProfiling>
<ignoreMethod>System.Threading.WaitHandle:InternalWaitOne</ignoreMethod>
<ignoreMethod>System.Threading.WaitHandle:WaitAny</ignoreMethod>
</threadProfiling>
</configuration>
발생할 수 있는 문제:
New Relic license key는 어디에 있나요
New Relic 공식 사이트의 안내에 따라 설치한 경우 license key는 자동으로 입력됩니다. 직접 수동으로 설치하는 경우 설치 프로그램 실행 과정에서 license key 입력을 요청하며, license key는 계정 생성 또는 데이터 생성 시 표시되므로 저장해 두는 것이 좋습니다.
- TLS 버전 호환성 문제
New Relic Agent 배포 과정에서 데이터가 전송되지 않고 New Relic 로그에 아래와 유사한 ERROR 정보가 보이면 문제가 있는 것입니다.
NewRelic ERROR: Unable to connect to the New Relic service at collector.newrelic.com:443 : System.Net.WebException:
The request was aborted: Could not create SSL/TLS secure channel.
NewRelic ERROR: Unable to connect to the New Relic service at collector.newrelic.com:443 : System.Net.WebException:
The underlying connection was closed: An unexpected error occurred on a send. ---> System.IO.IOException:
Received an unexpected EOF or 0 bytes from the transport stream.
NewRelic ERROR: Unable to connect to the New Relic service at collector.newrelic.com:443 : System.Net.WebException:
The underlying connection was closed: An unexpected error occurred on a receive. ---> System.ComponentModel.Win32Exception:
The client and server cannot communicate, because they do not possess a common algorithm.
문제 해결을 위해 문서No data appears after disabling TLS 1.0를 참고하세요.
호스트 설정¶
New Relic Agent는 데이터 전송을 위해 HTTPS 설정이 필요하므로, 호스트를 구성하기 전에 먼저인증서 신청을 완료해야 합니다. New Relic Agent 시작 과정에서 인증서의 유효성을 검사해야 하므로, 여기서는 CA 자체 서명과 자체 서명 CA의 인증서 발급이 필요합니다. 인증서 체인 발급을 완료한 뒤, Guance으로 NewRelic .NET 프록시 연결와 Windows 서버에 루트 인증서와 중간 인증서를 가져오는 방법를 참고하여 인증서를 배포합니다.
인증서 배포 후에는 hosts 파일을 적절히 설정하여 로컬에서 도메인을 해석할 수 있어야 합니다. hosts 설정은 다음과 같습니다.
여기서 www.your-domain-name.com은 newrelic.config 설정 파일의 service.host 항목에 지정한 도메인입니다.
Datakit 설정¶
DataKit 설치 디렉터리 아래의 conf.d/ 디렉터리로 이동한 뒤, .conf.sample을 복사하여 .conf로 이름을 바꿉니다. 예시는 다음과 같습니다.
설정이 끝나면 Datakit과 IIS를 다시 시작합니다.