Cloudflare เปิดเผยว่าบริการเก็บล็อกไฟล์ Cloudflare Logs ล่มไปราว 3.5 ชั่วโมงในวันที่ 14 พฤศจิกายน 2024 ส่งผลให้ไฟล์ล็อกสูญหายไป 55% ของไฟล์ล็อกทั้งหมดที่ควรเก็บในช่วงเวลานั้น
บริการ Cloudflare Logs เป็นการเก็บล็อกไฟล์ของเหตุการณ์ต่างๆ ที่เกิดขึ้นในเครือข่าย เนื่องจากเครือข่ายของ Cloudflare ใหญ่มาก ในหนึ่งวันต้องเก็บล็อก 4.5 ล้านล้านครั้ง (นับตามอีเวนต์หรือเหตุการณ์ที่เกิดขึ้นและต้องบันทึกล็อก) และส่งข้อมูลล็อกเหล่านี้ให้กับลูกค้า
กระบวนการจัดการล็อกของ Cloudflare ประกอบด้วยซอฟต์แวร์ 4 ตัว (ทั้งหมดเขียนด้วย Go) ทำงานต่อเนื่องกัน เริ่มจาก Logfwdr รับล็อกจากระบบของ Cloudflare มาส่งต่อเป็นแบตช์, Logreceiver รับข้อมูลแบตช์แล้วนำมาคัดแยกประเภท, Buftee ตัวจัดการบัฟเฟอร์เพื่อแยกงานเป็นส่วนๆ, Logpush นำล็อกในบัฟเฟอร์ไปส่งต่อให้ลูกค้า
สาเหตุของปัญหาครั้งนี้เกิดจากทีม Cloudflare ไปเพิ่มประเภทของข้อมูลให้ Logpush ทำให้ต้องเพิ่มคอนฟิกเข้าไปใน Logfwdr ทราบด้วยว่าเป็นล็อกประเภทไหน แต่เกิดบั๊กในระบบทำให้ค่าคอนฟิกนี้กลายเป็นว่างเปล่า (blank) ทำให้ Logfwdr เข้าใจว่าไม่ต้องเก็บล็อกส่งให้เลย
ทีมงาน Cloudflare ค้นพบปัญหานี้ และแก้ปัญหาได้ตั้งแต่ 5 นาทีแรก แต่ไม่ทันการณ์ เพราะบั๊กคอนฟิกว่างเปล่ากลับสร้างปัญหาที่สอง ไปเรียกโหมด failsafe ของ Logfwdr ให้ทำงาน ส่งอีเวนต์ล็อกของลูกค้าทุกคน แทนที่จะส่งเฉพาะลูกค้าตามค่าคอนฟิกไว้ ฟีเจอร์นี้ถูกสร้างขึ้นมานานตั้งแต่ Cloudflare คนใช้ไม่เยอะ เลยไม่ได้คิดถึงกรณีว่าการเก็บล็อกส่งให้ลูกค้าทุกคนจะสร้างทราฟฟิกมหาศาล ส่งผลสะเทือนต่อไปยังซอฟต์แวร์อื่นๆ ในคิว เช่น Buftee ต้องสร้างบัฟเฟอร์เพิ่ม 40 เท่าจากปกติ ระบบเกิดโอเวอร์โหลด และสุดท้ายทีมงานต้องรีเซ็ตระบบใหม่ทั้งหมด
Cloudflare ยอมรับว่าบั๊กในระบบ failsafe ของ Logfwdr เกิดจากการทดสอบที่ไม่บ่อยพอ เพื่อลองดูว่าระบบใหญ่ของ Cloudflare มีขีดความสามารถในการรองรับเหตุการณ์ผิดพลาดแบบนี้ได้หรือไม่ โดยจุดตายสำคัญอยู่ที่ Buftee ซึ่งควรทำหน้าที่เป็น "บัฟเฟอร์" กันชนความผิดพลาด แต่ตัวมันเองกับพังไปเองเมื่อเจอโหลดจำนวนมากๆ
แนวทางแก้ไขของ Cloudflare คือการทำ overload test ทดสอบปัญหาระบบมีโหลดเพิ่มเยอะๆ เป็นประจำ เพื่อป้องกันไม่ให้ปัญหาแบบนี้เกิดขึ้นได้อีก
ที่มา - Cloudflare