วันนี้ผมจะมาเขียนบทความเกี่ยวกับการทำระบบ Centralize Log Server กับ Open Source Solution ที่เป็นตัวเลือกอันนึง ที่ผ่าน ๆ มา System Admin หลาย ๆ คนอาจจะคุ้นเคยกับ ELK Stack ซึ่งประกอบไปด้วย Open Source Software ทั้งสิ้น 3 ตัวคือ
- Elastic Search คือ เครื่องมือสำหรับค้นหาข้อมูลชื่อตามเว็บไซต์ผู้พัฒนาแจ้งว่าเป็น Search Engine and Analytic Engine ซึ่งเป็น Data Store ที่สามารถ query ได้ไวมากที่สุดตัวนึงในปัจจุบันเลยมีพื้นฐานมาจาก Apache Lucene เก็บข้อมูลเป็น JSON Object มีการทำ indexing ในทุกฟิลด์เลยทำให้มันสามารถ Query ได้เร็วมว๊ากกกกก (ปล.ถ้าเขียนเวอร์ หรือผิดขออภัยอันนี้เขียนตามความเข้าใจของผมเอง เหอ ๆ ๆ)
- Logstash คือ Software สำหรับเก็บ Log หรือที่เรียกว่า Log Collector จริง ๆ ต้องบอกว่ามันทำได้หลายอย่าง ถ้าเขียนตามเว็บผู้พัฒนาจะต้องเขียนว่าเป็นการประมวลผลข้อมูลแบบสายท่อ = =" เพราะภาษาอังกฤษเขียนว่า Data processing pipeline จ้า แปลตามพจนานุกรมแล้วถึงกับช็อค เอาเป็นว่าความสามารถของมันคือ เก็บรวบรวม parse ค่า และเปลี่ยนแปลงรูปแบบ format ของข้อมูลแล้วกัน
- Kibana คือ Software ที่ใช้สำหรับ query ข้อมูลแล้วนำข้อมูลที่ได้มาสร้างเป็น Dashboard หรือ plot graph ให้นั่นเอง
พอเราผนวกความสามารถของทั้ง 3 โปรแกรมเข้าด้วยกันก็จะเกิดเป็น Solution สำหรับทำ Centralize Log Server สำหรับ Monitor ระบบทั้งหมดที่เรามีนั่นเองครับ
เรื่องของเรื่องคือหัวหน้าผมต้องการให้ทำระบบ Centralize Log Server ขึ้นมาใช้ คราวนี้ผมซึ่งเคยแค่อ่านบทความจากใน Internet แล้วก็ลอง Setup ตามบทความพวกนั้น พอเสร็จเข้าได้ก็ลบทิ้งเพราะไม่ได้ศึกษาจริงจัง แต่ตอนนี้หัวหน้าต้องการให้ทำขึ้นมาจริง ๆ แบบจริงจังด้วย แต่ไม่ได้ทำ ELK Stack นะครับ เขาให้ทำ EFK Stack ซึ่งจะแตกต่างจาก Solution ข้างบนตรงที่ Solution ข้างบน หรือ ELK Stack เป็น Solution ที่เกิดขึ้นจากบริษัทเดียวกันคือบริษัท Elasticsearch Inc. (ซึ่งต้นกำเนิดมาจากการที่ Shay Banon ( (ผู้ก่อตั้ง หรือจะเรียกว่าผู้ร่วมก่อตั้งก็ได้) ) ต้องการเขียน Search Engine สำหรับให้ภรรยาเค้าใช้ในการค้นหาสูตรทำอาหารนั่นเอง) ก็ได้ แต่จริง ๆ แล้ว F ที่เปลี่ยนไปมาจากการเปลี่ยน Logstash มาเป็นโปรแกรมที่ชื่อว่า Fluentd นั่นเองซึ่งตัว Fluentd นั้นก็เป็น Data collector ที่ใช้สำหรับรวบรวมข้อมูลทั้งหมดที่ได้มาให้กลายเป็น Format เดียว เท่าที่อ่านคือเป็น JSON Format นะ
เราก็จะได้ Log ที่อ่านง่ายหน่อยเพราะ JSON เป็นข้อมุลแบบ Key value pair นั่นเอง นอกจากนี้เจ้า Fluentd เนี่ยยังมีความสามารถหลากหลายมาก ผมคิดว่ามากกว่า Logstash เยอะเค้าเลยเลือกตัวนี้มาแทน Logstash นั่นเองครับ
เจ้า Fluentd เนี่ยสามารถทำงานได้กับอุปกรณ์ หรือระบบค่อนข้างจะครอบคลุมกับเทคโนโลยีปัจจุบันนะครับ สามารถรับ Log จากระบบก็ได้ ซึ่งต้องบอกว่าไอ้คำว่าระบบเนี่ย มันครอบคลุมระบบเยอะมากไม่ว่าจะเป็น HTTP access log หรือ error log ข้อมูลจาก tail -f ก็ได้ Cloud Platform อย่าง AWS, Azure, Google Cloud หรือจะเป็นระบบฐานข้อมูลอย่าง MySQL, MongoDB แต่น่าเสียดายยังไม่รองรับ Oracle หรืออาจจะรองรับในรูปแบบอื่นนะครับ อย่างอุปกรณ์เครือข่าย Cisco เนี่ยค้นหาจากหน้าเว็บไม่มี แต่ใช้ร่วมกันได้แต่ต้องไปหาติดตั้ง Plugin เฉพาะครับ แม้กระทั่ง Application Log ยังรองรับเลยครับไม่ว่าจะเป็น Python, Ruby, Perl, PHP, .Net, Scala หรือยี่ห้ออื่นได้หลากหลายเลยครับ ซึ่งนอกจากจะสามารถรองรับ Input ที่หลากหลายแล้วยังสามารถทำตัวเองเป็น Forwarder ได้ด้วยเพื่อทำตัวเองเป็น Relay Log Collector นั่นเองครับ
อีก Feature หลักที่น่าสนใจสำหรับ Fluentd คือ รองรับการทำ Fail over และสามารถทำ HA ได้นั่นเองทำให้ความน่าเชื่อถือสูงถ้าหากเอาไปเทียบกับ Solution อื่น ๆ ครับ
ประเด็นคือที่โดนสั่งมาเนี่ย คนอื่นในทีมได้แค่ไปนั่งอ่านความสามารถมันมาจากเว็บ Official Site แต่ไม่ได้ลงมือทำไง พอผมเข้ามาร่วมทีมเลยกลายเป็นผมต้องเป็นคนแรกที่ต้องลงมือทำและศึกษาจริงจัง เพื่อนำมาประยุกต์ใช้กับหน่วยงาน และน่าจะเป็นโปรเจคที่เอามาวัดความสามารถของผมด้วยเลยในตัวครับ ^ ^ ตื่นเต้นตั้งแต่เข้างานอาทิตย์แรกเลยทีนี้ แล้วจะมาเขียนเพิ่มเติมในส่วนของการติดตั้งแต่ละเครื่องเลยแล้วกันครับ
No comments:
Post a Comment