
수백만, 수십억 건에 달하는 Elasticsearch 문서를 시선을 사로잡는 차트, 그래프, 표로 변환하고 싶으신가요? 그 답은 바로 Kibana입니다. Elastic의 공식 제품인 Kibana는 Elasticsearch와 긴밀하게 통합되어 있으며, 방대한 데이터를 쉽고 직관적으로 분석할 수 있는 사용자 친화적인 인터페이스를 제공합니다.
현재 모든 ObjectRocket Elasticsearch 인스턴스에는 Kibana 3가 기본으로 탑재되어 있어, Elasticsearch HTTP 엔드포인트의 /_plugin/kibana 경로를 통해 바로 접근할 수 있습니다. 하지만 Kibana 4는 다양한 개선 사항과 새로운 기능을 갖추고 있기 때문에, ObjectRocket은 여러분이 생성하는 모든 Elasticsearch 인스턴스에 Kibana 4를 함께 제공하기 위해 열심히 준비하고 있습니다. 그때까지 이 튜토리얼을 따라 Docker 컨테이너에서 실행 중인 Kibana 4로 Elasticsearch 인스턴스에 연결해 보세요.

사전 준비 사항
이미 Docker가 설치되어 있고 ObjectRocket에서 Elasticsearch 인스턴스를 운영 중이라면 바로 시작할 준비가 된 것입니다. Docker 호스트의 IP 주소가 Elasticsearch 인스턴스에 화이트리스트로 등록되어 있는지만 확인한 후, 아래의 "Docker에서 Kibana 4 실행하기" 섹션으로 이동해 연결 정보를 활용하시면 됩니다.
Elasticsearch
시작하려면 ObjectRocket에서 제공하는 Elasticsearch 인스턴스가 필요합니다. 아직 인스턴스가 없다면 저희가 제공하는 Elasticsearch 시작 가이드 문서를 참고하세요. 이 가이드는 로컬 환경에서 Docker를 실행하는 방식을 다루고 있으므로, ACLs에 현재 IP 주소(icanhazip.com에서 확인 가능)를 반드시 화이트리스트에 추가해야 합니다. 인스턴스가 준비되면 Kibana 4에서 연결하기 위해 다음 두 가지 정보가 필요합니다:
- 인스턴스의 HTTPS 연결 문자열: 예를 들어 https://iad1-19999-0.es.objectrocket.com:29999와 같습니다. 고가용성(HA)을 위해 각 인스턴스는 4개의 클라이언트 노드를 제공하지만, 이 경우 하나만 사용하면 충분합니다.
- 인스턴스 관리자(admin) 계정의 사용자 이름과 비밀번호 조합
Docker
요즘 Docker를 가장 쉽게 시작하는 방법은 Docker Machine을 활용하는 것입니다. 설치 및 구성 방법은 이 글의 범위를 벗어나므로, 공식 시작 가이드를 참고하시기 바랍니다.
Docker에서 Kibana 4 실행하기
Elasticsearch 인스턴스가 온라인 상태이고 Docker가 설치되었다면, 이제 Kibana 4를 실행할 차례입니다!
Docker Machine을 사용 중이라면 먼저 환경을 적절히 설정하세요:
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
dockerbox virtualbox Running tcp://192.168.99.100:2376
$ eval "$(docker-machine env dockerbox)"
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES환경 파일 생성
이 튜토리얼에서 사용할 Kibana 4 Docker 이미지(objectrocket/kibana)는 Elasticsearch에 연결하는 방법을 알 수 있도록 ELASTICSEARCH_URL 환경 변수 설정이 필요합니다. 이 예제에서는 호스트 iad1-19999-3.es.objectrocket.com의 29999 포트(HTTPS)에 사용자 alice, 비밀번호 password로 접속합니다.
$ echo 'ELASTICSEARCH_URL=https://alice:password@iad1-19999-3.es.objectrocket.com:29999' > kibana4.env참고: -e 플래그로 환경 변수를 직접 전달할 수도 있지만, 민감한 인증 정보가 포함되어 있으므로 env 파일에 보관하는 것이 더 안전합니다.
컨테이너 시작
이제 Kibana 4 컨테이너를 시작할 수 있습니다:
# 바인딩 포트를 변경하고 싶다면 `-p $PORT:5601` 옵션을 사용하세요
$ docker run -d --name kibana4 -p 5601:5601 --env-file kibana4.env objectrocket/kibana:4.1.2
Unable to find image 'objectrocket/kibana:4.1.2' locally
4.1.2: Pulling from objectrocket/kibana
8a648f689ddb: Pull complete
6a9f09112d11: Pull complete
98c91eb0b06a: Pull complete
f5030fbbffc3: Pull complete
0a7a2d9eb5d6: Pull complete
1f9563800fc7: Pull complete
f43ab0bd66e0: Pull complete
Digest: sha256:352e95077d0312fa12de6cec3bc66d221391952b8cf98e890cd7324b6b6605ce
Status: Downloaded newer image for objectrocket/kibana:4.1.2
cc341ff14d492a30e106007896201639964bdef6a93d03d497957a2738f5ac24업데이트: Elasticsearch 2.0 이상을 사용 중이라면 objectrocket/kibana:4.2.0(또는 그 이상 버전) 이미지를 사용해야 합니다.
컨테이너가 생성되면 docker ps 출력 결과에서 확인할 수 있습니다:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cc341ff14d49 objectrocket/kibana "/opt/kibana/run.sh" About a minute ago Up About a minute 0.0.0.0:5601->5601/tcp kibana4컨테이너 실행에 문제가 있다면 ELASTICSEARCH_URL 변수를 다시 확인하고 URL의 각 부분이 올바른지 점검하세요. 또한 @나 : 같은 특수 기호가 포함된 비밀번호는 URL 구조를 깨뜨릴 수 있다는 점에 유의하세요. docker logs kibana4 명령을 실행하면 Kibana가 stdout 또는 stderr에 출력한 오류 메시지도 확인할 수 있습니다.
Kibana 4에 접속하기
이제 Docker 호스트의 5601 포트(또는 이전 단계에서 지정한 포트)를 통해 Kibana 4에 접속할 수 있습니다. 로컬에서 실행 중이라면 https://localhost:5601을, Docker Machine을 사용 중이라면 docker-machine ip 명령으로 확인한 VM의 IP 주소(예: https://192.168.99.100:5601)를 사용하세요.
접속에 성공했다면, Elasticsearch 인스턴스의 인덱스를 사용하도록 Kibana를 구성해야 합니다. 자세한 내용은 Elastic의 "Connect Kibana with Elasticsearch" 문서를 참고하세요. Kibana 4의 핵심 기능을 더 깊이 이해하고 싶다면 "Getting Started with Kibana" 가이드도 함께 읽어보시길 권장합니다.
마무리
Kibana에서 시각화 작업을 마쳤다면 다음 명령으로 Docker 컨테이너를 중지할 수 있습니다:
$ docker stop kibana4
kibana4다음에 다시 접속하고 싶을 때는 docker start kibana4 명령만 실행하면 바로 사용할 준비가 완료됩니다.
앞서 언급했듯이 ObjectRocket의 Elasticsearch 상품에 호스팅형 Kibana 4 제공이 이미 진행 중이지만, 그때까지는 로컬에서 Kibana를 실행하면 빠르게 시작할 수 있습니다. 게다가 Kibana는 모든 설정을 Elasticsearch 인덱스에 저장하기 때문에, 나중에 전환하더라도 소중한 대시보드나 시각화 자료를 잃을 걱정은 없습니다!