- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
로그를 Datadog으로 전송하려면 로그를 파일로 출력한 후 해당 파일을 Datadog 에이전트로 테일링합니다. Winston 로깅 라이브러리로 Node.js 애플리케이션에서 로그를 수집합니다.
Winston은 NPM으로 사용할 수 있으며, 시작하려면 코드에 종속성을 추가해야 합니다.
npm install --save winston
package.json
이 해당 종속성으로 업데이트됩니다.
{
"name": "...",
//...
"dependencies": {
//...
"winston": "x.y.z",
//...
}
}
부트스트랩 파일이나 코드에서 다음과 같이 로거를 선언합니다.
const { createLogger, format, transports } = require('winston');
const logger = createLogger({
level: 'info',
exitOnError: false,
format: format.json(),
transports: [
new transports.File({ filename: `${appRoot}/logs/<FILE_NAME>.log` }),
],
});
module.exports = logger;
// 예시 로그
logger.log('info', 'Hello simple log!');
logger.info('Hello log with metas',{color: 'blue' });
var winston = require('winston');
var logger = new (winston.Logger)({
transports: [
new (winston.transports.File)({
name: '<LOGGER_NAME>',
filename: '<FILE_NAME>.log',
json: true,
level: 'info'
})
]
});
// 예시 로그
logger.log('info', 'Hello simple log!');
logger.info('Hello log with metas',{color: 'blue' });
<FILE_NAME>.log
파일의 내용을 확인하여 Winston이 다음과 같이 JSON으로 로깅 중인지 확인합니다.
{"level":"info","message":"Hello simple log!","timestamp":"2015-04-23T16:52:05.337Z"}
{"color":"blue","level":"info","message":"Hello log with metas","timestamp":"2015-04-23T16:52:05.339Z"}
로그 수집이 활성화되면 사용자 지정 로그 수집을 설정해 로그 파일을 테일링하고 새 로그를 Datadog에 전송합니다.
conf.d/
에이전트 설정 디렉토리에 nodejs.d/
폴더를 생성합니다.nodejs.d/
에 conf.yaml
파일을 생성합니다.init_config:
instances:
##로그 섹션
logs:
- type: file
path: "<FILE_NAME_PATH>.log"
service: <SERVICE_NAME>
source: nodejs
sourcecategory: sourcecode
Checks
섹션에서 nodejs
를 찾아 로그가 Datadog에 제출되었는지 확인하세요.로그가 JSON 형식이면 Datadog은 자동으로 로그 메시지를 파싱하여 로그 속성을 추출합니다. 로그 탐색기로 로그를 확인하고 문제를 해결하세요.
본 애플리케이션에 애플리케이션 성능 모니터링(APM)이 활성화된 경우 APM Node.js 지침에 따라 트레이스 ID, 스팬(span) ID, env
, service
, version
을 자동으로 로그에 추가해 로그와 트레이스를 연결하세요.
참고: 애플리케이션 성능 모니터링(APM) 트레이서가 로그에 service
를 삽입하면 에이전트 설정의 값 집합이 재정의됩니다.
호스트에 에이전트를 설치하지 않고도 애플리케이션에서 Datadog으로 로그를 스트리밍할 수 있습니다. 그러나 기본 연결 관리 기능을 제공하는 에이전트를 사용하여 로그를 전달할 것을 권장합니다.
Winston HTTP 전송을 사용하여 Datadog 로그 API를 통해 로그를 직접 전송합니다. 부트스트랩 파일 또는 코드에서 다음과 같이 로거를 선언합니다.
const { createLogger, format, transports } = require('winston');
const httpTransportOptions = {
host: 'http-intake.logs.',
path: '/api/v2/logs?dd-api-key=<DATADOG_API_KEY>&ddsource=nodejs&service=<APPLICATION_NAME>',
ssl: true
};
const logger = createLogger({
level: 'info',
exitOnError: false,
format: format.json(),
transports: [
new transports.Http(httpTransportOptions),
],
});
module.exports = logger;
// 로그 예시
logger.log('info', 'Hello simple log!');
logger.info('Hello log with metas',{color: 'blue' });
참고: 커뮤니티 지원 Datadog 전송 기능을 사용할 수도 있습니다.
애플리케이션에서 DNS 조회 오류가 발생하는 경우 로그스태시(Logstash) 예외가 탐지되지 않았기 때문일 수도 있습니다. 다음과 같이 핸들러를 추가합니다.
var logstash = new winston.transports.Logstash({ ... });
logstash.on('error', function(err) {
console.error(err); // 여기를 커스텀 기능으로 교체
});
파라미터 max_connect_retries
가 1
로 설정되어 있지 않은지 확인합니다(기본값: 4
).
추가 유용한 문서, 링크 및 기사: