본문 바로가기

|배움의 길|/SIEM

logstash에서 로그를 파일로 저장할 때 날짜별로 저장하기

반응형

 


 ELK에서 logstash를 통해 수집된 데이터를 elasticsearch에 쌓고 있다.

그런데, 수집된 데이터를 elasticsearch에 넣지 않고 로그파일로 저장가 있으면 어떻게 해야하나?

 
output {
    file {
         path => "/data/log/%{+YYYY_MM_dd}.log"
         message_format => "%{message}"
    }
}
 

위와 같이 설정했을 때 2019_05_30.log 파일명으로 로그를 쌓는다. 그런데 한가지 문제가 있다. logstash 시간은 UTC기준이라서, 우리나라 시간 AM 9시 이전은 2019_05_29.log 파일명에 쌓고, 9시 이후는 2019_05_30.log 파일명에 쌓는다.

다음과 같이 설명하면 서버의 timezone 기준(KST)으로 날짜 파일명에 로그를 쌓을 수 있다.

 
filter {
    ruby {
        code => "event['date_index'] = event.timestamp.time.localtime.strftime('%Y_%m_%d')"
    }
}

output {
    file {
        path => "/data/log/%{date_index}.log"
        message_format => "%{message}"
    }
}