Real-time visitor analysis with Logstash + ElasticSearch + Kibana

Logstash, ElasticSearch, Kibana 이것들은 무엇인가?
- Logstash
각종 로그를 가져와 보기 좋은 형태로 만들어 줍니다.

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

- Kibana
ElasticSearch의 저장 된 데이터를 사용자에게 보기 좋게 웹으로 보여줍니다.

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

getting-started-centralized-overview-diagram

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

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

 

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

 

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

 

2. Redis 설치

 

- Redis 실행

 

3. JDK 설치
JDK (Java Development Kit)을 적절한 곳에 설치 합니다.

http://www.oracle.com/technetwork/java/javase/downloads/index.html

 

4. ElasticSearch 설치

http://www.elasticsearch.org/

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

- ElasticSearch 실행

* 1.x 버전대에는 -f 옵션 대신 -d 옵션으로 데몬으로 띄울수가 있습니다.

 

5. Logstash 설치

http://logstash.net/

 

- Logstash log shipper 설정 파일
가져올 로그를 지정하고 Redis로 데이터를 저장 합니다.

 

- Logstash 실행

위와 같이 로그를 가져옴과 동시에 Redis로 저장이 됩니다.

 

- Logstash Indexer 설정 파일
Redis에 저장 된 데이터를 ElastaicSearch로 전송 합니다.

 

- Logstash Indexer 실행

이제 Indexer가 Redis에 저장 된 데이터를 읽어와서 ElasticSearch로 저장합니다.

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

Comments

comments