...
Content By

Vorapoap Lohwongwatana

เปลี่ยนชีวิตด้วย Elasticsearch และ Elastic Stack


ตอนที่ 1 กรรมกรขอบตาดำพบโลกใหม่

คุณเป็นหนึ่งในผู้ที่ประสบปัญหาเช่นเดียวกันหรือไม่?

  • อยากจะทำระบบค้นข้อมูลเอาแบบระดับน้องๆ Google บ้างได้ไหม เอาแบบที่ตัดคำไทย และมีค้นหาระยะทางในแผนที่ได้ด้วยนะ
  • ระบบอื่นๆแทบจะทำงานไม่ได้ เมื่อคุณต้องคิวรี่รายงานจากฐานข้อมูลขนาดใหญ่ที่ต้องจอยๆกันเป็นสิบๆตาราง
  • ผู้ใช้ของคุณนั่งดูไอค่อน ติ้วๆ หมุนแล้วหมุนอีก ถามคุณว่าเมื่อไหร่ที่รันมันจะออกมาสักที
  • อยากจะแก้ปัญหาด้วยการติดตั้งคลัสเตอร์สำหรับระบบฐานข้อมูล แต่กลัวจะนำมาสร้างปัญหามากกว่า
  • การใช้งาน Aggregation ใน NoSQL Database ซับซ้อนจัง กว่าที่คุณจะสอนน้องๆได้ก็เปลี่ยนงานไปซะละ
  • การตลาดและฝ่ายขายให้คุณคิวรี่ข้อมูลให้อีกแล้ว แต่ละครั้งก็แทบจะไม่เหมือนกันเลย น่าเบื่อมาก
  • ผู้บริหารอยากได้ข้อมูลวิเคราะห์แบบ Real-time ดูได้ทันใจ แต่คุณกลัวจะไปสร้างปัญหาให้ระบบที่ใช้งานอยู่
  • ฮาร์ดแวร์ที่มีมีแต่ปะผุ หมด MA จัดซื้อไม่ทัน จะเอามาใช้ให้สเกลบ้างได้ไหม
  • ตัวมอนิเตอร์ข้อมูล แต่ละเซอร์วิสติดตั้งจุกจิกมาก ไม่มีอะไรที่มันง่ายๆกว่านี้?
  • เซิร์ฟเวอร์ไม่ได้ล่ม เซอร์วิสไม่ได้เดี้ยง แต่ทำไมผลการทำงานมันแปลกๆ จะไปดู Log ตัวไหนดี

เราขอเสนอหุ่นยนต์ดูดฝุ่นรุ่น ES7 ซื้อเดี๋ยวนี้ ฟรี ไม่ต้องจ่ายเงิน! เอ้ยไม่ใช่!

Elastic Stack เครื่องมือระดับเทพสำหรับกรรมกรที่ขอบตาดำทุกท่าน

Elasticsearch และ Elastic Stack คือสิ่งที่ตอบโจทย์ปัญหาทั้งหมดด้านบน นอกจากมันจะทำให้คุณรักมันแล้ว มันยังจะทำให้พนักงานฝ่ายอื่นๆรักคุณมากขึ้นด้วย (หลังจากต้องเกลียดที่ไปสอนให้มันทำเองก่อน)

Elasticsearch เพียงอย่างเดียวใช้ได้ตั้งแต่เป็น Search Engine ที่มีความคล่องตัวมากๆ ปรับค่าทุกอย่างได้ดั่งใจ เรียกใช้งานด้วยคำสั่ง JSON ที่แสนง่ายผ่าน RESTful API หรือจะใช้ร่วมกันใน Elastic Stack ผ่าน Kibana ซึ่งมีความสามารถในการเรียกดูข้อมูลในรูปแบบต่างๆได้ครบครันแถมรูปโฉมสวยงาม โดยจะนำไปวิเคราะห์ข้อมูลธุรกิจระดับ Microsoft Power BI หรือ Tableau ก็ได้แต่ดีกว่าอีกที่ทำได้แบบ Near Real-time ผ่านหน้าบราวเซอร์ หรือจะนำมาใช้วิเคราะห์ประสิทธิภาพของ App ก็ทำได้ (APM) จะเอามาทำ System Monitoring แทน Zabbix ก็ได้ แถมมี Machine Learning มาให้อีกต่างหาก ซึ่งตรวจสอบความผิดปกติ (Abnormality) ได้ทันท่วงที หรืออยากจะสร้าง Kiosk หรือ Wall Screen หน้าจอแบบ War-room ในภาพยนต์ ก็ทำได้ ข้อมูล Real-time ด้วยนะ! อยากจะสเกลเหรอ? ง่ายนิดเดียว เอาเครื่องใหม่มาใส่ไปในวงแลนเดียวกัน ตั้งชื่อคลัสเตอร์ให้เหมือนกัน เดี๋ยวมันคุยกันเองไม่ต้องมีดาวน์ไทม์! อะไรมันจะเทพปานนั้นครับ!

เรียนรู้เพียงแค่ Elastic Stack ก็เหมือนกับคุณกลายร่างเป็นอรชุนพาดศรรอบเดียวฆ่าทหารได้นับร้อย!

ผู้เขียนจะเว่อร์ถึงไหนนี่ เอาจริงๆจังๆหน่อย Elastic Stack หลักๆประกอบด้วย Elasticsearch, Logstash และ Kibana ขอบอกสรรพคุณที่อย่างเป็นทางการสักนิดครับ Elasticsearch เป็นเครื่องมือที่ใช้ในการค้นหาที่สามารถค้นหาแบบ Full-text ได้ด้วย (แบบเดียวกับ Google นั่นแหละ) และยังมาใช้ในการวิเคราะห์ข้อมูลก็ได้ (Data Analysis) Logstash ทำหน้าที่ในการรวบรวม log ในรูปแบบต่างๆและจากแหล่งที่มาต่างๆกัน (Log Aggregator) นำมาดัดแปลง ปรับปรุงด้วยเงื่อนไขบางประการและส่งต่อไปยังระบบเป้าหมายเช่น Elasticsearch ส่วน Kibana ทำงานอยู่ด้านบนของ Elasticsearch มีหน้าที่เอาข้อมูลมาแสดงผล (Data Visualizer) โดยผู้ใช้งานสามารถกำหนดได้เอง ไม่ว่าจะเป็นกราฟ ไดอะแกรมต่างๆ หรือแม้กระทั่งเป็นกราฟฟิกสวยงาม

 

รูบ Elastic Stack จาก https://medium.com/sirisoft/elk-stack-on-docker-container-5459795fb33c

นอกจากสามองค์ประกอบที่กล่าวไปแล้วนั้น Elastic Stack ยังมีน้องใหม่ล่าสุดอีกตัว ที่ชื่อว่า Beats โดย Beats เป็นโปรแกรมเล็กๆที่เรียกว่า Lightweight Agent ติดตั้งอยู่บนโฮสต์เป้าหมาย ทำหน้าที่เก็บข้อมูลที่แตกต่างกันส่งให้กับ Elasticsearch โดยไม่ต้องผ่านหรือผ่าน Logstash ก็ได้

ด้วยองค์ประกอบทั้งหมดด้านบน Elastic Stack จึงมักถูกนำมาใช้ในการตรวจสอบ (Monitoring) การแก้ไขปัญหา (Troubleshooting) และการสร้างความปลอดภัย (Securing) ให้กับระบบไอทีครับ แต่จริงๆแล้ว Elastic Stack ยังสามารถนำไปประยุกต์ใช้งานต่างๆได้อีกหลายอย่าง ดังเช่นตัวอย่างที่กล่าวมาด้านบน นี่เป็นสาเหตุสำคัญที่ทำให้ Elastic Stack เป็นที่นิยมเพิ่มขึ้นอย่างรวดเร็วในหน่วยงานชั้นนำมากมาย

ส่วนใครบ้างที่ใช้ Elasticsearch หรือ Elastic Stack นะเหรอ ก็มีตั้งแต่ Netflix, Stackoverflow, Linkedin, Medium, Agoda, Github, Booking.com, Lazada, Guardian และอื่นๆอีกมากมายนับไม่ถ้วนเลยครับ เว็บของ Elastic.co มีจัดเนื้อหาแยกไว้ต่างหากที่พูดถึง Use-case ของ Elastic Stack

อะไรที่ทำให้ Elasticsearch ประสบความสำเร็จ

ในแง่ของตัว Search Engine เพียงอย่างเดียว Open source ที่ทำงานได้คล้ายๆกับ Elasticsearch อีกตัวก็คือ Apache Solr ซึ่งถึงแม้พื้นฐานเทคโนโลยีค้นหาของทั้งสองระบบจะอยู่บน Apache Lucene เหมือนกัน แต่น่าจะเป็นเพราะความง่ายของ RESTful API ความคล่องตัวในการขยายระบบ(Scaling) และความยืดหยุ่นอีกหลายประการที่ Elasticsearch มีมาตั้งแต่เริ่มต้นในปี 2010 ทำให้ Elasticsearch มีความนิยมมากกว่า ยิ่งไปกว่านั้นจากการที่ Apache Solr เป็นเพียงระบบค้นหา ไม่สามารถใช้ในแง่ Data Analytic ได้ จึงทำให้ Elasticsearch มีฐานผู้ใช้ที่ขนาดใหญ่กว่าครับ

หากมามองในแกนของ Big Data Analytic ผู้เล่นสำคัญก็คือ Apache Hadoop ซึ่งถึงแม้ Apache Hadoop จะมีประสิทธิภาพ ความเร็ว และขีดความสามารถในการทำงานที่เหนือกว่า Elasticsearch อย่างชัดเจน แต่ก็น่าจะเป็นเพราะความซับซ้อนในการใช้งานที่มีมากกว่า Elasticsearch และหลากหลายองค์กรอาจไม่เห็นความจำเป็นที่จะต้องใช้งานที่ซับซ้อนขนาดนั้น Elasticsearch จึงถูกมองเป็นอีกทางเลือกที่เหมาะสมกว่า

 

Elastic Stack Trend

Elastic Stack Trend

จุดสำคัญอีกประการก็คือการที่ Elasticsearch สามารถนำมาประยุกต์ใช้ได้โดยง่าย โดยมีความเร็วในการทำงานที่เหมาะสม จึงสามารถใช้เป็นด่านหน้าในการเข้าถึงระบบที่ซับซ้อนได้ เช่นนำ Elasticsearch ไปทำงานร่วมกับ Apache Hadoop และระบบฐานข้อมูลอื่นๆ ครับ

อยากทดสอบ Elastic Stack จะเริ่มต้นอย่างไรดี

ปัจจุบันบริษัท Elastic NV ซึ่งเป็นทีมงานผู้พัฒนาระบบ Elastic Stack ทั้งหมด เปิดให้บริการ Elastic Cloud สำหรับผู้สนใจให้ทดลองใช้ได้ 14 วัน ซึ่งหลังจากสมัครเสร็จ จะสามารถเลือกได้ว่า จะนำไปติดตั้งบน AWS หรือ Google Cloud จากที่ผู้เขียนทดสอบดู หากติดตั้งด้วยค่าติดตั้งมาตรฐานบน AWS เมื่อสิ้นสุดการทดสอบใช้งานฟรี จะมีค่าใช้จ่ายตกประมาณ 171.72 เหรียญต่อเดือน หรือ 0.24 เหรียญต่อชม. คิดเป็นเงินไทยก็ประมาณเกือบ 6,000 บาทต่อเดือนครับ

 

Elastic Cloud Trial

Elastic Cloud Trial

หลังติดตั้งเสร็จ ผู้ทดสอบจะสามารถส่งข้อมูลขึ้น Elastic Cloud ของตนเอง และตรวจดูข้อมูลที่นำขึ้นไปผ่าน Kibana ได้ทันที หากผู้ทดสอบยังไม่สะดวกในการส่งข้อมูลขึ้นไป ทาง Kibana เองก็มี sample dataset ให้นำมาทดสอบใช้งานก่อนได้

สำหรับผู้ที่สนใจจะติดตั้ง Elasticsearch ลงบนเครื่องของตัวเอง ก็มีตั้งแต่ผ่าน DockerKubenetes, หรือจะดาวน์โหลดไฟล์มาลงเอง ปัจจุบัน Cloud ใหญ่ๆหลายที่ก็มีโปรแกรมช่วยอำนวยความสะดวกในการลงชุดโปรแกรม Elastic Stack ให้

แต่ละข้อมูลตัวอย่างจะสร้าง Index ขึ้นใน Elasticsearch (kibana_sample_data_ecommerce kibana_sample_data_flights kibana_sample_data_logs) พร้อมกับ Dashboard ของแต่ละชุดข้อมูล คุณสามารถนำข้อมูลเหล่านี้ไปศึกษาหรือทดสอบการทำงานกับ Elasticsearch ได้ทันที

 

Sample data — Kibana — Elastic Cloud

Sample Data — Kibana

ในการเรียกใช้งาน Elastic Cloud จากโปรแกรมของตนเอง ก่อนอื่นเราต้องทราบ Elasticsearch Endpoint ของ Elastic Cloud เราเสียก่อน

 

Elastic Cloud Sample Deployment

Sample Deployment — Elastic Cloud

ในการหา Endpoint URL ให้คุณเลือกใช้งานเมนู Deployments ด้านซ้ายมือครับ และกดเลือก Cluster ที่คุณสร้างขึ้น ในกรณีคือ DeckardShaw แล้วให้กดไปที่ Endpoint URL ซึ่งจะได้ URL ในลักษณะนี้

https://67cfd8687901448097dcab63ad23c86b.ap-southeast-1.aws.found.io:9243

ุณสามารถคัดลอก URL นี้ไปวางในบราวเซอร์ บราวเซอร์จะถามรหัสผู้ใช้ และรหัสผ่านของคุณ ซึ่งตัว Elastic Cloud มอบให้คุณตอนสร้าง Cluster สำเร็จก่อนหน้านี้ หากทุกอย่างถูกต้อง คุณจะเห็นข้อมูลรุ่นของ Elasticsearch ตามรูปด้านล่างครับ

 

Elasticsearch Hello World API

Hello World Elasticsearch!

การใช้งาน Kibana เบื้องต้น

คุณสามารถเรียนรู้การใช้งาน Kibana ได้จาก บทความของคุณ Alisara ซึ่งแม้ว่าบทความนี้เขียนมานานแล้ว แต่หน้าจอพื้นฐานในเวอร์ชั่นเก่าๆของ Kibana จะทำให้สามารถเข้าใจ Kibana ได้ง่ายขึ้น กว่าปัจจุบันที่มีเมนูและส่วนประกอบใหม่ๆเพิ่มเติมมากมาย สำหรับส่วนสำคัญที่จำเป็นต่อนักพัฒนาก็คือ Dev Tools ซึ่งจะเป็นตัวไว้ใช้เรียกข้อมูลจาก Elasticsearch API ผ่านรูปแบบ JSON ข้อดีของ Kibana คือ มันจะช่วยไกด์คำสั่งและวิธีใช้งานบางอย่างไว้ให้ ชุดคำสั่งเหล่านี้จะถูกเก็บไว้ในบราวเซอร์ของคุณ และคุณสามารถคัดลอกมันออกมาเก็บเป็นไฟล์ใน text editor ทั่วไปได้

 

Dev Tools in Kibana

Dev Tools in Kibana

กว่าจะมาเป็นหุ่นยนต์ดูดฝุ่น ES7

ในแง่ของความเป็นเทพ Elasticsearch ก็ถือว่าเป็นเทพที่เอาแต่ใจมาก ในการปรับเวอร์ชั่นมาหลายครั้ง มี API หลายอันที่ถูกเลิกใช้ การอัพเกรดระหว่างเวอร์ชั่นก็ไม่ได้จะราบลื่นจนกลิ้งได้ Index ของ Elasticsearch ที่สร้างด้วยเวอร์ชั่นเก่าก็มักจะไม่สามารถอ่านได้ในเวอร์ชั่นใหม่ จึงต้องมีขั้นตอนกรรมวิธีในการ Index ใหม่ แต่หากว่าคุณยังไม่เคยได้ใช้ Elasticsearch จริงจังมาก่อน การที่คุณได้เริ่มที่เวอร์ชั่น 7 นี่ ถือว่าสุดยอดเลย เพราะการเปลี่ยนแปลงที่มันไม่เข้ากันกับเวอร์ชั่นเก่าๆน่าจะเหลือน้อยมากแล้วครับ

นอกจากนี้ความง่ายและความคล่องตัวที่มีมาบางครั้งก็อาจทำให้เราสับสนได้ว่า ทำไมผลลัพท์ของการคิวรี่ถึงไม่เป็นไปอย่างที่เราต้องการ รวมไปถึงว่า เมื่อถึงจุดหนึ่งหลังจากที่เราใช้งานมันอย่างจริงจัง ค่าติดตั้งบางอย่างและสเปคของโฮสต์ก็มีความสำคัญไม่น้อย ซึ่งตรงนี้เราจะมาพูดถึงในตอนถัดๆไปครับ

สำหรับผู้เขียนแล้ว เริ่มใช้งาน Elasticsearch มาตั้งแต่เวอร์ชั่น 2.1 ได้เห็นการเปลี่ยนแปลงไปของ Open source ระดับโลกตัวนี้แล้ว หากเปรียบดั่งความสัมพันธ์ของคนสองคน มีแง่งอนกันบ้าง บางครั้งก็ต้องปรับปรุงตัวกันขนานใหญ่ และเมื่อมองไปที่เส้นทางข้างหน้าที่เราจะเดินไปร่วมกันแล้ว นับวันนับคืนคงมีแต่ความชื่นมื่น “รักเราไม่เก่าเลย” (เน่าจัง)

ขอขอบคุณสำหรับ รูป Elastic Stack สวยๆจากบทความของคุณ Noparat Phairojpattanakul

อ่านบทความอื่นต่อได้ที่  https://medium.com/@vorapoap

 

เกี่ยวกับผู้เขียน

ตำแหน่งงานประจำที่ทำอยู่คือ Online Business Director
Teleinfo Media Public Company Limited
ผู้ให้บริการเว็บไซต์ Thailand YellowPages และ Outsourced Contact Center

พร้อมแบ่งปันประสบการณ์และความรู้ในการทำ Digital Transformation, Solution/Architecture Design, Software Engineering สำหรับองค์กรหรือสถาบันการศึกษาที่สนใจ

 

About Author

custom_html_banner2
Content by Vorapoap Lohwongwatana

Work Experience:
ตำแหน่งงานประจำที่ทำอยู่คือ Online Business Director
Teleinfo Media Public Company Limited
ผู้ให้บริการเว็บไซต์ Thailand YellowPages และ Outsourced Contact Center 

"