> 웹 프론트엔드 > JS 튜토리얼 > Node.js의 로깅 및 모니터링: 모범 사례

Node.js의 로깅 및 모니터링: 모범 사례

Mary-Kate Olsen
풀어 주다: 2024-11-07 00:56:02
원래의
1102명이 탐색했습니다.

Logging and Monitoring in Node.js: Best Practices

애플리케이션 상태를 유지하고 문제를 빠르게 식별하며 성능을 개선하려면 효과적인 로깅 및 모니터링이 필수적입니다. 이 기사에서는 로깅 수준 선택, 구조화된 로그 설정, 모니터링 도구와의 통합, Winston 및 Elasticsearch 사용 모범 사례와 같은 주요 주제를 다루면서 Node.js 애플리케이션의 로깅 및 모니터링에 대해 자세히 알아봅니다.

로깅 및 모니터링 소개

로깅은 애플리케이션에서 실시간 이벤트, 오류 및 기타 중요한 정보를 캡처하는 데 도움이 되며, 모니터링에는 시간 경과에 따른 애플리케이션 성능 지표 추적이 포함됩니다. 이를 통해 애플리케이션 상태에 대한 중요한 통찰력을 제공하여 사전에 문제를 해결할 수 있습니다.

Node.js에서 기본 로깅 설정

내장된 콘솔 개체는 간단한 로깅 기능을 제공하지만 프로덕션 애플리케이션에는 전용 로깅 라이브러리가 더 강력합니다.

기본 콘솔 로깅

console.log("Server started on port 3000");
console.warn("This is a warning");
console.error("Error occurred while processing request");
로그인 후 복사
로그인 후 복사

그러나 콘솔 로깅은 로그 수준 제어가 부족하고 로그 지속성이 없는 등 복잡한 애플리케이션에는 제한이 있습니다.

윈스턴을 소개합니다

Winston은 여러 로그 수준, 전송(로그 대상) 및 구조적 로깅을 제공하는 인기 있는 Node.js용 로깅 라이브러리입니다.

  1. 윈스턴 설치:
   npm install winston
로그인 후 복사
로그인 후 복사
  1. 윈스턴 설정
   const winston = require("winston");

   // Configure logger
   const logger = winston.createLogger({
       level: "info",
       format: winston.format.combine(
           winston.format.timestamp(),
           winston.format.json()
       ),
       transports: [
           new winston.transports.Console(),
           new winston.transports.File({ filename: "app.log" })
       ]
   });

   // Logging examples
   logger.info("Server started on port 3000");
   logger.error("Database connection failed");
로그인 후 복사
로그인 후 복사

적절한 로그 수준 선택

로그 수준은 중요도에 따라 로그 메시지를 분류합니다. 일반적인 로그 수준은 다음과 같습니다.

  • 오류: 데이터베이스 또는 서버 오류와 같이 즉각적인 주의가 필요한 심각한 문제입니다.
  • 경고: 더 이상 사용되지 않는 API와 같은 중요하지 않은 문제
  • 정보: 서버 시작 또는 종료와 같은 일반적인 애플리케이션 정보
  • 디버그: 변수 값 등 개발 중에 유용한 자세한 정보입니다.

Winston에서 로그 수준 구성

logger.level = "debug"; // Sets the minimum log level to debug, capturing all messages.
로그인 후 복사
로그인 후 복사

프로덕션에서는 불필요한 로그 데이터를 방지하기 위해 로그 수준을 정보 또는 경고로 유지하는 것이 가장 좋습니다.

일관성을 위한 구조화된 로깅

구조화된 로깅을 사용하면 일관된 형식을 유지하여 로그를 더 쉽게 필터링하고 분석할 수 있습니다.

로그에 메타데이터 추가

user_id 또는 request_id와 같은 메타데이터는 로그 내의 특정 작업을 추적하는 데 도움이 될 수 있습니다.

logger.info("User login successful", { user_id: "12345" });
logger.error("Failed to fetch user data", { user_id: "12345", error: "Database unavailable" });
로그인 후 복사
로그인 후 복사

중앙 집중식 로깅을 위해 Elasticsearch와 통합

Elasticsearch는 중앙 집중식 로그 관리 및 검색 기능에 널리 사용됩니다.

  1. Elasticsearch 및 Elasticsearch Transport 설치
console.log("Server started on port 3000");
console.warn("This is a warning");
console.error("Error occurred while processing request");
로그인 후 복사
로그인 후 복사
  1. Elasticsearch 전송 구성
   npm install winston
로그인 후 복사
로그인 후 복사

이 설정은 Elasticsearch로 로그를 전송하므로 Kibana를 사용하여 실시간 로그 검색 및 분석을 할 수 있습니다.

Prometheus 및 Grafana를 사용하여 애플리케이션 측정항목 모니터링

모니터링은 CPU 사용량, 메모리, 응답 시간과 같은 애플리케이션 성능 지표를 추적하여 안정적인 애플리케이션을 보장하는 데 도움이 됩니다.

Node.js로 Prometheus 설정

  1. Prometheus 클라이언트 라이브러리 설치
   const winston = require("winston");

   // Configure logger
   const logger = winston.createLogger({
       level: "info",
       format: winston.format.combine(
           winston.format.timestamp(),
           winston.format.json()
       ),
       transports: [
           new winston.transports.Console(),
           new winston.transports.File({ filename: "app.log" })
       ]
   });

   // Logging examples
   logger.info("Server started on port 3000");
   logger.error("Database connection failed");
로그인 후 복사
로그인 후 복사
  1. 측정항목 생성 및 내보내기
logger.level = "debug"; // Sets the minimum log level to debug, capturing all messages.
로그인 후 복사
로그인 후 복사
  1. 메트릭 엔드포인트 노출
logger.info("User login successful", { user_id: "12345" });
logger.error("Failed to fetch user data", { user_id: "12345", error: "Database unavailable" });
로그인 후 복사
로그인 후 복사

Grafana를 사용한 시각화

Grafana는 Prometheus 지표에서 대시보드를 생성하기 위한 강력한 도구입니다. Prometheus를 Grafana의 데이터 소스로 통합한 다음 응답 시간, 오류율 등의 측정항목을 시각화하세요.

실제 사용 사례: 전자상거래의 로깅 및 모니터링

고성능과 안정성을 유지하는 데 로깅과 모니터링이 중요한 전자상거래 플랫폼을 생각해 보세요.

  1. 모든 거래 기록: order_id 및 user_id와 같은 메타데이터를 포함한 구조화된 로그로 주문 및 결제 이벤트를 캡처합니다.
  2. 오류 추적: 빠른 디버깅을 위해 Winston을 사용하여 스택 추적 및 메타데이터와 함께 결제 실패 등의 오류를 기록합니다.
  3. 서버 상태 모니터링: 실시간 통찰력을 위해 Grafana에 시각화된 응답 시간 및 요청 수를 모니터링하도록 Prometheus를 설정하세요.
  4. 알림 설정: 측정항목을 기반으로 알림을 구성합니다. 예를 들어 요청 기간이 임계값을 초과하면 관리자에게 알림을 보냅니다.

이 설정은 애플리케이션 상태에 대한 포괄적인 보기를 제공하므로 사전에 문제를 감지하고 해결할 수 있습니다.

결론

신뢰성을 유지하고 빠른 문제 해결을 보장하려면 Node.js에서 강력한 로깅 및 모니터링을 구현하는 것이 필수적입니다. Winston, Elasticsearch, Prometheus 및 Grafana와 같은 도구를 사용하면 구조화된 로그를 캡처하고 중앙 집중화하며 중요한 성능 지표를 효과적으로 모니터링할 수 있습니다.

위 내용은 Node.js의 로깅 및 모니터링: 모범 사례의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿