코딩마을방범대
[ELK] Log를 불러올 때 타임스탬프를 커스텀 필드로 정의하기 본문
728x90
위 포스트를 통해 ELK 구축 시 기본 타임스탬프로 설정되기 때문에, 로그를 읽어들인 시간으로 기록된다.
이 때문에 따로 필드를 만들어줘야 하는 번거로움이 있다.
아예 로그를 읽어들일 때 커스텀 timestamp를 기록하는 방법이 있는데, 이 방법은 로그의 한 줄 한 줄에 timstamp가 기록되어 있어야 가능하다.
이 포스트에서는 주로 timestamp 만을 가지고 이야기 하고 있지만, 굳이 Date 타입이 아닌 다른 필드를 생성하고 싶은 경우에도 참고하면 좋을 것 같다.
먼저 logstash.conf 파일을 열어주면, 로그를 읽어들일 파이프라인이 설정되어 있을 것이다.
만약 로그가 아래와 같이 저장된다고 가정한다면, 앞 부분의 로그가 찍힌 시간만 가져오고 싶다.
[24-10-02 11:09:27.438][INFO ] log message
여기서 필터 부분만 이렇게 수정해주면 된다.
아래와 같이 설정해주면 기본 필드인 timestamp 필드가 기본 로그 시간으로 기록되며, level 이라는 로그레벨도 같이 저장된다.
filter {
# Grok 필터를 사용하여 로그의 각 필드를 추출
grok {
match => {
"message" => "\[%{TIMESTAMP_ISO8601:timestamp}\]\[%{LOGLEVEL:level}\]*"
}
}
# Date 필터를 사용하여 timestamp 필드를 @timestamp로 변환
date {
match => [ "timestamp", "yy-MM-dd HH:mm:ss.SSS" ]
target => "@timestamp"
}
}
728x90
'💡 백엔드 > ELK' 카테고리의 다른 글
[ELK] Kafka와 ELK 연동하기 (0) | 2024.11.19 |
---|---|
[ELK] 탬플릿 생성하기 (message.keyword 필드가 비어있다면?) (0) | 2024.11.15 |
[ELK] 데이터뷰 및 필드 생성하기 (0) | 2024.11.13 |
[ELK] 다른 서버에 구축되어 있는 ELK와 연결하기 (0) | 2024.11.12 |
[ELK] Docker를 통해 구축한 ELK 의 데이터를 스냅샷으로 저장하기 (0) | 2024.11.06 |