
이 글에서는 원격 Elasticsearch 클러스터에 연결되는 Kibana 로컬 인스턴스를 구축하는 전체 과정을 단계별로 안내합니다. ObjectRocket for Elasticsearch 서비스에는 무료 호스팅형 Kibana가 포함되어 있지만, 로컬 머신에서 직접 Kibana를 실행하면 더 큰 유연성을 얻을 수 있는 경우도 많습니다. 또한 호스팅형 Kibana를 제공하지 않는 환경이나 서비스를 사용 중이라면 이 가이드를 통해 손쉽게 자신의 컴퓨터에서 Kibana를 실행할 수 있습니다.
Kibana를 로컬에서 실행하는 이유
다른 Kibana 사용자와 공유되지 않는 나만의 시각화(Visualization) 세트를 만들고 싶었던 적이 있나요? 아니면 공유 인스턴스에 설치하지 않고 새로운 Kibana 플러그인을 미리 사용해 보고 싶으신가요? Kibana를 로컬에서 실행하면 이 모든 것이 가능합니다.
Kibana는 아무것도 로컬에 저장하지 않으며, 기본적으로 Elasticsearch 클러스터 내 동일한 인덱스에 설정 정보를 저장합니다. 따라서 원하는 만큼 여러 개의 Kibana 인스턴스를 실행하거나, 필요할 때만 Kibana를 띄우는 것도 가능합니다. 상태와 설정이 공유되기 때문에 한 인스턴스에서 생성하거나 수정한 시각화는 해당 클러스터에 연결된 모든 Kibana 인스턴스에서 그대로 확인됩니다. 이는 협업에는 매우 유리하지만, 반대로 한 사용자의 실수로 인해 모든 사용자의 시각화가 삭제되거나 변경될 수 있다는 단점도 있습니다.
여러 사용자가 함께 Kibana 인스턴스를 사용하는 환경이라면, 별도의 인덱스를 사용하는 자신만의 인스턴스를 운영하는 것이 좋습니다. 그러면 다른 사용자가 실수로 덮어쓸 걱정 없이 나만의 시각화를 자유롭게 관리할 수 있습니다. 또는 아직 다른 사람에게 공개할 준비가 되지 않은 시각화나 플러그인을 자신의 Kibana 설치 환경에서 먼저 테스트해 볼 수도 있습니다.
이처럼 로컬 실행은 다양한 상황에서 유용하게 활용될 수 있습니다. 지금부터 설정 방법을 살펴보겠습니다.
Kibana 설정하기
Kibana는 다른 Elasticsearch 클라이언트와 마찬가지로 Elasticsearch에 연결됩니다. 따라서 로컬 시스템에서 Elasticsearch에 접속할 수 있다면 Kibana도 로컬에서 실행할 수 있습니다. 설치해야 할 구성 요소를 최소화하고 환경을 깔끔하게 격리하기 위해 Docker 기반 Kibana 이미지를 사용하는 것을 권장합니다. 이를 위해서는 로컬 시스템에 최소한 Docker와 Docker Compose가 설치되어 있어야 합니다.
Docker 설정이 완료되면 local-kibana GitHub 저장소를 시스템의 디렉터리 하나에 클론(clone)합니다.
다음으로 포함된 kibana.yml 파일을 자신의 환경에 맞게 수정해야 합니다. 아래는 저장소에 포함된 설정 파일의 예시입니다:
---
## Default Kibana configuration from kibana-docker.
## from https://github.com/elastic/kibana-docker/blob/master/build/kibana/config/kibana.yml
#
# Kibana server name and host. You shouldn't need to change these
server.name: kibana
server.host: "0"
# These are the settings you must set to your target Elasticsearch cluster and user.
elasticsearch.url: "https://your-host.es.objectrocket.com:yourport"
elasticsearch.username: "youruser"
elasticsearch.password: "yourpassword"
# The index Kibana should use. By default, Kibana will use an index named ".kibana".
# If you want to isolate your visualizations/dashboards/index patterns from others, change This
#kibana.index: ".kibana"
설정 파일에서 주목해야 할 부분은 두 가지입니다. 바로 elasticsearch.* 설정과 kibana.index 설정입니다.
elasticsearch.* 설정은 어떤 대상 Elasticsearch 클러스터에 연결할지를 결정합니다. ObjectRocket 서비스를 사용 중이라면 UI의 "Connect" 섹션에서 필요한 모든 정보를 확인할 수 있습니다. 그 외의 경우에는 Elasticsearch 호스트 주소와 접속에 사용하는 사용자 이름, 비밀번호를 입력하면 됩니다. 참고로 Kibana는 여러 개의 Elasticsearch 호스트명을 허용하지 않으므로, 호스트가 여러 개라면 이 Kibana 인스턴스가 연결할 호스트 하나를 선택해야 합니다.
두 번째로 주목할 부분은 kibana.index 설정입니다. 다른 사용자들과 동일한 시각화와 대시보드를 사용하고 싶다면 기본값 그대로 두면 됩니다. 반대로 자신만의 별도 환경에서 작업하고 싶다면 주석을 해제하고 고유한 값으로 변경하여, 자신과 다른 사용자 모두가 쉽게 식별할 수 있도록 하는 것이 좋습니다.
Kibana 실행하기
이제 Kibana를 시작할 준비가 되었습니다. 네트워크 보안 정책이나 ACL이 적용된 서비스를 사용 중이라면, 먼저 로컬 머신에서 Elasticsearch에 접속 가능한지 확인하세요.
local-kibana 디렉터리에서 다음 명령어를 실행합니다:
$ docker-compose build --no-cache
$ docker-compose up
Kibana가 시작되고 자체 구성을 마치기까지 몇 분 정도 걸릴 수 있습니다. 터미널에서 Kibana 상태가 'green'으로 표시되면 연결할 준비가 완료된 것입니다.
연결하기
Kibana 컨테이너가 정상적으로 실행되었다면 브라우저에서 localhost:5601로 접속합니다. Kibana가 사용자 이름과 비밀번호(위 설정 파일에 입력한 것과 동일)를 한 번 더 요청하며, 인증이 완료되면 모든 화면이 로드됩니다. 기본값에서 Kibana 인덱스를 변경했다면 첫 로그인 시 인덱스 패턴과 기본 인덱스 패턴을 새로 설정해야 합니다.
마무리
지금까지 소개한 방법만 알면 로컬 Kibana 인스턴스를 빠르고 간편하게 실행할 수 있습니다. 더 자세한 안내는 공식 문서에서 확인할 수 있습니다.