วันนี้จะ Walkthrough ตั้ง Local Kibana Instance เชื่อม Remote Elasticsearch Cluster ObjectRocket for Elasticsearch ให้ Free Hosted Kibana Install แล้ว แต่บางกรณี Run Kibana On Local Machine ให้ Flexibility เพิ่ม หรือถ้า Environment/Service ไม่ให้ Hosted Kibana Walkthrough นี้ช่วย Run Kibana Local ได้ง่าย
ทำไมต้อง Run Local Kibana Instance?
เคยอยากสร้าง Custom Visualizations ที่ไม่ Share กับ Kibana Users อื่น? หรือลอง Kibana Plugin ใหม่โดยไม่ต้อง Install บน Shared Instance? Local Kibana ทำได้ทั้งคู่และมากกว่านั้น
Kibana ไม่ Store อะไร Local และ Default ใช้ Index เดียวเก็บ Config ใน Elasticsearch Cluster หมายความว่า Run Kibana Instances กี่ตัวก็ได้ หรือ Run เฉพาะตอนใช้งาน เนื่องจาก Shared State/Config สร้าง/แก้ไข Visualizations บน Instance หนึ่ง เนื้อหาใหม่จะเห็นบน Kibana Instances ทั้งหมดที่เชื่อม Cluster เดียวกัน ข้อดี: Collaboration ดี ข้อเสีย: Mistake ของ User หนึ่งอาจ Delete/Modify Visualizations ของทุกคน
หากหลาย Users ใช้ Kibana Instance เดียวกัน อาจอยาก Run Own Instance ด้วย Index ต่างกัน เพื่อ Custom Visualizations โดยไม่เสี่ยง User คนอื่นทำลาย หรืออยากลอง Visualizations/Plugins บน Own Install ก่อนให้ Others เข้าถึง Flexibility นี้ประโยชน์มาก มา Setup กัน
ตั้งค่า Kibana
Kibana เชื่อม Elasticsearch เหมือน Client อื่นๆ หาก Local System เชื่อม Elasticsearch ได้ ก็ Run Kibana Local ได้ แนะนำ Dockerized Kibana เพื่อลด Components ติดตั้ง Local และเก็บไว้เป็นระเบียบ ต้องมี Docker และ Docker Compose ติดตั้ง Local
Clone Local-kibana GitHub Repo ไป Directory บน System Config kibana.yml ที่ Included ให้ตรงความต้องการ Copy ของ Version ใน Repo:
--- ## 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"
ใน Config File มี 2 ส่วนสำคัญ: elasticsearch.* Settings และ kibana.index Setting
elasticsearch.* Settings กำหนด Target Elasticsearch Cluster หากอยู่ ObjectRocket Service หาข้อมูลได้ใน Section "Connect" ของ UI ไม่ใช่ก็ตั้งเป็น Elasticsearch Host และ Username/Password ที่ใช้เชื่อม Elasticsearch หมายเหตุ: Kibana ไม่รับ Multiple Elasticsearch Hostnames หากหลาย Hosts ต้องเลือกแค่ตัวเดียวสำหรับ Kibana Instance นี้
ส่วนที่สอง: kibana.index Setting หากอยากใช้ Visualizations/Dashboards เหมือนคนอื่น Leave As Is หากอยาก Custom Settings เอง Uncomment และเปลี่ยนเป็นชื่ออื่น ที่คุณและคนอื่น Identify ได้ว่าเป็น Kibana Settings ของคุณ
Run Kibana
พร้อม Fire Kibana Up หาก Service มี Network Security/ACLs เช็คก่อนว่า Local Machine เชื่อม Elasticsearch ได้ จาก Directory local-kibana รัน:
$ docker-compose build --no-cache $ docker-compose up
Kibana ใช้เวลานานหน่อย Startup และ Configure ตัวเอง แต่สุดท้ายจะเห็น Kibana State เป็น 'green' ใน Terminal พร้อม Connect แล้ว
เชื่อมต่อ (Connecting)
Kibana Container Up แล้ว ไปที่ localhost:5601 บน Browser Kibana ขอ Username/Password อีกครั้ง (User/Pass เดียวกับ Config ข้างบน) แล้ว Load Up หากเปลี่ยน Kibana Index จาก Default ต้อง Setup Index Patterns และ Default Index Pattern ครั้งแรก Login
Wrap Up
แค่นี้ก็ Launch Local Kibana Instance เร็วและง่าย หา Detailed Instructions เพิ่มได้ใน Docs ของเรา