오케스트레이션되지 않은 환경에서 Winston을 사용하는 Node.js 애플리케이션에 대한 사용자 지정 다중 줄 구문 분석을 지원하도록 1.6.x 로깅 에이전트 사용자 지정하기
이 자습서에서는 사용자 정의 Winston 로깅 라이브러리를 사용하여 Node.js 애플리케이션에 대한 IBM® Cloud Logs 로깅 에이전트 멀티라인 로그 처리를 구성하는 방법을 보여 줍니다. 이 구성은 오케스트레이션되지 않은 환경(예: Linux 및 Windows)을 위한 구성으로, 구성 파일을 수정합니다. 이 구성은 스택 추적 및 여러 줄 로그가 IBM Cloud Logs 에서 올바르게 그룹화되도록 합니다.
이 튜토리얼을 사용하려면 IBM Cloud Logs 로깅 에이전트 1.6.2 이상이 필요합니다.
시작하기 전에
이 튜토리얼을 사용하기 전에 다음 정보를 검토하여 로깅 에이전트 및 여러 줄 개념을 이해하세요.
-
오케스트레이션되지 않은 환경에서의 멀티라인 지원에 대해 알아보세요.
이 튜토리얼에서는 이미 가지고 있다고 가정합니다:
이 튜토리얼의 구성 파일은 로깅 에이전트 을 설치할 때 패키지 파일을 다운로드한 위치에서 찾을 수 있습니다.
Winston 구성 샘플
Node.js 애플리케이션이 Winston을 사용하며 콘솔에 다음 형식으로 로그한다고 가정해 보겠습니다:
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.combine(
winston.format.timestamp({
format: 'ddd MMM DD YYYY HH:mm:ss.SSS'
}),
winston.format.errors({ stack: true }),
winston.format.printf(({ timestamp, level, message, stack }) => {
const levelUpper = level.toUpperCase();
const baseLog = `[${timestamp}] ${levelUpper} [Main] - ${message}`;
if (stack) {
return `${baseLog}\n${stack}`;
}
return baseLog;
})
),
transports: [
new winston.transports.Console()
]
});
이 형식은 타임스탬프와 레벨로 시작하는 로그 항목을 생성하며, 오류 스택 추적과 같은 여러 줄의 로그는 타임스탬프 없이 후속 줄에 이어집니다.
Winston은 일반적으로 오류 스택 추적을 포함한 모든 출력을 단일 문자열로 기록하므로 여러 줄 구문 분석기가 필요하지 않은 경우가 많습니다. 그러나 이 예는 포맷터가 여러 줄 로그를 인쇄하는 경우 수행해야 할 작업을 보여 주며, 사용자 지정 형식에 대한 여러 줄 구문 분석에 접근하는 방법을 설명하는 데 도움이 됩니다.
이 구성은 사용자 정의 로그 서식을 사용할 때 여러 줄 로그를 처리하는 방법을 보여주기 위한 예제로 제공됩니다. 애플리케이션에서 다른 구조 또는 로깅 라이브러리를 사용하는 경우, 이를 참조하여 그에 맞는 자체 멀티라인 구문 분석기를 만드세요.
구성 파일을 사용하여 수동으로 여러 줄 구문 분석 구성하기
로그를 적절하게 그룹화하려면 새 로그 항목의 시작 부분에서 타임스탬프를 인식하고 이후 줄을 이전 항목의 연속으로 처리하는 여러 줄 구문 분석기를 정의하세요.
여러 줄 구문 분석기 정의
parsers.conf 파일에 다음을 추가합니다:
[MULTILINE_PARSER]
Name multiline-nodejs-winston
Type regex
Flush_timeout 500
Rule "start_state" "/^\\[[A-Z][a-z]{2} [A-Z][a-z]{2} \\d{2} \\d{4} \\d{2}:\\d{2}:\\d{2}\\.\\d{3}\\] .*$/"
Rule "cont" "/^(?!\\[[A-Z][a-z]{2} [A-Z][a-z]{2} \\d{2} \\d{4} \\d{2}:\\d{2}:\\d{2}\\.\\d{3}\\] ).*$/"
이 구문 분석기는 로그가 [Wed Jul 24 2025 14:52:31.456] ... 와 같은 타임스탬프로 시작한다고 가정합니다. 스택 추적은 다음 줄에 들여쓰기가 되어 있고 타임스탬프 정규식과 일치하지 않으므로 이전 로그 줄과 함께 그룹화됩니다.
여러 줄 필터로 구문 분석기 적용하기
구문 분석기를 사용하려면 filters.conf 파일에 필터 블록을 추가하세요:
[FILTER]
Name multiline
Match kube.*
Multiline.key_content log
Multiline.parser multiline-nodejs-winston
에이전트를 다시 시작하십시오.
구성 맵을 업데이트한 후 상담원을 다시 시작합니다.
-
Linux Linux 환경의 경우 실행합니다:
systemctl daemon-reload && systemctl restart fluent-bit -
Windows Windows 환경의 경우 실행합니다:
sc.exe stop fluent-bit && sc.exe start fluent-bit
여러 줄 로그 확인
IBM Cloud Logs 인스턴스에 액세스하여 여러 줄 항목(예: 스택 추적)이 올바르게 그룹화되었는지 확인합니다.
-
로그
보기를 사용하여 여러 줄의 항목이 올바르게 그룹화되었는지 확인합니다.
그룹화된 로그 데이터는
log필드에 포함되어 있습니다.