- LogHouse ขยายจาก 19PiB เป็น ข้อมูลล็อกมากกว่า 100PB ภายใน 1 ปี และเติบโตได้ถึงราว 500 ล้านล้านแถว
- เนื่องจากข้อจำกัดด้านการประมวลผลข้อมูลและปัญหาความไม่มีประสิทธิภาพของ OpenTelemetry(OTel) จึงเปลี่ยนมาใช้ ไปป์ไลน์แบบปรับแต่งเฉพาะ (SysEx) ที่เหมาะกับระบบหลัก
- การเปลี่ยนแปลงนี้ทำให้ ปริมาณการประมวลผลอีเวนต์เพิ่มขึ้น 20 เท่า แต่ยังคงใช้ CPU ต่ำกว่า 10%
- การนำ HyperDX และ ClickStack ของ ClickHouse มาใช้ ช่วยสร้างการผสานรวมระหว่าง UI กับข้อมูล ความยืดหยุ่นด้านสคีมา และสภาพแวดล้อมการสำรวจข้อมูลที่ทรงพลัง
- ด้วยการใช้โมเดล wide events และ high cardinality จึงสามารถเก็บและวิเคราะห์ทุกอีเวนต์ได้โดยไม่ต้องทำ pre-aggregation
เบื้องหลังและการเปลี่ยนแปลง
- LogHouse แพลตฟอร์มบันทึกล็อกภายในสำหรับ ClickHouse Cloud เติบโตเป็นระบบขนาดใหญ่ภายใน 1 ปี โดยปริมาณข้อมูลเพิ่มจาก 19PiB เป็นมากกว่า 100PB และจาก 37 ล้านล้านแถวเป็นเกือบ 500 ล้านล้านแถว
- ในช่วงแรกมีการรวบรวม telemetry ทั้งหมดผ่าน OpenTelemetry(OTel) แต่เมื่ออยู่ในสภาพแวดล้อมข้อมูลขนาดมหาศาล ปัญหาด้านประสิทธิภาพ ข้อจำกัดของทรัพยากร รวมถึง การสิ้นเปลือง CPU และการสูญหายของข้อมูล ระหว่างกระบวนการแปลงข้อมูลก็เริ่มเด่นชัด
ข้อจำกัดของ OTel และเหตุผลที่นำไปป์ไลน์แบบปรับแต่งมาใช้
- ไปป์ไลน์ของ OTel มีความไม่มีประสิทธิภาพสูงมาก เพราะล็อกถูกแปลงเป็น JSON ก่อน แล้วจึงแมปกลับเป็นฟอร์แมตของ OTel ทำให้เกิดการแปลงและการ marshal ซ้ำหลายรอบ
- ในทางปฏิบัติ หากต้องประมวลผล 20 ล้านแถวต่อวินาทีด้วย OTel จะต้องใช้ราว 8,000 CPU cores
- เมื่อทราฟฟิกพุ่งสูง Collector จะโอเวอร์โหลดจนเกิดการดรอปล็อก และทำให้มีข้อมูลบางส่วนถูกรวบรวมไม่ทัน
การนำ SysEx มาใช้และโครงสร้าง
- SysEx(System Tables Exporter) ย้ายข้อมูลจาก system tables ของ ClickHouse ไปยัง LogHouse โดยตรงในชนิดข้อมูลดั้งเดิมโดยไม่ต้องแปลง
- ใช้โครงสร้าง distributed scraping ผ่าน hash ring พร้อม time-delay buffer และวิธี sliding window เพื่อป้องกันข้อมูลตกหล่นและให้เป็นไปตาม SLA ภายใน
- ใช้ภาษา Go และความสามารถแบบคัสตอมของ ClickHouse client เพื่อให้ส่งข้อมูลแบบ byte-to-byte ได้โดยไม่ต้อง marshal ข้อมูล
- เพื่อรองรับสคีมาที่เปลี่ยนแปลงได้ มีการใช้ schema hash และการจัดการสคีมาแบบไดนามิก พร้อมรวมสคีมาหลายเวอร์ชันให้เป็น logical view เดียวด้วย Merge table engine
- รองรับการเก็บข้อมูลจาก memory table แบบ snapshot และสนับสนุนงานวินิจฉัยกับการวิเคราะห์ขั้นสูง
การปรับปรุงด้านประสิทธิภาพและประสิทธิผล
- หลังนำ SysEx มาใช้ OTel Collector ประมวลผลล็อกได้ 2 ล้านรายการต่อวินาทีด้วย CPU 800 ตัว ขณะที่ SysEx ประมวลผลได้ 37 ล้านรายการต่อวินาทีด้วย CPU 70 ตัว
- ประสิทธิภาพที่เพิ่มขึ้นนี้ช่วยลดการใช้ทรัพยากรลงอย่างมาก ป้องกันการสูญหายของอีเวนต์ และรองรับสภาพแวดล้อมแบบเรียลไทม์ได้
บทบาทต่อเนื่องของ OTel
- OTel ยังคงสำคัญในฐานะแพลตฟอร์ม มาตรฐานและเป็นกลางต่อผู้ขาย และยังจำเป็นในกรณีที่บริการล่มหรือเกิดสถานะผิดปกติ
- สามารถจับล็อกได้แม้ในสถานการณ์ crash หรือความผิดปกติที่ SysEx จัดการไม่ได้
- ปัจจุบันมีการตัดล็อกที่ต่ำกว่าระดับ trace ออก และเก็บเฉพาะระดับ info ขึ้นไปเพื่อเพิ่มประสิทธิภาพการใช้ทรัพยากร
การรวม UI กับ HyperDX และ ClickStack
- กำลังค่อย ๆ เปลี่ยนจาก UI แบบคัสตอมบน Grafana เดิม ไปเป็น UI แบบ ClickHouse-native ที่ใช้ HyperDX
- HyperDX รองรับ ไม่ยึดติดกับสคีมา รองรับ Lucene query รวมถึง SQL และเข้ากันได้อย่างสมบูรณ์กับชนิดข้อมูลที่หลากหลายของ ClickHouse
- ข้อมูลจากโครงสร้างตารางที่หลากหลายและจาก exporter แบบคัสตอมก็สามารถถูกรวมเข้า UI เดียวกันได้โดยไม่ต้องเปลี่ยน UI
- ส่วน Grafana ยังคงทำหน้าที่ด้าน metrics แบบอิง Prometheus และแดชบอร์ดคงที่ ทำให้ทั้งสองโซลูชันทำงานเสริมกัน
การยอมรับโมเดล Wide Events และ High Cardinality
- Wide events คือแนวทางที่แต่ละแถวบรรจุบริบทหลากหลาย เช่น query ID, ชื่อ Pod, ข้อมูลเวอร์ชัน ทำให้เก็บข้อมูลทั้งหมดได้โดยไม่ต้อง aggregate ล่วงหน้า
- วิธีนี้ต่างจาก Prometheus และระบบคล้ายกัน เพราะช่วยให้วิเคราะห์เชิงลึกและ query ได้ยืดหยุ่นโดยไม่ต้องกังวลเรื่อง pre-aggregation, ข้อจำกัดของ label หรือ cardinality explosion
- การทำ aggregation ในช่วงเวลาที่วิเคราะห์จริงช่วยให้คุมได้ทั้ง ประสิทธิภาพและต้นทุน แม้อยู่ในสภาพแวดล้อมข้อมูลขนาดใหญ่
การแสดงภาพข้อมูลและความยืดหยุ่นของการ query
- ClickHouse เชื่อมต่อกับ Plotly, Jupyter notebook และเครื่องมือแสดงผลอื่น ๆ ได้ดี จึงนำไปใช้ร่วมกับเครื่องมือ visualization ได้อย่างอิสระ
- นอกจากการสำรวจอย่างรวดเร็วผ่าน HyperDX ที่ใช้ Lucene แล้ว ยังสามารถทำการวิเคราะห์หาสาเหตุเชิงลึกด้วย query ที่มีความสัมพันธ์หรือเงื่อนไขซับซ้อน เช่น SQL และ JOIN ได้โดยตรงใน ClickHouse
การเพิ่มขึ้นของแหล่งข้อมูลแบบ Wide Event ที่หลากหลาย
- kubenetmon: โอเพนซอร์สสำหรับมอนิเตอร์เครือข่าย Kubernetes ใช้วิเคราะห์ทราฟฟิก L3/L4, การเชื่อมต่อ และต้นทุน
- Kubernetes Event Exporter: ใช้งานฟอร์กที่เพิ่ม ClickHouse sink เพื่อติดตามการเปลี่ยนแปลงสถานะของคลัสเตอร์ขนาดใหญ่ และกำลังทดลอง snapshot ของอ็อบเจ็กต์ทั้งหมด
- Control Plane Data, RUM(Real User Monitoring), Istio Access Log และข้อมูลจากหลายเลเยอร์อื่น ๆ ช่วยขยายขอบเขตการตีความและความสามารถในการทำ correlation analysis อย่างมาก
ประเด็นด้านการปฏิบัติการและทิศทางในอนาคต
- แม้ SysEx อาจถูกเปิดเผยในระหว่างการ query ล็อกหรือ metrics แต่ถูกออกแบบให้มีข้อจำกัดหน่วยความจำและลดผลกระทบเมื่อเกิดข้อผิดพลาดให้เหลือน้อยที่สุด
- Zero-impact scraping: กำลังศึกษาวิธีแบบ decoupling เต็มรูปแบบ (เช่น ใช้ plain rewritable disk บน S3) เพื่อกำจัดผลกระทบต่อคลัสเตอร์อย่างถึงราก
- OTel ยังเป็นองค์ประกอบสำคัญสำหรับการเก็บล็อกในช่วงเริ่มต้นบริการหรือในสถานะผิดปกติ แต่เมื่อแนวทาง zero-impact มีเสถียรภาพมากขึ้น การพึ่งพา OTel ก็น่าจะลดลงอีก
วิวัฒนาการและการใช้งาน JSON type ของ ClickHouse
- JSON type เปิดให้ใช้งานแบบ GA อย่างเป็นทางการแล้ว ทำให้สร้าง dynamic columns ตามฟิลด์ รองรับหลายชนิดข้อมูล และรับมือกับ schema explosion ได้ยืดหยุ่นมากขึ้น
- ยังมีข้อจำกัดด้านการ optimize เมื่อ query JSON ที่มีคอลัมน์จำนวนมาก จึงมีการพัฒนาแนวทางอย่างการจัดเก็บคู่ขนานตามรูปแบบ และการยืนยันประโยชน์ใช้สอยของ Map type อีกครั้ง
- เมื่อทำงานร่วมกับ HyperDX ก็สามารถดึงและวิเคราะห์ฟิลด์จาก Map และ JSON ได้อัตโนมัติ และมีแผนจะขยายการใช้งาน JSON ให้กว้างขึ้นในอนาคต
บทสรุปและการเปลี่ยนแปลงเชิงวัฒนธรรม
- ตอนนี้ LogHouse ได้กลายเป็น แพลตฟอร์มสังเกตการณ์หลัก ของการปฏิบัติการ ClickHouse Cloud ตั้งแต่การวิเคราะห์ประสิทธิภาพไปจนถึงการดีบักแบบเรียลไทม์
- จุดเริ่มต้นคือการลดต้นทุน แต่ด้วยเครื่องมือแบบปรับแต่งอย่าง SysEx, การทำงานร่วมกับ OTel และการขยาย UI ที่ยืดหยุ่นบนพื้นฐาน HyperDX ทำให้เกิด การเปลี่ยนผ่านทั้งด้านเทคนิคและวัฒนธรรม
- โมเดลข้อมูลแบบ Wide Event ขนาดใหญ่และมีความแม่นยำสูง มอบ คุณค่าและประสิทธิภาพรูปแบบใหม่ ให้กับงานวิศวกรรม การซัพพอร์ต และการวิเคราะห์ข้อมูลทั้งหมด
- จากประสบการณ์ที่ได้จากสเกลระดับ 100PB และ 500 ล้านล้านแถว บริษัทมีแผนจะเดินหน้านำอนาคตของ observability ต่อไป
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News