Real-time visitor analysis with Logstash + ElasticSearch + Kibana

Logstash, ElasticSearch, Kibana 이것들은 무엇인가?

문서 업데이트 (2014-08-27)

- Logstash
각종 로그를 가져오는 용도로 사용 됩니다.

- ElasticSearch
Lucene을 바탕으로 개발한 분산 검색 엔진입니다.

- Kibana
ElasticSearch의 저장 된 데이터를 Dashboard 형태로 보여줍니다.

실시간 로그 분석 시스템의 구성도는 어떻게 되는가?
Logstash에서 1.2.2 기준으로 추천하는 구성도 입니다.
이전 버전에서는 Redis 대신 RabbitMQ를 사용했었는데 복잡성 때문에 Redis를 사용하기 시작 했다고 합니다.
Redis를 사용하는 이유는 Logstash에서 가져온 데이터를 디스크 I/O를 거치지 않고 Memory로 처리 하도록 사용됩니다.

getting-started-centralized-overview-diagram

실시간 로그 분석 시스템을 실제로 만들어 보자.
본 글은 CentOS 6.4(x86_64)에서 테스트 되었고 테스트 용도로 구축한 것이기 때문에 한 서버에 모든 프로그램이 동작하게 됩니다.
따라서, 실서버에 적용시 각각의 프로그램 용도에 맞게 분산해서 구축 하셔야 합니다.
설치 순서는 Nginx -> Redis -> JDK -> ElasticSearch -> Logstash -> Kibana 가 되겠습니다.

1. Nginx 설치
Nginx의 저장소 추가하여 설치를 진행합니다.

 

- nginx.conf 설정
Access 로그가 JSON 포멧 방식으로 저장 되도록 설정합니다.

 

JSON 포멧의 Access 로그는 아래와 같이 저장이 됩니다. (원래는 한줄로 기록 됩니다.)

 

2. Redis 설치

소스로 설치하기를 원하시는 분들은 http://redis.io/download 를 참고 하시기 바랍니다.

 

- Redis 실행

 

3. JDK 설치
Oracle JDK (Java Development Kit)을 적절한 곳에 설치 합니다.
http://www.oracle.com/technetwork/java/javase/downloads/index.html

 

4. ElasticSearch 설치
http://www.elasticsearch.org/

 

ElasticSearch의 모니터링을 위한 Plugin 설치 (head, bigdesk, kopf)

 

- ElasticSearch 실행

0.x 버전대에서는 -f 옵션을 주어 포그라운드로 실행 시켰지만, 1.x 버전대 부터는 -d 옵션으로 데몬 형태로 실행할수 있습니다.

 

5. Logstash 설치

1.2.x 버전까지는 jar 형태로 배포되었지만, 1.4 .x 버전부터 tar.gz 형태로 배포 됩니다. (http://logstash.net/)

 

- Logstash log shipper

Logstash의 경우 버전업이 됨에 따라 설정 파일의 문법이 약간 달라질 경우가 있으므로,  공식문서를 참고 하셔서 설정 하시기 바랍니다.

이 설정 파일의 경우 Nginx에서 발생 되는 Access 로그 파일을 가져와서 Redis로 전달 해주는 역할을 담당 합니다.

 

- Logstash log shipper 실행

실행 전 반드시 설정파일에 문제가 없는지 확인 후 실행 하도록 합니다. (log shipper를 실행과 동시에 Redis로 저장이 됩니다.)

 

- Logstash Indexer
Indexer는 Redis에 저장 된 데이터를 ElastaicSearch로 전송 하는 역할을 담당 합니다.

 

- Logstash Indexer 실행

Redis에 저장된 데이터를 한번에 가져오는 것을 확인 할수 있습니다.

 

ElasticSearch의 head 플러그인을 통해 logstash index가 생성 되어 데이터가 들어가 있는지 확인 해봅니다.

elasticsearch-plugin-head

잘 들어 있네요.
elasticsearch-plugin-head-browser

 

5. Kibana 설치
Kibana는 Logstash를 logstash-web으로 구동했을때와 ElasticSearch의 Plugin으로 설치 했을때 모두 사용이 가능합니다.
Nginx 웹서버를 이미 사용중이므로 가상호스트 사용자의 public_html 디렉토리에 바로 넣어 설치 하겠습니다.

 

- Kibana 설정
config.js에서 ElasticSearch의 서버 아이피와 kibana_index를 수정합니다.
kibana_index는 logstash-indexer가 index를 logstash-2013.11.04 형태로 생성 하므로 와일드 카드로 주면 날짜와 상관 없이 불러 올수 있습니다.

 

- Kibana 웹으로 확인
http://your-domain.com/kibana/ 에 접속해서 실시간으로 로그를 분석할수 있게 됩니다.
kibana

kibana2

감사합니다. :D

Loading Disqus Comments ...
Loading Facebook Comments ...

No Trackbacks.