
Kibana는 기본적으로 Elastic의 타일 서비스가 제공하는 지도 위에 지리 데이터를 표시하는 기능을 갖추고 있습니다. Kibana의 지도 기능을 맛볼 수 있는 훌륭한 출발점이지만, X-Pack 라이선스가 없으면 최대 줌 레벨이 제한됩니다. 예를 들어 ObjectRocket의 본거지인 미국 텍사스주 오스틴 지역의 최대 줌 화면은 아래와 같습니다.

다행히 Kibana가 다른 타일 서비스나 WMS 호환 매핑 서버를 사용하도록 설정하는 것은 생각보다 어렵지 않습니다.
다른 지도 서비스를 사용해야 하는 이유
Elastic 타일 서비스는 모든 사용자에게 유용한 장점이지만, 기본 서비스 대신 다른 서비스가 필요한 경우가 있습니다. 대표적인 예는 다음과 같습니다.
- 거리 수준의 상세 데이터까지 더 깊이 확대하고 싶을 때
- 새로운 레이어를 추가하거나 다른 지도 스타일을 적용하고 싶을 때
- 건물 내부 평면도처럼 완전히 커스텀한 지도를 만들고 싶을 때
결국 핵심은 원하는 데이터를 제공하는 서버를 찾아, 해당 서버를 사용하도록 Kibana를 설정하는 것입니다.
다만 Kibana는 성격이 완전히 다른 두 종류의 지도 서비스를 활용할 수 있어 처음에는 다소 혼란스러울 수 있습니다. 사용 방법을 살펴보기 전에 이 두 가지를 먼저 짚고 넘어가겠습니다. 기본적으로 Kibana는 타일 맵 서비스(TMS, Tile Map Service)에서 지도를 가져옵니다. 타일 서비스는 지도를 좌표와 줌 레벨로 접근할 수 있는 정사각형 타일 단위로 잘라 제공하며, Elastic이 제공하는 서비스도 이 방식입니다. 이 설정은 kibana.yml 설정 파일에서 전역적으로 구성합니다. 반면 Kibana에서 지도를 표시하는 또 다른 방법은 WMS(Web Map Service) 호환 맵 서비스를 사용하는 것입니다. 웹 맵 서비스는 서로 다른 프로토콜로 동작하며 GIS 데이터베이스의 데이터로부터 지도를 생성하고, Kibana UI 안에서 직접 설정할 수 있습니다.
타사 지도 서비스 활용하기
상업용 지도 서비스도 여러 곳이 있고, OpenStreetMap처럼 무료로 지도를 만들 수 있는 데이터 소스도 풍부합니다. 테스트 목적이라면 Stamen처럼 OpenStreetMap 기반의 무료 타일 서비스를 활용할 수 있습니다. WMS 쪽에서도 미국의 National Map처럼 테스트에 쓸 수 있는 무료 맵 서버가 마련되어 있습니다. 마지막으로 자체 매핑 서비스를 직접 구축하는 방법도 있는데, 이는 뒤에서 다루겠습니다.
Kibana에서 다른 타일 서비스 사용 설정하기
앞서 말했듯이 Kibana의 기본 지도는 타일 서비스 기반입니다. 앞서 언급한 Stamen은 세련된 지도 스타일을 여러 가지 제공하는 무료 테스트 서비스 중 하나로, 이 글에서는 이를 가지고 테스트해 보겠습니다.
설정을 변경하려면 kibana.yml 파일에 접근할 수 있어야 합니다. ObjectRocket for Elasticsearch처럼 호스팅 서비스를 이용 중이라면 먼저 로컬 Kibana 설치 환경에서 테스트해 보는 것이 좋습니다. kibana.yml 파일을 찾았다면 다음 항목들을 추가합니다.
tilemap.url: "https://stamen-tiles.a.ssl.fastly.net/terrain/{z}/{x}/{y}.jpg"
tilemap.options.maxZoom: 20
tilemap.options.attribution: 'Map tiles by [Stamen Design](https://stamen.com), under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0). Data by [OpenStreetMap](https://openstreetmap.org), under ODbL(https://www.openstreetmap.org/copyright).'
첫 번째 설정은 타일 서비스의 URL로, 표준 타일 서비스가 사용하는 일반적인 엔드포인트/{z}/{x}/{y}.jpg/png 형식을 따릅니다. Stamen에는 'toner', 'watercolor' 같은 개성 있는 스타일이 여러 가지 있으며, URL에서 'terrain' 부분을 바꾸면 손쉽게 적용할 수 있습니다. 두 번째 설정은 최대 줌 레벨입니다. 일부 서비스는 이 값을 공개하지 않기 때문에 약간의 시행착오가 필요할 수 있습니다. 마지막으로 매우 중요한 것은 지도 제작자에게 적절한 저작권 표기(attribution)를 남기는 것입니다. 이 저작권 문구는 지도 시각화의 오른쪽 하단에 표시됩니다.
설정을 저장하고 Kibana를 재시작하면 훨씬 더 깊이 확대할 수 있고, 멋진 스타일의 지도를 확인할 수 있습니다. 아래 이미지를 앞선 이미지와 비교해 보세요.


Kibana에서 WMS 지도에 연결하기
WMS 지도의 설정 방식은 조금 다릅니다. 설정 파일이 아니라 Kibana 자체 내에서 지정해야 합니다. 이번 예제에서는 미국 지질조사국(USGS)의 Nationalmap, 그중에서도 교통(transportation) 지도를 사용해 다양한 레이어를 실험해 보겠습니다. 먼저 Kibana에서 좌표 맵(coordinate map) 시각화를 불러온 뒤 "options" 버튼을 클릭합니다. 그다음 "WMS compliant map server(WMS 호환 맵 서버)"를 선택합니다.

선택하면 새로운 설정 항목들이 나타납니다. WMS 서버의 URL, 사용할 레이어, 서버가 실행 중인 WMS 표준 버전, 로드할 이미지 형식, 적용할 스타일을 입력해야 합니다. 각 설정에 대한 자세한 설명은 Kibana 공식 문서에서 확인할 수 있습니다.
몇 개의 좌표만 필요한 타일 서비스보다는 다소 복잡하지만, 다행히 이번에 사용할 맵 서비스에는 유용한 도구들이 내장되어 있습니다. 우선 Nationalmap 페이지에 접속하면 지도와 그 기능을 소개하는 친절한 설명 페이지를 볼 수 있으며, 이곳에서 지도와 모든 레이어에 대한 정보를 얻을 수 있습니다. 더 자세한 기능 정보가 필요하면 페이지 상단의 작은 WMS 링크를 클릭해 보세요. 서버 버전, 지원되는 이미지 형식 등 상세한 기능(capabilities) 정보를 XML 형태로 확인할 수 있습니다. 이 정보와 WMS 링크를 바탕으로 이 지도에는 다음 설정을 사용합니다.
- WMS url: https://services.nationalmap.gov/arcgis/services/transportation/MapServer/WMSServer
- WMS layers: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36
- WMS version: 1.3.0
- WMS format: image/png
- WMS attribution: Provided by the United States Geological Service (Nationalmap.gov)
- Styles: blank
레이어에 관한 한 가지 참고 사항이 있습니다. 이 지도는 레이어가 계층 구조로 되어 있는 것처럼 보이지만, 모든 레이어를 한 번에 호출할 수 있는 축약 표현을 찾을 수 없어 개별 레이어를 하나씩 나열해야 합니다.
모든 설정을 마치면 다음과 같은 화면을 볼 수 있습니다.

또한 WMS 설정은 Kibana의 고급 설정(Advanced Settings) 화면에서 모든 시각화의 기본값으로 지정할 수도 있습니다.
자체 지도·타일 서버 구축하기
마지막으로, 이를 실제 운영 환경에 적용하려면 자체 타일/맵 서버를 운영하는 것이 좋은 선택이 될 수 있습니다. NHL 링크장처럼 완전히 커스텀한 지도를 만들거나, OpenStreetMap 데이터를 바탕으로 거리 지도나 지형도를 생성한 뒤 자체 레이어를 얹을 수도 있습니다. Elastic 블로그에서도 소개된 geoserver나 TileCache 같은 훌륭한 오픈소스 도구들은 시작 방법을 알려주는 튜토리얼과 상세 문서를 함께 제공합니다. 또한 OpenStreetMap은 위키를 통해 입문자에게 방대한 정보를 제공하며, SWITCH2OSM 사이트에서도 OpenStreetMap 데이터를 서빙하는 데 필요한 다양한 리소스를 찾을 수 있습니다.
Elasticsearch가 여러분의 애플리케이션에 어떤 가치를 더할 수 있는지 궁금하신가요? 저희는 DBA 전문가가 함께하는 완전 관리형 호스팅 Elasticsearch 인스턴스를 제공하여, 개발 리소스를 낭비하지 않고도 Elasticsearch와 Kibana를 최대한 활용하도록 돕습니다. 상담이 필요하시면 언제든 문의해 주세요.