Out-of-the-box Kibana รองรับการแสดง Geo-data บน Maps จาก Elastic Tile Service ให้ Introduction ดีเกี่ยวกับความสามารถของ Kibana แต่ Maximum Zoom Level จำกัดหากไม่มี X-Pack License ตัวอย่าง Max Zoom สำหรับ Austin, Texas (Home Base ของ ObjectRocket) ดูด้านล่าง
ข่าวดีคือ Config Kibana ให้ใช้ Tile Service อื่นหรือ WMS-compliant Mapping Server ทำได้ง่าย
ทำไมต้องใช้ Mapping Service อื่น?
Elastic Tile Service ให้ประโยชน์ดี แต่อาจมี lúcอยากแยกจาก Default Service เหตุผลหลักๆ:
- อยาก Zoom ลงไประดับ Street-level Data
- อยากเพิ่ม Layers ใหม่ หรือ Map Style ต่างออกไป
- อยาก Custom Map เต็มๆ เช่น ภายในอาคาร
สรุปคือหา Server ที่ให้ Data ที่ต้องการ แล้ว Config Kibana ให้ใช้ Server นั้น
Kibana อาจสับสนเพราะใช้ได้ 2 ประเภท Map Services ที่ต่างกันจริงๆ แนะนำ 2 แบบก่อนไปรายละเอียด Default Kibana ใช้ Tile Map Service (TMS) Tile Services ตัด Map เป็น Square Tiles เข้าถึงได้โดย Coordinates และ Zoom Level Elastic ให้ Service นี้ Config Globally ใน kibana.yml อีกแบบคือ WMS-compliant Map Service (WMS) Web Map Service ใช้ Protocol ต่างกัน Generate Maps จาก GIS Database ตั้งค่าได้จาก Kibana UI
ใช้ Third Party Map Services
มี Commercial Map Services หลายตัว และ Free Data Sources เช่น OpenStreetMap สำหรับทดสอบ มี Free Tile Services บน OpenStreetMap เช่น Stamen สำหรับ WMS มี Free Map Servers เช่น National Map ใน US และมี Option Setup Own Mapping Service (ครอบคลุมทีหลัง)
Setup Kibana ให้ใช้ Tile Service อื่น
Stamen ที่กล่าวมานี้ ฟรีทดสอบได้ มี Map Styles คูลหลายแบบ เราจะทดสอบกับตัวนี้ ต้องเข้าถึง kibana.yml หากอยู่ Hosted Service เช่น ObjectRocket for Elasticsearch ใช้ Local Kibana Install ทดสอบก่อน หา kibana.yml แล้วเพิ่ม Entries นี้:
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).'
Setting แรก: URL Tile Service ตาม Format มาตรฐาน endpoint/{z}/{x}/{y}.jpg/png Stamen มี Styles อื่นๆ เช่น 'toner' 'watercolor' เปลี่ยน 'terrain' ใน URL ได้ Setting ที่สอง: Max Zoom Levels บาง Service ไม่โฆษณา ต้อง Trial-and-error Setting ที่สามสำคัญมาก: Attribution ให้ถูกต้อง แสดงที่มุมขวาล่างของ Map Visualization
Set แล้ว Restart Kibana จะ Zoom ลงไปได้ลึกกว่ามาก และได้ Stylized Maps เปรียบเทียบรูปด้านล่างกับรูปข้างบน:
เชื่อมต่อ WMS Map จาก Kibana
Config WMS Map ต่างออกไป ตั้งใน Kibana UI ไม่ใช่ Config File ตัวอย่างใช้ USGS Nationalmap โดยเฉพาะ Transportation Maps เล่น Layers ต่างๆ Load Coordinate Map Visualization ใน Kibana คลิกปุ่ม "Options" เลือก "WMS compliant map server"
Settings ใหม่จะแสดง: ใส่ WMS Server URL, Layers, WMS Version, Image Type, Styles, Attribution รายละเอียดอยู่ใน Kibana Documentation
ซับซ้อนกว่า Tile Service แต่ Map Service ที่ใช้มี Tools Built-in ไปที่ Nationalmap Page จะมี Description Page ของ Map และ Layers คลิก Link WMS ข้างบน จะได้ XML Capabilities แบบละเอียด (Version, Image Formats, etc.) จากข้อมูลนี้ ใช้ Settings ดังนี้:
- 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
หมายเหตุ Layers: Map นี้มี Hierarchy ของ Layers ไม่มี Shorthand เรียกทั้งหมด ต้อง List เลข Layer ทีละตัว
Setup เสร็จ จะได้ View แบบนี้: WMS Settings ยัง Set As Default สำหรับทุก Visualizations ใน Kibana Advanced Settings Screen ได้
Setup Own Map หรือ Tile Server
Production แนะนำ Run Own Tile/Map Server สร้าง Fully Custom Maps ได้ เช่น NHL Rink หรือ Street/Topographical Maps จาก OpenStreetMap ใส่ Own Layers มี Open Source Tools ดีๆ เช่น GeoServer (กล่าวใน Elastic Blog) หรือ TileCache มี Tutorials และ Docs 詳盡 OpenStreetMap Wiki และ SWITCH2OSM ให้ Resources เริ่มต้น Serve OpenStreetMap Data
สนใจ Elasticsearch ทำอะไรให้ App ได้บ้าง? เราให้ Fully Managed Elasticsearch พร้อม DBA Experts ช่วยใช้ Elasticsearch และ Kibana ให้เต็มที่โดยไม่ยึด Dev Resources ติดต่อขอ Consultation ได้เลย