العربية
  • تحليل ما بعد الحادث
  • خدمة سحابية
  • حادث

تحليل ما بعد الحادث: لم تُعثر على صورة Docker

تقرير الحادث لانقطاع خدمة Logto في 2023-12-17 بسبب فقدان صورة Docker للإنتاج.

Simeng
Simeng
Developer

الملخص

لقد واجهنا انقطاعًا في الخدمة في 2023-12-17 بسبب فقدان الصورة الإنتاجية لـ Logto Docker.

  • وقت الحادث: 2023-12-17 03:56:00 بالتوقيت العالمي
  • مدة الحادث: 18 دقيقة
  • تأثير الخدمة: كانت خدمة Logto السحابية وخدمة Logto الأساسية غير متاحة خلال الحادث.
  • مستوى التأثير: حرج
  • السبب الجذري: تم حذف صورة Docker للإنتاج لـ Logto عن طريق الخطأ. فشلت عملية استعادة الصورة من سجل حاويات GitHub.

الخط الزمني

الوقتالحدث
في وقت مبكر من 2023-12-17 (الوقت المحدد غير معروف)تم تنفيذ سير عمل الاحتفاظ بالصور المؤتمت في GitHub لـ Logto. تم حذف صور الإنتاج logto وlogto-cloud عن طريق الخطأ.
2023-12-17 03:56:00 بالتوقيت العالميأصبحت خدمة Logto السحابية وخدمة Logto الأساسية غير متاحة. تم اكتشاف الحادث بواسطة نظام المراقبة لدينا.
2023-12-17 04:03:00 بالتوقيت العالميتم الاعتراف بالحادث من قبل مهندس الاستجابة الفورية لدينا.
2023-12-17 04:10:00 بالتوقيت العالميإطلاق نشر جديد لخدمة Logto السحابية وخدمة Logto الأساسية بالصورة الأحدث.
2023-12-17 04:15:00 بالتوقيت العالميأصبحت خدمة Logto السحابية وخدمة Logto الأساسية متاحة. تم حل الحادث تلقائيًا.

تحليل الحادث

ما الذي حدث

تم حذف الصور الإنتاجية لخدمة Logto بواسطة سير عمل الاحتفاظ بالصور المؤتمت في GitHub. فشلت الخدمة السحابية في استرداد الصورة من سجل حاويات GitHub وأصبحت غير متاحة.

سجل الخدمة

لماذا حدث ذلك

سير عمل الاحتفاظ بالصور المؤتمت في GitHub حذف الصور الإنتاجية عن طريق الخطأ. تم تصميم سير العمل لحذف جميع الصور القديمة غير الموسومة التي يزيد عمرها عن 3 أيام.

قمنا بوضع علامة prod على الصور الإنتاجية لتحديدها كصور إنتاجية. كلما تم إطلاق نشر إنتاجي جديد، يتم بناء صورة جديدة بعلامة prod ودفعها إلى سجل حاويات GitHub. ستتم إزالة علامة prod من الصورة القديمة بعد بناء ودفع الصورة الجديدة بنجاح. ستصبح الصورة القديمة غير موسومة وسيتم حذفها بواسطة سير عمل الاحتفاظ بالصور المؤتمت في GitHub.

تم بناء صورة خدمة Logto لدعم معماريات متعددة. تم بناء الصورة باستخدام buildx ودفعها إلى سجل حاويات GitHub باستخدام العلم --platform. تم تطبيق جميع العلامات على القائمة الجذرية للمانيفست. تم أيضًا تطبيق علامة prod على القائمة الجذرية للمانيفست. جميع الصور الفرعية المدرجة تحت قائمة المانيفست المتعدد المعماريات لا تزال غير موسومة.

بسبب الافتقار للمراجعة الدقيقة لهيكل العلامة وقائمة المانيفست لصورة Docker، قمنا بتكوين سير العمل المؤتمت للاحتفاظ بالصور لحذف جميع الصور غير الموسومة. قام سير العمل بحذف جميع الصور الفرعية المدرجة تحت القائمة الجذرية للمانيفست للمعماريات المتعددة.

التأثير

تسبب هذا الحادث في أن تكون خدمة Logto السحابية وخدمة Logto الأساسية غير متاحة لمدة حوالي 18 دقيقة. لم يتمكن المستخدمون النهائيون من تسجيل الدخول إلى Logto والوصول إلى تطبيقاتهم العميلة. كما كانت بوابة إدارة Logto السحابية غير متاحة خلال الحادث.

الحل

قمنا بإيقاف سير العمل المؤتمت للاحتفاظ بالصور لـ GitHub ونشر صورة جديدة بعلامة prod إلى سجل حاويات GitHub. تم استرداد الصورة الجديدة بنجاح بواسطة خدمة Logto السحابية وخدمة Logto الأساسية. أصبحت الخدمة متاحة مرة أخرى.

الدروس المستفادة

  • عدم إطلاق سير عمل دون مراجعة واختبار دقيق في بيئة الإنتاج.
  • تجربة تجريبية لأي وظيفة حذف موارد قبل تنفيذها.
  • دائمًا يجب أن يكون هناك خطة بديلة لبيئة الإنتاج.
  • تحديد سياسة احتفاظ بالصور جديدة بعناية.

الإجراءات التصحيحية والوقائية

  • ✅ إيقاف سير العمل المؤتمت للاحتفاظ بالصور على GitHub فورًا.