커피닉스, 시스템 엔지니어의 쉼터
  logstash에서 로그를 파일로 저장할 때 날짜별로 저장하기 작성일 : 2015/12/02 18:18
 
  • 글쓴이 : 좋은진호 ( http://coffeenix.net/ )
  • 조회수 : 4843
     
    제  목 : logstash에서 로그를 파일로 저장할 때 날짜별로 저장하기
    작성일 : 2015.10.13(화)
    작성자 : 좋은진호(truefeel, http://coffeenix.net/ )



    logstash를 통해 수집된 데이터를 elasticsearch에 쌓고 있다. 수집된 데이터를 elasticsearch에 넣지 않고 로그파일로 저장할 필요가 생겼다. lnav 같은 쉘용 로그분석툴을 사용하기 위해서.

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


    위와 같이 설정했을 때 2015_10_13.log 파일명으로 로그를 쌓는다. 그런데 한가지 문제가 있다. logstash 시간은 UTC기준이라서, 우리나라 시간 AM 9시 이전은 2015_10_12.log 파일명에 쌓고, 9시 이후는 2015_10_13.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}"
        }
    }
     


    커피닉스, 시스템 엔지니어의 쉼터 / URL : http://coffeenix.net/board_view.php?bd_code=1781