การตรวจสอบกลายเป็นองค์ประกอบที่สำคัญมากในการเติบโตของโซลูชันคลาวด์ เนื่องจากความซับซ้อนของระบบแบบกระจายเพิ่มขึ้น จำเป็นต้องเข้าใจพฤติกรรมของพวกเขา เราต้องการเครื่องมือที่สามารถปรับขนาดได้ซึ่งสามารถรวบรวมข้อมูลจากบริการทั้งหมด และมอบอินเทอร์เฟซเดียวให้กับผู้เชี่ยวชาญด้วยการวิเคราะห์ประสิทธิภาพ การสาธิตข้อผิดพลาด ความพร้อมใช้งาน และบันทึก
เครื่องมือเดียวกันนี้จะต้องมีประสิทธิภาพและประสิทธิผล ในบทความนี้ เราจะดูกลุ่มเทคโนโลยียอดนิยมสองกลุ่ม: EFK (Elasticsearch) และ PLG (Loki) และตรวจสอบสถาปัตยกรรมและความแตกต่าง
กอง EFK
คุณอาจเคยได้ยินเกี่ยวกับ ELK หรือ EFK ยอดนิยมมาแล้ว สแต็กประกอบด้วยส่วนที่แตกต่างกันหลายส่วน: Elasticsearch (พื้นที่จัดเก็บอ็อบเจ็กต์), Logstash หรือ FluentD (การรวบรวมและการรวมบันทึก) และ Kibana สำหรับการแสดงภาพ
ขั้นตอนการทำงานทั่วไปมีลักษณะดังนี้:
ElasticSearch — พื้นที่จัดเก็บอ็อบเจ็กต์แบบกระจายพร้อมการค้นหาและการวิเคราะห์แบบเรียลไทม์ โซลูชันที่ยอดเยี่ยมสำหรับข้อมูลกึ่งโครงสร้าง เช่น บันทึก ข้อมูลจะถูกบันทึกเป็นเอกสาร JSON ซึ่งจัดทำดัชนีแบบเรียลไทม์และกระจายไปยังโหนดคลัสเตอร์ มีการใช้ดัชนีแบบกลับด้านซึ่งประกอบด้วยคำที่ไม่ซ้ำกันทั้งหมดและเอกสารที่เกี่ยวข้องสำหรับการค้นหาข้อความแบบเต็ม ซึ่งจะขึ้นอยู่กับเครื่องมือค้นหา Apache Lucene
คล่องD เป็นตัวรวบรวมข้อมูลที่รวมข้อมูลเมื่อรวบรวมและใช้งาน พยายามจัดระเบียบข้อมูลใน JSON ให้มากที่สุด สถาปัตยกรรมของมันสามารถขยายได้มีมากกว่านั้น
Kibana - เครื่องมือแสดงภาพข้อมูลสำหรับ Elasticsearch ที่มีความสามารถเพิ่มเติมมากมาย เช่น การวิเคราะห์อนุกรมเวลา การวิเคราะห์กราฟ การเรียนรู้ของเครื่อง และอื่นๆ
สถาปัตยกรรมการค้นหาแบบยืดหยุ่น
ข้อมูลคลัสเตอร์ Elasticsearch จะถูกจัดเก็บกระจายไปทั่วโหนดทั้งหมด คลัสเตอร์ประกอบด้วยหลายโหนดเพื่อปรับปรุงความพร้อมใช้งานและความยืดหยุ่น โหนดใดๆ ก็สามารถทำหน้าที่ทั้งหมดของคลัสเตอร์ได้ แต่ในการปรับใช้แบบขยายขนาดใหญ่ โดยทั่วไปโหนดจะได้รับมอบหมายงานเป็นรายบุคคล
ประเภทโหนดคลัสเตอร์:
- โหนดหลัก - จัดการคลัสเตอร์ จำเป็นต้องมีอย่างน้อยสามรายการ หนึ่งรายการใช้งานอยู่เสมอ
- โหนดข้อมูล - เก็บข้อมูลที่จัดทำดัชนีและดำเนินงานต่าง ๆ ด้วย
- โหนดนำเข้า - จัดระเบียบไปป์ไลน์สำหรับการแปลงข้อมูลก่อนการจัดทำดัชนี
- การประสานงานโหนด - การร้องขอการกำหนดเส้นทางการลดขั้นตอนการประมวลผลการค้นหาการประสานงานการจัดทำดัชนีมวล
- โหนดแจ้งเตือน — เปิดตัวงานการแจ้งเตือน
- โหนดการเรียนรู้ของเครื่อง - ประมวลผลงานการเรียนรู้ของเครื่อง
แผนภาพด้านล่างแสดงวิธีการจัดเก็บและจำลองข้อมูลข้ามโหนดเพื่อให้เกิดความพร้อมใช้งานของข้อมูลที่สูงขึ้น
ข้อมูลของแบบจำลองแต่ละรายการจะถูกจัดเก็บไว้ในดัชนีแบบกลับด้าน แผนภาพด้านล่างแสดงให้เห็นว่าสิ่งนี้เกิดขึ้นได้อย่างไร:
การติดตั้ง
สามารถดูรายละเอียดได้
$ helm install efk-stack stable/elastic-stack --set logstash.enabled=false --set fluentd.enabled=true --set fluentd-elastics
กองซ้อน PLG
อย่าแปลกใจถ้าคุณหาคำย่อนี้ไม่เจอ เนื่องจากเป็นที่รู้จักในชื่อ Grafana Loki ไม่ว่าในกรณีใด สแต็กนี้กำลังได้รับความนิยมเนื่องจากใช้โซลูชันทางเทคนิคที่ได้รับการพิสูจน์แล้ว คุณอาจเคยได้ยินเกี่ยวกับ Grafana ซึ่งเป็นเครื่องมือแสดงภาพยอดนิยมอยู่แล้ว ผู้สร้างได้รับแรงบันดาลใจจาก Prometheus พัฒนา Loki ซึ่งเป็นระบบรวบรวมบันทึกประสิทธิภาพสูงที่ปรับขนาดได้ในแนวนอน Loki จัดทำดัชนีเฉพาะข้อมูลเมตา ไม่ใช่ตัววารสาร ซึ่งเป็นโซลูชันทางเทคนิคที่ช่วยให้ใช้งานง่ายและคุ้มต้นทุน
งานพรอมเทล - เอเจนต์สำหรับส่งบันทึกจากระบบปฏิบัติการไปยังคลัสเตอร์ Loki กราฟาน่า เป็นเครื่องมือแสดงภาพตามข้อมูลจากโลกิ
Loki สร้างขึ้นบนหลักการเดียวกันกับ Prometheus ทำให้เหมาะสำหรับการจัดเก็บและวิเคราะห์บันทึก Kubernetes
สถาปัตยกรรมโลกิ
โลกิสามารถทำงานได้ทั้งแบบกระบวนการเดียวหรือหลายกระบวนการ เพื่อให้สามารถปรับขนาดแนวนอนได้
นอกจากนี้ยังสามารถทำงานได้ทั้งเป็นแอปพลิเคชันแบบเสาหินหรือเป็นไมโครเซอร์วิส การรันเป็นกระบวนการเดียวจะมีประโยชน์สำหรับการพัฒนาท้องถิ่นหรือสำหรับการตรวจสอบเล็กน้อย สำหรับการใช้งานทางอุตสาหกรรมและปริมาณงานที่ปรับขนาดได้ ขอแนะนำให้ใช้ตัวเลือกไมโครเซอร์วิส เส้นทางสำหรับการเขียนและการอ่านข้อมูลจะถูกแยกออกจากกัน ดังนั้นจึงสามารถปรับอย่างละเอียดและปรับขนาดได้ตามต้องการ
มาดูสถาปัตยกรรมของระบบรวบรวมบันทึกโดยไม่ต้องลงรายละเอียด:
และนี่คือคำอธิบาย (สถาปัตยกรรมไมโครเซอร์วิส):
ส่วนประกอบ:
งานพรอมเทล — เอเจนต์ที่ติดตั้งบนโหนด (เป็นชุดบริการ) จะลบบันทึกออกจากงานและเข้าถึง Kubernetes API เพื่อรับข้อมูลเมตาที่จะแท็กบันทึก จากนั้นจะส่งบันทึกไปยังบริการหลักของ Loki การแมปข้อมูลเมตารองรับกฎการแท็กเดียวกันกับ Prometheus
ผู้จัดจำหน่าย — ผู้จัดจำหน่ายบริการที่ทำงานเป็นบัฟเฟอร์ ในการประมวลผลบันทึกนับล้านรายการ ระบบจะแพ็คข้อมูลที่เข้ามาและบีบอัดเป็นบล็อกเมื่อมาถึง ซิงก์ข้อมูลหลายแห่งทำงานพร้อมกัน แต่บันทึกที่เป็นของสตรีมข้อมูลที่เข้ามารายการเดียวควรปรากฏในหนึ่งในนั้นสำหรับบล็อกทั้งหมด สิ่งนี้ถูกจัดระเบียบเป็นวงแหวนของ sinks และการแฮชตามลำดับ สำหรับความทนทานต่อข้อผิดพลาดและความซ้ำซ้อน จะทำ n ครั้ง (3 หากไม่ได้กำหนดค่าไว้)
นำเข้า — ผู้รับบริการ บล็อกข้อมูลมาถึงการบีบอัดพร้อมกับเพิ่มบันทึก เมื่อบล็อกมีขนาดเพียงพอ บล็อกจะถูกล้างไปยังฐานข้อมูล ข้อมูลเมตาไปที่ดัชนี และข้อมูลจากบล็อกบันทึกไปที่ Chunks (โดยปกติจะเป็นพื้นที่เก็บข้อมูลอ็อบเจ็กต์) หลังจากการรีเซ็ต ผู้รับจะสร้างบล็อกใหม่ที่จะเพิ่มรายการใหม่
ดัชนี - ฐานข้อมูล, DynamoDB, Cassandra, Google BigTable ฯลฯ
ชิ้น — บล็อกบันทึกในรูปแบบบีบอัด โดยปกติจะจัดเก็บไว้ในที่จัดเก็บอ็อบเจ็กต์ เช่น S3
แบบสอบถาม - เส้นทางการอ่านที่ทำงานสกปรกทั้งหมด โดยจะดูที่ช่วงเวลาและการประทับเวลา จากนั้นจึงดูที่ดัชนีเพื่อค้นหารายการที่ตรงกัน จากนั้นจะอ่านบล็อคข้อมูลและกรองเพื่อให้ได้ผลลัพธ์
ตอนนี้เรามาดูการดำเนินการทุกอย่างกัน
การติดตั้ง
วิธีที่ง่ายที่สุดในการติดตั้งใน Kubernetes คือการใช้ helm เราถือว่าคุณได้ติดตั้งและกำหนดค่าแล้ว (
เพิ่มพื้นที่เก็บข้อมูลและติดตั้งสแต็ก
$ helm repo add loki https://grafana.github.io/loki/charts
$ helm repo update
$ helm upgrade --install loki loki/loki-stack --set grafana.enabled=true,prometheus.enabled=true,prometheus.alertmanager.persistentVolume.enabled=false,prometheus.server.persistentVolume.enabled=false
ด้านล่างนี้เป็นตัวอย่างแดชบอร์ดที่แสดงข้อมูลจากตัววัด Prometheus สำหรับ Etcd และบันทึกพ็อด Loki สำหรับ Etcd
ตอนนี้เรามาหารือเกี่ยวกับสถาปัตยกรรมของทั้งสองระบบและเปรียบเทียบความสามารถระหว่างกัน
การเปรียบเทียบ
ภาษาแบบสอบถาม
Elasticsearch ใช้ภาษาคิวรี Query DSL และ Lucene เพื่อมอบความสามารถในการค้นหาข้อความแบบเต็ม มันเป็นเสิร์ชเอ็นจิ้นที่ได้รับการยอมรับและทรงพลังพร้อมการรองรับผู้ให้บริการในวงกว้าง ด้วยเครื่องมือนี้ คุณสามารถค้นหาตามบริบทและจัดเรียงตามความเกี่ยวข้องได้
อีกด้านหนึ่งของวงแหวนคือ LogQL ซึ่งใช้ใน Loki ซึ่งเป็นผู้สืบทอดของ PromQL (ภาษาคิวรี Prometheus) ใช้แท็กบันทึกเพื่อกรองและเลือกข้อมูลบันทึก คุณสามารถใช้โอเปอเรเตอร์และเลขคณิตตามที่อธิบายไว้ได้
เนื่องจากการสืบค้นในโลกิเชื่อมโยงกับแท็ก จึงเชื่อมโยงกับหน่วยวัดได้ง่าย และด้วยเหตุนี้ จึงจัดระเบียบการตรวจสอบการปฏิบัติงานได้ง่ายขึ้น
ความสามารถในการปรับขนาด
สแต็กทั้งสองสามารถปรับขนาดในแนวนอนได้ แต่ Loki ช่วยให้ง่ายขึ้นเนื่องจากมีเส้นทางการอ่านและเขียนแยกกันและสถาปัตยกรรมไมโครเซอร์วิส Loki สามารถปรับแต่งให้เหมาะกับความต้องการของคุณได้ และสามารถใช้กับข้อมูลบันทึกปริมาณมากได้
การเช่าหลายรายการ
การเช่าหลายคลัสเตอร์เป็นธีมทั่วไปในตัวย่อ OPEX ทั้งสองสแต็กจัดเตรียมการเช่าหลายรายการ Elasticsearch มีหลายอย่าง
ค่าใช้จ่ายของ
โลกิค่อนข้างคุ้มต้นทุนเนื่องจากไม่ได้จัดทำดัชนีข้อมูล มีเพียงเมตาดาต้าเท่านั้น สิ่งนี้บรรลุผลสำเร็จ
ข้อสรุป
สแต็ก EFK สามารถใช้เพื่อวัตถุประสงค์ที่หลากหลาย โดยให้ความยืดหยุ่นสูงสุดและอินเทอร์เฟซ Kibana ที่มีฟีเจอร์หลากหลายสำหรับการวิเคราะห์ การแสดงภาพ และการสืบค้น สามารถปรับปรุงเพิ่มเติมได้ด้วยความสามารถในการเรียนรู้ของเครื่อง
Loki stack มีประโยชน์ในระบบนิเวศของ Kubernetes เนื่องจากมีกลไกการค้นพบข้อมูลเมตา คุณสามารถเชื่อมโยงข้อมูลสำหรับการตรวจสอบตามอนุกรมเวลาใน Grafana และบันทึกได้อย่างง่ายดาย
เมื่อพูดถึงเรื่องต้นทุนและการจัดเก็บบันทึกระยะยาว Loki ถือเป็นจุดเริ่มต้นที่ดีเยี่ยมในโซลูชันระบบคลาวด์
มีทางเลือกอื่นๆ มากมายในตลาด - บางทางเลือกอาจดีกว่าสำหรับคุณ ตัวอย่างเช่น GKE มีการผสานรวม Stackdriver ซึ่งเป็นโซลูชันการตรวจสอบที่ยอดเยี่ยม เราไม่ได้รวมไว้ในการวิเคราะห์ของเราในบทความนี้
อ้างอิง:
https://github.com/grafana/loki/blob/master/docs/overview/comparisons.md https://www.elastic.co/blog/found-elasticsearch-from-the-bottom-up https://www.elastic.co/blog/found-elasticsearch-in-production/
บทความนี้ได้รับการแปลและจัดทำขึ้นสำหรับ Habr โดยพนักงาน
ที่มา: will.com