Nodejs Datadog APM

00_8_3·2024년 1월 10일
0

데이타독을 사용한 로깅

윈도우 기준

datadog agent 설치

Docker 컨테이너 사용

https://docs.datadoghq.com/ko/containers/docker/?tab=standard

configuration

윈스턴+모건 -> datadog

  • .env
DD_ENV="prod"
DD_LOGS_INJECTION=true
DD_TRACE_SAMPLE_RATE="1"
DD_PROFILING_ENABLED=true
DD_APPSEC_ENABLED=true
DD_IAST_ENABLED=true

DATADOG_API_KEY_DEV=<api key>
  • datadog.yaml
    C:ProgramData/Datadog/datadog.yaml

logs_enabled: true

  • conf.yaml
logs:
  - type: file
    path: <nodejs log 파일>
    service: myapplication
    source: nodejs
    sourcecategory: sourcecode

설정이 완료되었다면

파워쉘에서 데이타독 서비스를 재실행해주면 된다.

net stop datadogagent
net start datadogagent

대시보드

위의 conf.yml가 제대로 되었다면.
대시보드의 Logs에서 로그 활성화가 가능해진다.

express 간단한 엔드포인트로 확인해보자.

const express = require("express");
const morgan = require("morgan");
const winston = require("winston");
const tracer = require("dd-trace").init({
  logInjection: true,
});
const fs = require("fs");
const path = require("path");
const dotenv = require("dotenv");

// 로그 파일 설정
const logDirectory = path.join(__dirname, "log");
console.log("logDirectory :", logDirectory);
fs.existsSync(logDirectory) || fs.mkdirSync(logDirectory);

const logger = winston.createLogger({
  level: "info",
  format: winston.format.json(),
  transports: [
    new winston.transports.File({
      filename: path.join(logDirectory, "app.log"),
    }),
  ],
});

const main = () => {
  dotenv.config();
  const app = express();

  // Morgan을 사용하여 HTTP 요청 로그를 winston에 연결
  app.use(
    morgan("combined", { stream: { write: (message) => logger.info(message) } })
  );

  app.get("/test", (req, res) => {
    res.json({
      msg: "test",
    });
  });

  app.get("/test2", (req, res) => {
    throw new Error("ㅅㄷㄴㅅ");
    res.json({
      msg: "test",
    });
  });

  app.listen(3000, () => {
    console.log("서버 열림");
  });
};

if (require.main === module) {
  main();
}

생성해둔 대시보드-로그 스트림에서 확인이 가능하다.

마무리

expressjs를 사용한 간단한 node api logging을 해보았습니다.

nestjs ddtrace 라이브러리를 사용하면 nestjs에서도 사용이 가능합니다.

참고

0개의 댓글

관련 채용 정보