본문 바로가기

Big Data/Elastic stack

elastic stack #4 kibana 소개 & quick start



#kibana란?
공식페이지에서는 window into the Elastic Stack 라고 소개하고 있다. 엘라스틱 스택을 들여다보는 창(?)이라고 한다. 그냥 쉽게 elasticsearch의 데이터를 쉽게 시각화해주는 도구라고 보면된다. 
elasticsearch가 많은 인기를 끄는 큰 이유중에 하나이다. 쉬운 데이터 시각화!
kibana는 node.js로 만들어진 Web Application이다. 

#kibana 설치
kibana설치에 앞서 당연히 설치된 elasticsearch가 필요하다. elasticsearch 설치 포스팅을 보고 미리 설치를 해놨다고 가정하고 다음예제를 진행한다.

https://www.elastic.co/downloads/kibana 에서 다운받아 압축을 푼다.
그리고 약간의 config파일 설정만 하면 끝이다. kibana 운영에 있어 다양한 옵션값들이 있지만 기본값으로 충분한 테스트가 가능하다.
가장 중요한 설정은 elasticsearch의 url을 지정하는 것이다.

/config/kibana.yml 파일에서 지정하면 된다. 기본은 localhost:9200이기 때문에 따로 설정을 할 필요는 없지만 중요한 설정이기 때문에 주석을 풀어서 설정해보자

elasticsearch.url: "http://localhost:9200"

이제 kibana를 실행하자.

> bin/kibana

#Kibana로 데이터 유입 확인
kibana는 web application이다. 기본 port는 5601이다. 그래서 local에 설치했다면 http://localhost:5601 으로 접근이 가능하다.
데이터를 확인하려면 데이터가 있어야한다.

데이터를 몇 개 만 아주 간단하게 입력해보자.

curl -XPUT localhost:9200/users/user/1 -d'
{  "name": "cat", "age": 33 }'

curl -XPUT localhost:9200/users/user/2 -d'
{  "name": "dog", "age": 23 }'
....

timestamp 데이터가 있어야 시계열로 데이터를 시각화할 수 있지만 지금은 간단 예제니깐 아주 간단하게 이름과 나이가 있는 document를 입력을 해보자

이제 http://localhost:5601으로 접속하자



위 화며은 이미 여러 데이터를 만들어놓은 상태에서 캡쳐를 했기 때문에 다른 index들이 보이지만 무시하면 된다.
가장 먼저 할 것이 management탭에서 index patterns을 등록해야한다.
미리 입력한 index은 users로 만들어 보자. timestamp 데이터가 없으므로 index contains time-based events를 체크해제하고 만들자.

만들어지면 해당 index의 mapping 정보를 간단하게 볼수 있다. 우린 이미 index를 만들어 document를 입력했기 때문에 elasticsearch가 dynamic mapping으로 name, age 에 대한 type을 자동으로 지정해놓은걸 볼 수 있다.



그리고 discover탭으로 가면 유입된 documents를 확인할 수 있다.


입력된 데이터가 모두 잘 보인다. 원래 timestamp값이 매핑되어있다면 시간 단위로 입력된 데이터 유입량을 볼수 있지만 예제에서는 시간에 상관없이 모든 데이터가 보이는 것이다. 여기서 간단한 Query DSL을 사용하여 데이터를 조회할 수 있다. 그건 다음 포스팅에서 설명하고 일단은 패스

#데이터 시각화
이제 kibana의 목적인 데이터 시각화를 간단히 해보자. 별거 없다 그냥 엑셀로 차트를 만드는 정도의 방법과 유사하다.
visualize탭으로 간다. 미리 지정한 index pattern중 하나를 선택한다. 우리가 방금 만든 users를 선택해보자


예제로 나이별 인구 분포라는 시각화를 해보자.
pie chart를 선택!


pie chart설정은 두가지만 설정하면된다. slice size를 count로 설정하고, split slices에서 aggregation을 terms로 선택하면 users의 mapping 된 타입이 나타난다. 나이별 분포를 보여주기 위해 field로 age를 선택

그리고 위에 화살표를 눌러보면 그래프가 나타난다. 끝이다.


이렇게 만든 여러 visualize를 모아서 dashboard를 만들고 활용하는 것이 kibana의 목적이다.