Node.js 응용 프로그램 모니터링
APM for Node.js를 사용하여 성능 데이터를 모니터링할 수 있습니다.
apmdevops104kr
APM for Node.js를 사용하여 성능 데이터를 모니터링할 수 있습니다.
응용 프로그램 소유자 권한으로 다음의 대략적인 단계를 따르십시오.
- 성능을 모니터링하기 위한 일반적인 APM 절차를 사용합니다.
- APM for Node.js에 대한 다음의 추가 정보를 읽고 사용합니다.
Node.js 응용 프로그램 메트릭 보기
Node.js 응용 프로그램에 대한 메트릭을 볼 수 있습니다. "메트릭 브라우저" 탭에서는 Node.js 프로브 에이전트가 보고하는 Blame 메트릭을 찾아볼 수 있습니다. 예를 들어 Express 및 LoopBack 같은 프런트엔드 프레임워크와 MongoDB, MySQL 및 Redis 같은 백엔드 프레임워크에 대한 메트릭을 볼 수 있습니다.
다음 단계를 따르십시오.
- Team Center의 세부 정보 패널에서 개별 메트릭 등의 관심 있는 항목을 클릭합니다.WebView가 열리고 모니터링되는 Node.js 프로세스에 대한 메트릭이 표시됩니다.예:nodejs-probes | <Agent> | Frontends | Apps | <Probe_Name> |에이전트는 다음의 각 항목에 대한 여러 수준의 프런트엔드 메트릭을 보여 줍니다.1 - 응용 프로그램2 - 응용 프로그램의 URL3 - URL이 요청한 백엔드 시스템
- Blame 메트릭을 조사합니다.
- nodejs-probes | <Agent>노드로 이동합니다.프런트엔드 또는 백엔드 프레임워크에 대해 명명된 노드(예: Express)가 다음 수준으로 표시됩니다.
노드 응용 프로그램의 경로는 URI와 HTTP 요청 메서드(GET, POST 등)의 조합입니다. - 노드로 이동하여 Blame 메트릭을 조사합니다.
- 메트릭을 클릭하고 성능 정보를 봅니다. 오른쪽 창에 있는 탭을 클릭하여 이벤트 및 기타 데이터를 분석합니다. 예를 들어, 응용 프로그램 오류를 감지하려면 "오류"를 클릭하십시오.
Node.js 런타임의 건전성 보기
Node.js 프로브 에이전트는 프로그램이 실행되고 있을 때 응용 프로그램을 동적으로 모니터링합니다. Node.js 런타임 메트릭은 Node.js 프로세스의 건전성을 모니터링하는 데 유용합니다.
다음 단계를 따르십시오.
- Team Center에서WebView를 클릭합니다.APM WebView가 나타납니다.
- INVESTIGATOR,메트릭 브라우저를 클릭합니다.
- 메트릭 브라우저 트리에서 "Node.js Runtime"(Node.js 런타임) 노드로 이동합니다.nodejs-probes | <Agent> | Node.js Runtime | Metrics런타임 건전성 메트릭은 다음과 같습니다.CPU System Percent(CPU 시스템 시간 백분율)프로세스를 위해 커널 내에서 소요된 CPU 시간입니다. 이 메트릭은 클록 시간의 백분율로 표현됩니다. 멀티 코어 시스템에서는 이 값이 100%를 초과할 수 있습니다. CPU 시간은 CPU가 프로세스를 위해 명령을 실행하는 동안 경과된 클록 시간입니다. 예를 들어 프로세스나 해당 커널 스레드가 실제로 실행 중일 때에 해당합니다.CPU User Percent(CPU 사용자 시간 백분율)사용자 CPU 시간입니다. CPU 시간은 사용자 공간 프로세스의 실행에 직접적으로 기인합니다. 이 시간은 클록 시간의 백분율로 표현됩니다. 멀티 코어 시스템에서는 100%를 초과할 수 있습니다.Event Loop Average Tick Time (ms)(이벤트 루프 평균 틱 시간(ms))마지막 간격에서 이벤트 루프 틱당 소요된 평균 시간(밀리초)입니다. 고성능 응용 프로그램의 경우 "Ticks Per Interval"(간격당 틱) 값은 트랜잭션 부하에 정비례합니다.이벤트 루프 메트릭은 동기 또는 비동기 트랜잭션에서 긴 평균 응답 시간이 발생하는지 여부를 확인하는 데 유용합니다. 예를 들어 여러 개의 트랜잭션에 대해 긴 평균 응답 시간을 보고한 프런트엔드의 속도가 느린 이유를 확인할 수 있습니다. 이 문제를 유발하는 구성 요소를 확인하려면 트랜잭션 추적을 캡처합니다. 속도 저하의 원인을 확인할 수도 있습니다. 예를 들어 비동기 함수 내에서 어떤 요소의 실행이 지연되어 발생한 것인지, 비동기 함수 대신 실수로 호출된 동기 버전의 함수를 차단함으로써 발생한 것인지 확인할 수 있습니다.트랜잭션 속도가 느린 간격에 대해 "Event Loop Average Tick Time"(이벤트 루프 평균 틱 시간)을 검사할 수 있습니다. 해당 시간 동안 메트릭 값이 급증했다면 성능 문제를 유발하는 동기 트랜잭션 차단 함수가 원인입니다. 즉, 해당 함수 호출이 일정 기간 동안 이벤트 루프를 차단하여 현재 트랜잭션과 동일한 기간 동안 트리거된 다른 트랜잭션에 영향을 준 것입니다.Event Loop Ticks Per Interval(간격당 이벤트 루프 틱)마지막 간격 동안의 총 이벤트 루프 틱 수입니다. 고성능 응용 프로그램의 경우 "Average Tick Time"(평균 틱 시간) 값은 트랜잭션 부하에 반비례합니다.GC Heap Used(사용된 GC 힙)주요 또는 보조 가비지 수집기 주기 후에 V8 힙에서 아직 사용 중인 부분을 바이트 단위로 표현한 것입니다. V8 힙은 JavaScript 개체 및 값(-2,147,483,648 ~ 2,147,483,647 범위의 정수 제외)을 저장합니다. 정확한 범위는 프로세서 아키텍처에 따라 달라집니다.HTTP Connection Count(HTTP 연결 수)마지막 간격 동안의 새 HTTP 연결 수입니다.HTTP Connections / sec(HTTP 연결/초)새 HTTP 연결의 초당 개수입니다.Heap Total(전체 힙)V8 힙의 총 크기를 바이트 단위로 표현한 것입니다.Used(사용됨)V8 힙의 현재 사용 중인 부분을 바이트 단위로 표현한 것입니다.CPU Total Percent(CPU 전체 백분율)사용자 시간과 시스템 시간의 합계를 클록 시간의 백분율로 표현한 것입니다. 멀티 코어 시스템에서는 이 값이 100%를 초과할 수 있습니다.
- 메트릭을 클릭하고 성능 정보를 봅니다. 오른쪽 창에 있는 탭을 클릭하여 이벤트 및 기타 데이터를 분석합니다. 예를 들어, 응용 프로그램 오류를 감지하려면 "오류"를 클릭하십시오.
Node.js 트랜잭션 추적 이해
Node.js 트랜잭션은 비동기 트랜잭션입니다. 비동기 작업은 다음과 같은 두 가지 방법으로 실행됩니다.
순차적으로
- 일련의 순서대로 발생하는 비동기 이벤트는 동일한 수준에 순차적 구성 요소로 표시되며 동일한 레인으로 식별됩니다. 부모-자식 관계에 있는 비동기 이벤트는 다음 수준에서 호출된 구성 요소로 표시됩니다. 특정 시간의 자식 이벤트 하나는 동일한 레인에서 계속됩니다.병렬로
- Node.js 프로브 에이전트가 두 개 이상의 병렬 비동기 작업을 감지한 경우 에이전트는 각 병렬 작업 시퀀스(트랜잭션 조각)에 대해 개별 레인을 생성합니다.다음의 서로 다른 이벤트가 비동기 작업을 추적하는 데 중요한 역할을 합니다.
- 작업 시작- 이 이벤트는 비동기 API 호출이 시작될 때 측정되며 트랜잭션 구성 요소 시작 시간을 표시합니다.
- 작업 완료- 이 이벤트는 작업 결과 콜백이 시작될 때 측정되며, 트랜잭션 구성 요소 종료 시간을 표시합니다. 또한 이 이벤트는 다음 비동기 작업 시작이 이전 작업과 함께 순서대로 발생하는지, 병렬로 발생하는지를 추적합니다.
다음 예에서는 순차적 추적을 보여 줍니다.
순서대로 발생하는 비동기 이벤트는 첫 번째 작업의 결과 콜백이며, 이 콜백이 다음 비동기 작업을 시작합니다. 이러한 이벤트는 동일한 수준에 순차적 구성 요소로 표시되며 동일한 레인으로 식별됩니다. 이 다이어그램에서는 순차적 추적을 보여 줍니다.

비동기 작업이 다른 작업을 호출해야 완료되는 경우 비동기 이벤트는 부모-자식 관계를 갖습니다. 비동기 이벤트는 다음 수준에서 호출된 구성 요소로 표시됩니다. 특정 시간에 이러한 자식 이벤트 중 하나가 발생하면 동일한 레인에서 추적이 계속됩니다.
Node.js 프로브가 두 개 이상의 병렬 비동기 작업이 실행되고 있음을 감지할 경우 프로브는 다음과 같이 각 병렬 작업 시퀀스에 대해 개별 레인을 생성합니다.
- 기본 트랜잭션에 대한 레인은 하나만 생성됩니다.
- 트랜잭션에 레인이 더 추가될 때마다 새 트랜잭션 조각이 생성됩니다. 트랜잭션 조각에는 해당 조각을 생성한 기본 트랜잭션 구성 요소로 조각을 식별하는 'Fragment'라는 이름의 첫 번째 특수 Blame 구성 요소가 있습니다. 트랜잭션 조각은 기본 트랜잭션과 동일한 상관 관계 ID를 갖습니다.
다음 예에서는 병렬 추적의 비동기 요청을 보여 줍니다. 개별 레인은 트랜잭션 조각을 나타냅니다.

다음 단계를 따르십시오.
- WebView에서 트랜잭션 추적 세션을 실행하여 트랜잭션 추적을 봅니다.트랜잭션 추적 세션이 시작되면 필터 기준과 일치하는 트랜잭션이 추적 뷰에 표시됩니다. 트랜잭션 구성 요소는 여러 개의 실행 레인으로 구성된 그래픽 스택에 표시됩니다. Node.js 프로브 에이전트가 비동기 작업 이벤트를 감지하면 이 스택의 각 트랜잭션에 대한 개별 레인에서 상태가 추적됩니다.
- 데이터 뷰어에서 그래픽 스택의 구성 요소를 맨 위부터 맨 아래로 검사하고 응용 프로그램 성능을 평가합니다.
- 구성 요소 세부 정보를 검사합니다. 예를 들어 Express 프레임워크에는 다음과 같은 세부 정보가 포함됩니다.유형: Express이름: POST경로:Express/rest/account/_session/logout/POST클래스: routeExpress 라우트: /rest/account/session/logoutHTTP 메서드: POST메서드: dispatch
APM for Node.js 오류 이해
APM for Node.js는 Node.js 프로브의 콜백 인수에 포함된 오류 개체를 캡처합니다. APM for Node.js는 예외는 캡처하지 않습니다. 스냅숏 오류의 경우, APM for Node.js 오류에는
Node.Error
형식의 명명 규칙이 사용됩니다. 오류 스냅숏의 다음 매개 변수는 Node.js와 관련이 있습니다.응용 프로그램 이름
응용 프로그램/프로브 에이전트의 이름입니다.
클래스
오류 스냅숏을 발생시킨 Node.js 모듈/함수 이름(PBD에 지정됨)입니다.
오류 메시지
오류의 원인에 대한 정보를 제공합니다.
예외
오류의 원인에 대한 정보를 제공합니다(이 매개 변수는 오류 메시지와 동일함).
리소스 이름
PBD에서 해당 클래스에 대한 추적 프로그램 지시문에 지정된 리소스 이름입니다.
서버 이름
Node.js 응용 프로그램이 실행되고 있는 호스트의 이름입니다.서버 포트
Node.js 응용 프로그램이 실행되고 있는 포트입니다.
스레드 이름
Node.js 응용 프로그램 프로세스의 PID를 제공합니다.추적 유형
오류에 대한 값은 ErrorSnapshot이고, 지체에 대한 값은 StallSnapshot입니다.URL
오류를 발생시킨 URL입니다.참고:
오류는 MySQL 및 HTTP 프로브의 경우에만 지원됩니다. 다음 예에서처럼 이 오류는 스택 뷰에 나타납니다.
오류 메시지: Frontends|Aps\nodetixchange-3000|URLs|Default: Node.Error: Http 403: Forbidden
