Node.js
ClickStack는 텔레메트리 데이터(로그, 메트릭, 트레이스, 예외)를 수집하는 데 OpenTelemetry 표준을 사용합니다. 트레이스는 자동 계측(automatic instrumentation)을 통해 자동으로 생성되므로, 트레이싱을 활용하기 위해 별도의 수동 계측이 필요하지 않습니다.
이 가이드에서는 다음을 통합합니다.
- 로그
- 메트릭
- 트레이스
- 예외
시작하기
HyperDX OpenTelemetry 계측 패키지 설치
다음 명령으로 ClickStack OpenTelemetry 패키지를 설치하십시오.
- NPM
- Yarn
SDK 초기화
SDK를 초기화하려면 애플리케이션의 엔트리 포인트 최상단에서 init 함수를 호출해야 합니다.
- require
- import
이렇게 하면 Node.js 애플리케이션에서 트레이스, 메트릭, 로그가 자동으로 수집됩니다.
로그 수집 설정
기본적으로 console.* 로그는 자동으로 수집됩니다. winston 또는 pino와 같은 로거를 사용하는 경우, 로그를 ClickStack으로 전송하기 위해 로거에 transport를 추가해야 합니다. 다른 유형의 로거를 사용하는 경우,
지원팀에 문의하거나, (예: Kubernetes)와 같은 관련 플랫폼 통합 기능을 확인하십시오.
- Winston
- Pino
- console.log
로거로 winston을 사용하는 경우, 아래 transport를 로거에 추가해야 합니다.
로거로 pino를 사용하는 경우, 아래 transport를 로거에 추가하고, 로그를 트레이스와 연관시키기 위해 mixin을 지정해야 합니다.
기본적으로 console.* 메서드는 별도 설정 없이 바로 지원됩니다. 추가적인 구성은 필요하지 않습니다.
이 기능을 비활성화하려면 HDX_NODE_CONSOLE_CAPTURE 환경 변수를 0으로 설정하거나, init 함수에 consoleCapture: false를 전달하면 됩니다.
오류 수집 설정
ClickStack SDK는 애플리케이션에서 처리되지 않은 예외와 오류를 전체 스택 트레이스와 코드 컨텍스트 정보와 함께 자동으로 캡처합니다.
이를 활성화하려면 애플리케이션의 오류 처리 미들웨어 마지막에 다음 코드를 추가하거나, recordException 함수를 사용하여 예외를 수동으로 캡처하면 됩니다.
- Express
- Koa
- Manual
문제 해결
SDK 사용 중 문제가 발생하면 OTEL_LOG_LEVEL 환경 변수를 debug로 설정하여 상세 로그 출력을 활성화할 수 있습니다.
고급 계측 설정
콘솔 로그 캡처
기본 설정으로 ClickStack SDK는 콘솔 로그를 캡처합니다. 이를 비활성화하려면
HDX_NODE_CONSOLE_CAPTURE 환경 변수를 0으로 설정하십시오.
사용자 정보 또는 메타데이터 연결하기
특정 속성이나 식별자(예: user id 또는 email)와 관련된 모든 이벤트에 쉽게 태그를 추가하기 위해 setTraceAttributes 함수를 호출할 수 있습니다. 이 함수를 호출하면, 이후 현재 trace와 연결된 모든 log/span에 지정한 attributes가 태그로 추가됩니다. 이 함수는 특정 요청/trace 안에서 가능한 한 이른 시점(예: Express middleware stack에서 가능한 한 앞단)에서 호출하는 것이 좋습니다.
이 방법을 사용하면, 식별자를 직접 태그하고 전파할 필요 없이 나중에 검색에 사용할 적절한 식별자로 모든 log/span이 자동으로 태그되도록 보장할 수 있습니다.
userId, userEmail, userName, teamName 값은 세션 UI에 해당 값으로 표시되지만, 반드시 포함할 필요는 없습니다. 그 외 다른 추가 값도 지정할 수 있으며, 이벤트를 검색하는 데 사용할 수 있습니다.
HDX_NODE_BETA_MODE 환경 변수를 1로 설정하거나 init 함수에 betaMode: true를 전달하여 베타 모드를 활성화해 trace 속성을 사용할 수 있도록 합니다.
Google Cloud Run
애플리케이션을 Google Cloud Run에서 실행하는 경우 Cloud Trace는 각 인스턴스당 초당 0.1개의 요청만 샘플링되도록 추적을 제한하면서 들어오는 요청에 샘플링 헤더를 자동으로 주입합니다.
@hyperdx/node-opentelemetry 패키지는 기본적으로 샘플링 비율을 1.0으로
덮어씁니다.
이 동작을 변경하거나 다른 OpenTelemetry 설치를 구성하려면
OTEL_TRACES_SAMPLER=parentbased_always_on 및 OTEL_TRACES_SAMPLER_ARG=1
환경 변수를 수동으로 설정하여 동일한 결과를 얻을 수 있습니다.
자세한 내용과 특정 요청에 대해 강제로 트레이싱을 수행하는 방법은 Google Cloud Run 문서를 참조하십시오.
자동 계측 라이브러리
다음 라이브러리는 SDK에서 자동으로 계측(트레이싱)합니다.
dnsexpressgraphqlhapihttpioredisknexkoamongodbmongoosemysqlmysql2netpgpinorediswinston
대체 설치 방법
ClickStack OpenTelemetry CLI로 애플리케이션 실행하기
또는 opentelemetry-instrument CLI를 사용하거나 Node.js --require 플래그를 사용하여 코드 변경 없이 애플리케이션을 자동 계측할 수 있습니다. CLI를 사용하면 더 다양한 자동 계측 라이브러리와 프레임워크를 활용할 수 있습니다.
- NPX 사용
- 사용자 정의 엔트리 포인트(예: Nodemon, ts-node 등)
- 코드 임포트
Managed ClickStack에서는 HYPERDX_API_KEY를 생략할 수 있습니다.
Managed ClickStack에서는 HYPERDX_API_KEY를 생략할 수 있습니다.
OTEL_SERVICE_NAME 환경 변수는 HyperDX 앱에서 서비스를 식별하는 데 사용되며, 원하는 이름을 자유롭게 사용할 수 있습니다.
예외 캡처 활성화
처리되지 않은 예외를 캡처하도록 설정하려면 HDX_NODE_EXPERIMENTAL_EXCEPTION_CAPTURE 환경 변수 값을 1로 설정합니다.
그 후에는 Express, Koa에서 예외를 자동으로 수집하거나 예외를 수동으로 처리하려면 위의 오류 수집 설정 섹션의 지침을 따르십시오.
자동 계측 라이브러리
다음 라이브러리는 위의 방법으로 설치하면 자동으로 계측(트레이스 수집)이 수행됩니다.