ELK사용법#1
ELK에서 L을 담당하는 Logstash는 각종 로그를 수집/변환해서 Elasticsearch로 넘겨 Kibana를 통해 분석/조회할 수 있도록 제공하는 오픈소스입니다.
지난 6개월 동안 ELK를 사용하면서 가장 다루기 어려웠던 Logstash를 사용하는 방법을 간단하게 설명하려 합니다.
특히, 과거 데이터를 수집, 그 당시의 timestamp로 변환하는 방법에 대해서 설명하겠습니다.
준비물로는 ELK가 설치된 PC(맥, 윈도우 상관없습니다.), 당연한 이야기이지만 timestamp정보를 가지고 있는 로그가 필요합니다.
이번에 예제로 사용할 로그는 다음의 한 줄입니다.
설명이 따로 필요 없지만, 간단하게 말씀드리면, ticket_id를 가지고 있고, Windows, Chrome49를 사용했으며, 접속 시점은 2016년 4월 5일 17:16:56입니다.
Logstash는 어떤 정보를 수집, 가공하고 전달할지를 conf파일에서 설정합니다.
conf파일의 구조는 다음과 같습니다.
백문이 불여일타. 첫 번째 conf 파일을 만들어보겠습니다.
이 정보를 logstash-basic.conf 파일로 저장한 뒤 다음과 같이 실행합니다.
bin/logstash -f logstash-basic.conf
-f는 conf 파일을 지정하는 파라메터입니다.
여기에 처음 준비한 json을 입력해봅니다.
결과가 나왔는데. @timestamp가 접속 시점이 아니라 분석 시점의 정보를 가지고 있습니다.
접속 시점의 정보를 활용해야 하는데, 정보를 변환하는 곳이 filter입니다.
conf 파일을 다음과 같이 작성해봅니다.
이제 다시 logstash를 재가동하고 json을 입력하면,
4월 5일 날짜로 변경이 되었죠? 참고로 저같이 궁금해하시는 분을 위해서, 17시가 아니라 8시로 변환되어 있는데,
이 부분은 UTC 시간으로 변환해서 넣고, Kibana에서 다시 Locale을 지정해서 보여주게 됩니다. 그대로 두세요.
이제 마지막 단계입니다.
elasticsearch로 넘기는 부분은 output에 다음을 추가하면 됩니다.
logshash 재가동/ json을 입력하면,
elasticsearch 콘솔에서 정보를 잘 받았다는 메시지가 나타나고,
Kibana에서도 다음과 같이 4월 5일 데이터를 확인할 수 있습니다.
어렵지 않죠?
아래는 설명에서 사용한 logstash-basic.conf파일의 전문입니다.