نحن نبحث عن الحالات الشاذة ونتوقع الفشل باستخدام الشبكات العصبية

نحن نبحث عن الحالات الشاذة ونتوقع الفشل باستخدام الشبكات العصبية

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

ما يجب القيام به؟ هذا هو المكان الذي يأتي فيه الذكاء الاصطناعي للإنقاذ. المقال سيكون حول الصيانة الوقائية (الصيانة الوقائية). هذا النهج يكتسب شعبية بسرعة. تمت كتابة عدد كبير من المقالات ، بما في ذلك عن حبري. تستخدم الشركات الكبيرة هذا النهج بقوة وكفاءة للحفاظ على صحة خوادمها. بعد مراجعة عدد كبير من المقالات ، قررنا تجربة هذا النهج. ما الذي جاء منه؟

مقدمة

يتم تشغيل نظام البرنامج المطور عاجلاً أم آجلاً. من المهم للمستخدم أن يعمل النظام دون أعطال. في حالة حدوث حالة طارئة ، يجب القضاء عليها بأقل تأخير.

لتبسيط الدعم الفني لنظام برمجي ، خاصة إذا كان هناك الكثير من الخوادم ، عادةً ما تستخدم برامج المراقبة التي تأخذ مقاييس من نظام برمجي قيد التشغيل ، وتمكن من تشخيص حالتها وتساعد في تحديد سبب الفشل بالضبط. هذه العملية تسمى مراقبة نظام البرمجيات.

نحن نبحث عن الحالات الشاذة ونتوقع الفشل باستخدام الشبكات العصبية

الشكل 1. واجهة مراقبة Grafana

المقاييس هي مؤشرات مختلفة لنظام برمجي أو بيئة تنفيذه أو كمبيوتر مادي يعمل بموجبه النظام مع طابع زمني للحظة التي تم فيها استلام المقاييس. في التحليل الساكن ، تسمى البيانات المترية السلاسل الزمنية. لمراقبة حالة نظام البرنامج ، يتم عرض المقاييس في شكل رسوم بيانية: على طول المحور X - الوقت ، وعلى طول المحور Y - القيم (الشكل 1). يمكن أخذ عدة آلاف من المقاييس من نظام برمجي قيد التشغيل (من كل عقدة). إنها تشكل مساحة المقاييس (سلاسل زمنية متعددة الأبعاد).

نظرًا لإزالة عدد كبير من المقاييس من أنظمة البرامج المعقدة ، تصبح المراقبة اليدوية مهمة صعبة. لتقليل كمية البيانات التي يحللها المسؤول ، تتضمن أدوات المراقبة أدوات لتحديد المشكلات المحتملة تلقائيًا. على سبيل المثال ، يمكنك إعداد مشغل يتم تنشيطه عندما تنخفض المساحة الخالية على القرص عن الحد المحدد. يمكنك أيضًا تشخيص إيقاف تشغيل الخادم تلقائيًا أو تباطؤ خدمة خطير. من الناحية العملية ، تقوم أدوات المراقبة بعمل جيد في اكتشاف حالات الفشل التي حدثت بالفعل أو تحديد الأعراض البسيطة للفشل في المستقبل ، ولكن بشكل عام ، يظل التنبؤ بفشل محتمل أمرًا صعبًا بالنسبة لهم. يتطلب التنبؤ عن طريق التحليل اليدوي للمقاييس مشاركة متخصصين مؤهلين. إنها منخفضة الإنتاجية. يمكن أن تمر معظم حالات الفشل المحتملة دون أن يلاحظها أحد.

في الآونة الأخيرة ، أصبح ما يسمى بالصيانة التنبؤية لأنظمة البرمجيات شائعًا بشكل متزايد بين شركات تطوير برامج تكنولوجيا المعلومات الكبيرة. يتمثل جوهر هذا النهج في إيجاد المشكلات التي تؤدي إلى تدهور النظام في المراحل المبكرة ، قبل أن يفشل ، باستخدام الذكاء الاصطناعي. لا يستثني هذا النهج المراقبة اليدوية للنظام تمامًا. إنها مساعدة لعملية المراقبة ككل.

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

مهمة العثور على الحالات الشاذة لأنظمة البرمجيات لها خصائصها الخاصة. نظريًا ، لكل نظام برمجي ، من الضروري تطوير أو تحسين الأساليب الحالية ، نظرًا لأن البحث عن الحالات الشاذة يعتمد بشكل كبير على البيانات التي يتم إجراؤها فيها ، وتختلف بيانات أنظمة البرامج اختلافًا كبيرًا اعتمادًا على أدوات تنفيذ النظام ، إلى أي جهاز كمبيوتر يعمل عليه.

طرق البحث الشاذة للتنبؤ بفشل نظام البرنامج

بادئ ذي بدء ، تجدر الإشارة إلى أن فكرة التنبؤ بالفشل كانت مستوحاة من المقالة "التعلم الآلي في مراقبة تكنولوجيا المعلومات". لاختبار فعالية النهج مع البحث التلقائي عن الحالات الشاذة ، تم اختيار نظام برمجيات Web-Consolidation ، وهو أحد مشاريع NPO Krista. بالنسبة لذلك ، تم إجراء المراقبة اليدوية مسبقًا وفقًا للمقاييس المستلمة. نظرًا لأن النظام معقد للغاية ، يتم أخذ عدد كبير من المقاييس له: مؤشرات JVM (تحميل جامع القمامة) ، مؤشرات نظام التشغيل الذي يتم تنفيذ الكود بموجبه (الذاكرة الافتراضية ، نسبة تحميل وحدة المعالجة المركزية لنظام التشغيل) ، مؤشرات الشبكة (تحميل الشبكة ) ، والخادم نفسه (حمل وحدة المعالجة المركزية ، والذاكرة) ، ومقاييس wildfly ومقاييس التطبيق الأصلية لجميع الأنظمة الفرعية المهمة.

جميع المقاييس مأخوذة من النظام باستخدام الجرافيت. في البداية ، تم استخدام قاعدة بيانات whisper كحل قياسي لـ grafana ، ولكن مع نمو قاعدة العملاء ، توقف الجرافيت عن المواجهة ، بعد أن استنفد عرض النطاق الترددي للنظام الفرعي لقرص DC. بعد ذلك ، تقرر البحث عن حل أكثر فعالية. تم الاختيار لصالح الجرافيت + بيت النقر، مما جعل من الممكن تقليل الحمل على النظام الفرعي للقرص بترتيب من حيث الحجم وتقليل مساحة القرص التي تشغلها من خمس إلى ست مرات. يوجد أدناه رسم تخطيطي لآلية جمع المقاييس باستخدام الجرافيت + clickhouse (الشكل 2).

نحن نبحث عن الحالات الشاذة ونتوقع الفشل باستخدام الشبكات العصبية

الشكل 2. مخطط لإزالة المقاييس

المخطط مأخوذ من الوثائق الداخلية. يُظهر تبادل البيانات بين grafana (واجهة مستخدم المراقبة التي نستخدمها) والجرافيت. تتم إزالة المقاييس من التطبيق بواسطة برنامج منفصل - جمكسترانس. كما أنه يضعها في الجرافيت.
يحتوي نظام دمج الويب على عدد من الميزات التي تخلق مشاكل للتنبؤ بالفشل:

  1. غالبًا ما يكون هناك تغيير في الاتجاه. هناك إصدارات مختلفة من نظام البرنامج هذا. كل واحد منهم يجلب تغييرات في جزء البرنامج من النظام. وفقًا لذلك ، بهذه الطريقة ، يؤثر المطورون بشكل مباشر على مقاييس هذا النظام ويمكن أن يتسببوا في تغيير الاتجاه ؛
  2. غالبًا ما تتطلب خصوصية التنفيذ ، فضلاً عن أهداف استخدام هذا النظام من قبل العملاء ، حدوث حالات شاذة دون تدهور سابق ؛
  3. النسبة المئوية للشذوذ بالنسبة لمجموعة البيانات بأكملها صغيرة (<5٪) ؛
  4. قد تكون هناك فجوات في الحصول على المؤشرات من النظام. في بعض الفترات القصيرة ، يفشل نظام المراقبة في تلقي المقاييس. على سبيل المثال ، إذا تم تحميل الخادم بشكل زائد. هذا أمر بالغ الأهمية لتدريب الشبكة العصبية. هناك حاجة لسد الثغرات صناعيا ؛
  5. غالبًا ما تكون الحالات التي بها حالات شاذة ذات صلة فقط بيوم / شهر / وقت محدد (موسمية). يحتوي هذا النظام على لائحة واضحة لاستخدام مستخدميه. وفقًا لذلك ، تكون المقاييس ذات صلة فقط بوقت محدد. يمكن استخدام النظام ليس باستمرار ، ولكن فقط في بعض الأشهر: بشكل انتقائي اعتمادًا على السنة. هناك مواقف يمكن أن يؤدي فيها نفس سلوك المقاييس في إحدى الحالات إلى فشل نظام البرنامج ، ولكن ليس في الحالة الأخرى.
    بادئ ذي بدء ، تم تحليل طرق الكشف عن الحالات الشاذة في بيانات المراقبة لأنظمة البرامج. في المقالات حول هذا الموضوع ، مع وجود نسبة صغيرة من الحالات الشاذة بالنسبة لبقية مجموعة البيانات ، يُقترح غالبًا استخدام الشبكات العصبية.

يظهر المنطق الأساسي لإيجاد الحالات الشاذة باستخدام بيانات الشبكة العصبية في الشكل 3:

نحن نبحث عن الحالات الشاذة ونتوقع الفشل باستخدام الشبكات العصبية

الشكل 3. ابحث عن الحالات الشاذة باستخدام شبكة عصبية

بناءً على نتيجة التنبؤ أو استعادة نافذة التدفق الحالي للمقاييس ، يتم حساب الانحراف عن ذلك المستلم من نظام البرنامج قيد التشغيل. في حالة وجود اختلاف كبير بين المقاييس المستلمة من نظام البرنامج والشبكة العصبية ، يمكننا أن نستنتج أن شريحة البيانات الحالية غير طبيعية. ينشأ العدد التالي من المشاكل لاستخدام الشبكات العصبية:

  1. للعمل الصحيح في وضع التدفق ، يجب أن تتضمن بيانات تدريب نماذج الشبكة العصبية البيانات "العادية" فقط ؛
  2. يجب أن يكون لديك نموذج محدث للكشف الصحيح. يمكن أن تؤدي التغييرات في الاتجاه والموسمية في المقاييس إلى عدد كبير من الإيجابيات الخاطئة في النموذج. لتحديثه ، من الضروري تحديد الوقت الذي يكون فيه النموذج قديمًا. إذا تم تحديث النموذج لاحقًا أو في وقت سابق ، فمن المرجح أن يتبعه عدد كبير من الإيجابيات الخاطئة.
    أيضًا ، لا ينبغي لأحد أن ينسى إيجاد ومنع تكرار الإيجابيات الكاذبة. من المفترض أنها تحدث غالبًا في حالات الطوارئ. ومع ذلك ، يمكن أن تكون أيضًا نتيجة خطأ في الشبكة العصبية بسبب عدم كفاية التدريب. من الضروري تقليل عدد الإيجابيات الخاطئة للنموذج. خلاف ذلك ، فإن التنبؤات الخاطئة ستضيع الكثير من وقت المسؤول المخصص لفحص النظام. عاجلاً أم آجلاً ، سيتوقف المسؤول ببساطة عن الاستجابة لنظام المراقبة "المصاب بجنون العظمة".

الشبكة العصبية المتكررة

لاكتشاف الحالات الشاذة في السلاسل الزمنية ، يمكنك التقديم الشبكة العصبية المتكررة مع ذاكرة LSTM. المشكلة الوحيدة هي أنه لا يمكن تطبيقه إلا على السلاسل الزمنية التي يمكن التنبؤ بها. في حالتنا ، ليست كل المقاييس متوقعة. يوضح الشكل 4 محاولة تطبيق RNN LSTM لسلسلة زمنية.

نحن نبحث عن الحالات الشاذة ونتوقع الفشل باستخدام الشبكات العصبية

الشكل 4. مثال على تشغيل شبكة عصبية متكررة مع خلايا ذاكرة LSTM

كما يتضح من الشكل 4 ، تمكنت RNN LSTM من التعامل مع البحث عن شذوذ في هذه الفترة الزمنية. عندما يكون للنتيجة خطأ تنبؤ كبير (متوسط ​​الخطأ) ، فقد حدث بالفعل شذوذ من حيث المؤشرات. من الواضح أن استخدام RNN LSTM واحد لن يكون كافيًا ، لأنه قابل للتطبيق على عدد صغير من المقاييس. يمكن استخدامها كوسيلة مساعدة لإيجاد الحالات الشاذة.

Autoencoder للتنبؤ بالفشل

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

نحن نبحث عن الحالات الشاذة ونتوقع الفشل باستخدام الشبكات العصبية

الشكل 5. مثال على عمل المشفر التلقائي

تتدرب أجهزة التشفير التلقائي على البيانات العادية ثم تجد شيئًا غير طبيعي في البيانات التي يتم إدخالها في النموذج. فقط ما تحتاجه لهذه المهمة. يبقى فقط اختيار أي من أجهزة التشفير التلقائي مناسب لهذه المهمة. أبسط شكل معماريًا من المشفر التلقائي هو شبكة عصبية أمامية غير متكررة ، والتي تشبه إلى حد بعيد متعدد الطبقات المستقبلات (متعدد الطبقات ، MLP) ، مع طبقة إدخال ، وطبقة إخراج ، وواحدة أو أكثر من الطبقات المخفية التي تربطهم.
ومع ذلك ، فإن الاختلافات بين أجهزة التشفير التلقائي و MLPs هي أنه في وحدة التشفير التلقائي ، تحتوي طبقة الإخراج على نفس عدد العقد مثل طبقة الإدخال ، وبدلاً من تعلم التنبؤ بالقيمة المستهدفة Y التي قدمها الإدخال X ، يتعلم المشفر التلقائي إعادة البناء X الخاصة بها. لذلك ، تعد أجهزة التشفير التلقائي نماذج تعليمية غير خاضعة للإشراف.

تتمثل مهمة وحدة التشفير التلقائي في العثور على مؤشرات الوقت r0 ... rn المقابلة للعناصر الشاذة في متجه الإدخال X. ويتحقق هذا التأثير من خلال البحث عن خطأ تربيعي.

نحن نبحث عن الحالات الشاذة ونتوقع الفشل باستخدام الشبكات العصبية

الشكل 6. المشفر التلقائي المتزامن

تم تحديد وحدة التشفير التلقائي هندسة متزامنة. مزاياه: القدرة على استخدام وضع المعالجة المتدفقة وعدد أقل نسبيًا من معلمات الشبكة العصبية مقارنة بالبنيات الأخرى.

آلية التقليل الإيجابية الكاذبة

نظرًا لحقيقة ظهور حالات طوارئ مختلفة ، وحالة التدريب غير الكافي للشبكة العصبية ممكنة أيضًا ، بالنسبة لنموذج الكشف عن الشذوذ المطور ، فقد تقرر أنه من الضروري تطوير آلية لتقليل الإيجابيات الخاطئة. تعتمد هذه الآلية على قاعدة نموذجية يصنفها المسؤول.

خوارزمية التحويل الديناميكي للجدول الزمني (خوارزمية DTW ، من تزييف الوقت الديناميكي باللغة الإنجليزية) تسمح لك بالعثور على التطابق الأمثل بين التسلسلات الزمنية. تم استخدامه لأول مرة في التعرف على الكلام: يستخدم لتحديد كيفية تمثيل إشارتين للكلام نفس العبارة المنطوقة الأصلية. بعد ذلك ، وجد أنه يستخدم في مناطق أخرى.

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

نتيجة لذلك ، بناءً على الأساليب الموصوفة أعلاه للشبكات العصبية ، تم إنشاء برنامج تجريبي للتنبؤ بإخفاقات نظام دمج الويب. كان الهدف من هذا البرنامج ، باستخدام الأرشيف الحالي لبيانات المراقبة والمعلومات حول الإخفاقات التي حدثت بالفعل ، لتقييم كفاءة هذا النهج لأنظمة البرامج لدينا. مخطط البرنامج مبين أدناه ، في الشكل 7.

نحن نبحث عن الحالات الشاذة ونتوقع الفشل باستخدام الشبكات العصبية

الشكل 7. مخطط التنبؤ بالفشل على أساس تحليل مساحة المقاييس

يمكن تمييز كتلتين رئيسيتين في الرسم التخطيطي: البحث عن فترات زمنية غير طبيعية في تدفق بيانات المراقبة (المقاييس) وآلية تقليل الإيجابيات الخاطئة. ملاحظة: لأغراض تجريبية ، يتم الحصول على البيانات عبر اتصال JDBC من قاعدة البيانات التي سيخزنها الجرافيت فيها.
فيما يلي واجهة نظام المراقبة الناتج (الشكل 8).

نحن نبحث عن الحالات الشاذة ونتوقع الفشل باستخدام الشبكات العصبية

الشكل 8. واجهة نظام الرصد التجريبي

تعرض الواجهة النسبة المئوية للشذوذ وفقًا للمقاييس المستلمة. في حالتنا ، يتم محاكاة عملية الاستحواذ. لدينا بالفعل جميع البيانات لعدة أسابيع ونقوم بتحميلها تدريجيًا لاختبار الحالة مع وجود حالة شاذة تؤدي إلى الفشل. يعرض شريط الحالة السفلي النسبة المئوية الإجمالية لحالات شذوذ البيانات في وقت معين ، والتي يتم تحديدها باستخدام وحدة التشفير التلقائي. يتم أيضًا عرض نسبة مئوية منفصلة للمقاييس التنبؤية ، والتي يتم حسابها بواسطة RNN LSTM.

مثال على اكتشاف الشذوذ بواسطة مؤشرات وحدة المعالجة المركزية باستخدام الشبكة العصبية RNN LSTM (الشكل 9).

نحن نبحث عن الحالات الشاذة ونتوقع الفشل باستخدام الشبكات العصبية

الشكل 9. كشف LSTM RNN

حالة بسيطة نوعًا ما ، في الأساس حالة خارجية طبيعية ، ولكنها تؤدي إلى فشل النظام ، تم حسابها بنجاح باستخدام RNN LSTM. مؤشر الشذوذ في هذه الفترة الزمنية هو 85-95٪ ، كل شيء فوق 80٪ (يتم تحديد العتبة تجريبيا) يعتبر شذوذ.
مثال على اكتشاف الشذوذ حيث فشل النظام في التمهيد بعد التحديث. تم اكتشاف هذا الموقف بواسطة وحدة التشفير التلقائي (الشكل 10).

نحن نبحث عن الحالات الشاذة ونتوقع الفشل باستخدام الشبكات العصبية

الشكل 10. مثال على الكشف عن المشفر التلقائي

كما ترى من الشكل ، فإن PermGen عالق في مستوى واحد. اعتقد المشفر التلقائي أن هذا كان غريبًا لأنه لم ير شيئًا مثله من قبل. هنا يحافظ الشذوذ على 100٪ حتى يعود النظام إلى حالة العمل. يتم عرض القيمة الشاذة لجميع المقاييس. كما ذكرنا سابقًا ، لا يعرف المشفر التلقائي كيفية توطين الحالات الشاذة. يتم استدعاء المشغل لأداء هذه الوظيفة في هذه المواقف.

اختتام

تم تطوير "Web-Consolidation" لأجهزة الكمبيوتر الشخصية منذ أكثر من عام. النظام في حالة مستقرة إلى حد ما ، وعدد الحوادث المسجلة منخفض. ومع ذلك ، كان من الممكن العثور على حالات شاذة تؤدي إلى فشل من 5 إلى 10 دقائق قبل حدوث الفشل. في عدد من الحالات ، سيساعد الإخطار المسبق بالفشل في توفير الوقت المجدول المخصص لأعمال "الإصلاح".

بناءً على التجارب التي تم إجراؤها ، من السابق لأوانه استخلاص النتائج النهائية. حتى الآن ، النتائج غير متسقة. من ناحية أخرى ، من الواضح أن الخوارزميات القائمة على الشبكات العصبية قادرة على إيجاد شذوذ "مفيد". من ناحية أخرى ، تبقى نسبة كبيرة من الإيجابيات الكاذبة ، ولا يمكن اكتشاف جميع الحالات الشاذة التي اكتشفها أخصائي مؤهل في الشبكة العصبية. تشمل العيوب حقيقة أن الشبكة العصبية تتطلب الآن تدريبًا مع معلم للتشغيل العادي.

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

أعبر عن امتناني للزملاء الذين ساعدوني في كتابة هذه المقالة والحفاظ عليها: فيكتور فيربتسكي وسيرجي فينوغينوف.

المصدر: www.habr.com

إضافة تعليق