'Splunk'에 해당되는 글 1건

  1. 2014.02.24 Splunk 대체 Solution으로서의 ELK Stack (6)

Splunk는 모든 머신 데이터를 실시간으로 collecting하고 Indexing하고 Reporting하는 End-to-End Solution이다. 모든 머신 데이터를 제한 없이 처리 할수있다. 사용자가 원하는 데이터를 즉시 분석할수 있으며, 원하는 Reporter, Dashboard를 추가적인 개발없이 구성할수 있다. 또한 통계적 명령들을 조합하여 여러가지 Query문으로 Search가 가능하며 Query문의 자동완성 기능까지 갖추고 있어 사용하기 매우 편리하다. 하지만 상당히 높은 가격대의 Solution이라서 일반적인 중소기업이 사용하기에 경제적으로 어렵다. 그래서 보다 낮은 가격대의 편하게 이용가능한 Splunk의 대체 Solution을 조사하던 중, Elasticsearch 사이트에서 Splunk와 비슷한 기능을 가진 ELK(Elasticsearch, Logstash, Kibana) Stack을 찾게 되었다. 

이에 이 글에서는 ELK(Elasticsearch, Logstash, Kibana) Stack을 사용해보고 Splunk의 대체 Solution으로 적합한지 알아보고자 한다.


소개 

ELK Stack은 Elasticsearch, Logstash, Kibana의 약자로서 Elasticsearch는 Apache의 Lucene을 바탕으로 개발한 실시간 분산 검색 엔진이며, Logstash는 각종 로그를 가져와 JSON형태로 만들어 Elasticsearch로 전송하고 Kibana는 Elasticsearch에 저장된 Data를 사용자에게 Dashboard 형태로 보여주는 Solution이다.



설치 및 설정

아래의 내용은 1대의 Server 환경에서 설치 및 설정한 경우이며, Elasticsearch는 0.90.11, Logstash는 1.2.2, Kibana는 Kibana-3.0.0 milestone4를 사용하였다.


Elasticsearch 설치 및 설정

(1) Elasticsearch 홈페이지에서 Elasticsearch의 zip파일을 다운받아 unzip한다.


(2) Elasticsearch 모니터링을 위한 Plugin을 설치 한다.

  $ bin/plugin -install mobz/elasticsearch-head

  $ bin/plugin -install lukas-vlcek/bigdesk/2.4.0

(3) config/elasticsearch.yml의 node.name을 지정한다. 이는 노드를 식별하기 위한 이름이므로 유일성과 의미를 가진 이름을 사용한다.


Logstash 설치 및 설정

(1) Elasticsearch 홈페이지에서 Logstash의 jar파일을 다운받는다.


(2) Config File을 생성하여 다음과 같이 저장한다.

  input {

    file {

      path => "/var/log/apache2/access.log"

      type => "apache"

    }

  }

  filter {

    grok {

      type => "apache"

      pattern => "%{COMBINEDAPACHELOG}"

    }

    date {

      type => "apache"

      match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]

    }

  }

  output {

    stdout { debug => true debug_format => "json"}

    elasticsearch { host => "localhost" }
  }


Kibana 설치 및 설정

(1) Elasticsearch 홈페이지에서 Kibana의 zip파일을 다운받아 unzip한다.


(2) unzip한 파일은 Elasticsearch의 Plugin에 넣어 사용한다. 경로는 다음과 같다.

  path/to/elasticsearch/plugins/kibana/_site

(3) path/to/elasticsearch/plugins/kibana/_site/config.js의 Elasticsearch Server URL을 지정한다. 

        (예: elasticsearch: "http://localhost:9200")


실행

Elasticsearch 실행

unzip한 Elasticsearch 디렉토리안의 bin에서 실행한다.

 elasticsearch/bin/elasticsearch -f 


Logstash 실행

  $ java -jar logstash-1.2.2-flatjar.jar agent -f logstash.conf

logstash.conf는 앞서 생성한 Logstash의 Config File이다.


Kibana 실행

Elasticsearch의 Plugin안에 넣었기 때문에 따로 실행할 필요가 없다. 

http://localhost:9200/_plugin/kibana/#/dashboard에서 Kibana가 잘 뜨는지 확인한다.


사용

Dashboard 생성

(1) http://localhost:9200/_plugin/kibana/#/dashboard에서 Blank Dashboard를 클릭한다.


(2) 설정 아이콘을 클릭한다.


(3) Dashboard의 Title을 입력하고 창을 닫으면 새로운 Dashboard가 생성된다.


Panel 생성

(1) 'ADD A ROW' 버튼을 클릭 한다.


(2) Rows의 Title을 입력하고, 'Create Row' 버튼을 클릭하여 Row를 생성한 후 창을 닫는다.


(3) Panel 생성을 위해 'Add panel to empty row' 버튼을 클릭한다.


(4) Panel Type을 선택한다. 여기서는 'histogram'을 선택하였다.


(5) Panel의 Title 및 사용자가 원하는 설정을 하고난 후 'Add Panel' 버튼을 클릭하여 Panel을 생성하고 창을 닫는다.


(6) 위에서 선택한 Type의 Panel이 생성되었음을 확인할수 있다.


Query

다양한 Query를 이용하여 Search하고 결과를 확인할 수 있다. 

(Query문의 종류 :  http://lucene.apache.org/core/3_5_0/queryparsersyntax.html )


Apache로그를 이용하여 위와 같은 작업을 거쳐 Dashboard를 완성해 보았다.



결론

Splunk와 ELK Stack은 End-to-End Solution이라는 면에서는 비슷할지 모르나, Kibana3가 아직 Release된 GA 버전이 없어 Splunk보다 기능적으로 부족하다.  

몇가지 예를 들자면 다음과 같다.

1. Splunk는 Query문의 자동완성 기능이 매우 잘되어있으나, Kibana는 이전에 사용했던 검색어에 대해서만 Query문의 자동완성을 지원 해준다. 

2. Splunk는 한개의 그래프에 한개의 Query 결과가 붙는 형태인 반면, Kibana는 한개의 Dashboard에 한개의 Query가 붙는 형태로 이를 공유하여 사용하기 때문에 하나의 Dashboard가 다양한 데이터를 가지고 표현할 수가 없다. 

3. Kibana는 아직까지 로그로부터 상위 n개의 결과를 그래프로 작성하는 Top-N Queries 기능이 없어 이 또한 사용하기 불편하다. (Top-N Queries 기능은 Kibana3 정식 Release 버전에서 추가될 예정이다.
참조 : http://www.elasticsearch.org/blog/whats-cooking-kibana/ )


현재는 ELK Stack이 Splunk비해 사용하기 불편하지만, 경제적인 측면까지 고려한다면 ELK Stack이 Splunk의 대체 Solution으로 유용할것이라 생각한다.



Reference Sites

ELK(Elasticsearch, Logstash, Kibana) Stack

(1) Elasticsearch : http://www.elasticsearch.org/

(2) ELK Download : http://www.elasticsearch.org/overview/elkdownloads/

(3) ELK Stack 연동 : http://www.yongbok.net/blog/real-taime-visitor-analysis-with-logstash-elasticsearch-kibana/

(4) Logstash Docs : http://logstash.net/docs/1.3.3/

(5) Kibana Dashboard 생성 : http://www.elasticsearch.org/videos/make-sense-of-your-big-data/

(6) Query 종류 : http://lucene.apache.org/core/3_5_0/queryparsersyntax.html

(7) Kibana3 Release GA버전 수정될 사항 : http://www.elasticsearch.org/blog/whats-cooking-kibana/


문서 Format 참고

(1) http://logstash.net/docs/1.4.0.beta1/tutorials/getting-started-with-logstash

(2) http://red-badger.com/blog/2014/02/18/jlt-world-risk-review-rapid-innovation/



2014년 3월 Elasticsearch, Logstash, Kibana의 새로운 버전이 나왔고, 이에 대한 글은 여기를 참조하시면 됩니다.



Posted by minji7