مشاركة عبر


تشخيصات عميقة لتطبيقات وخدمات الويب باستخدام Application Insights

توضح هذه المقالة كيفية احتواء Application Insights في دورة DevOps.

لماذا أحتاج إلى Application Insights؟

يراقب تطبيق Application Insights تطبيق الويب قيد التشغيل. يخبرك عن حالات الفشل ومشكلات الأداء ويساعدك على تحليل كيفية استخدام العملاء لتطبيقك. وهو يعمل مع التطبيقات التي تعمل على أنظمة أساسية مثل ASP.NET وJava EE Node.js. تتم استضافته في السحابة أو محليا.

صورة توضح جوانب تعقيد تقديم تطبيقات الويب.

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

يتم تطوير تطبيقات الويب الحديثة في دورة من التسليم المستمر:

  • إصدار ميزة أو تحسين جديد.
  • لاحظ مدى جودة عمله للمستخدمين.
  • تخطيط الزيادة التالية للتطوير استنادا إلى تلك المعرفة.

جزء أساسي من هذه الدورة هو مرحلة المراقبة. توفر "Application Insights" الأدوات اللازمة لمراقبة الأداء والاستخدام لتطبيق ويب.

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

  • الكشف عن حالات الفشل بشكل موثوق.
  • قم بإعلامك على الفور.
  • قدم لك المعلومات اللازمة لتشخيص المشكلة.

يقوم Application Insights بتنفيذ هذه المهام.

من أين تأتي الحشرات؟

تنشأ حالات الفشل في أنظمة الويب عادةً من مشكلات التكوين، أو التفاعلات السيئة بين مكوناتها العديدة. المهمة الأولى عند معالجة حادث موقع مباشر هي تحديد موضع المشكلة. ما هو المكون أو العلاقة السبب؟

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

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

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

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

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

أسئلة

فيما يلي بعض الأسئلة التي يجب طرحها عند تطوير نظام ويب:

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

ما Application Insights؟

صورة تعرض سير عمل أساسي ل Application Insights.

  1. تعمل ميزة Application Insights على إنشاء تطبيقك، وإرسال بيانات عن بُعد حوله أثناء تشغيل التطبيق. إما أنه يمكنك إنشاء Application Insights SDK في التطبيق أو يمكنك تطبيق الأجهزة في وقت التشغيل. الطريقة السابقة أكثر مرونة لأنه يمكنك إضافة بيانات تتبع الاستخدام الخاصة بك إلى الوحدات النمطية العادية.
  2. يتم إرسال بيانات تتبع الاستخدام إلى مدخل Application Insights، حيث يتم تخزينها ومعالجتها. على الرغم من أن Application Insights مستضاف في Azure، إلا أنه يمكنه مراقبة أي تطبيقات ويب، وليس فقط تطبيقات Azure.
  3. يتم تقديم القياس عن بعد لك في شكل مخططات وجداول للأحداث.

هناك نوعان رئيسيان من القياس عن بعد: المثيلات المجمعة، والخام.

  • قد تتضمن بيانات المثيل تقريرا عن طلب تم تلقيه بواسطة تطبيق الويب الخاص بك. يمكنك العثور على تفاصيل الطلب وفحصها باستخدام أداة البحث في مدخل Application Insights. قد يتضمن المثيل بيانات مثل المدة التي استغرقها تطبيقك للاستجابة للطلب وعنوان URL المطلوب والموقع التقريبي للعميل.
  • تتضمن البيانات المجمعة عدد الأحداث لكل وقت وحدة بحيث يمكنك مقارنة معدل الطلبات بأوقات الاستجابة. كما يتضمن متوسطات المقاييس مثل أوقات استجابة الطلب.

الفئات الرئيسية للبيانات هي:

  • الطلبات إلى تطبيقك (عادة طلبات HTTP) مع بيانات على عنوان URL ووقت الاستجابة والنجاح أو الفشل.
  • تبعيات مثل REST ومكالمات SQL التي أجراها تطبيقك، أيضا مع URI وأوقات الاستجابة والنجاح.
  • الاستثناءات، بما في ذلك تتبعات المكدس.
  • بيانات عرض الصفحة، والتي تأتي من مستعرضات المستخدمين.
  • مقاييس مثل عدادات الأداء والمقاييس التي تكتبها بنفسك.
  • الأحداث المخصصة التي يمكنك استخدامها لتعقب أحداث الأعمال.
  • تتبع السجلات المستخدمة في التصحيح.

دراسة حالة: ريال مدريد

تخدم خدمة الويب الخاصة بـ ⁧⁩Real Madrid Football Club⁧⁩ حوالي 450 مليون معجب حول العالم. يمكن للمشجعين الوصول إليه من خلال مستعرضات الويب وتطبيقات النادي للأجهزة المحمولة. يمكن للمشجعين حجز التذاكر والوصول أيضا إلى المعلومات ومقاطع الفيديو حول النتائج واللاعبين والألعاب القادمة. يمكنهم البحث باستخدام عوامل تصفية مثل أرقام الأهداف المسجلة. هناك أيضًا روابط لوسائل التواصل الاجتماعي. تجربة المستخدم مخصصة للغاية وتم تصميمها كتواصل ثنائي الاتجاه لإشراك المشجعين.

الحل هو نظام من الخدمات والتطبيقات على Azure. قابلية التوسع هي مطلب رئيسي. نسبة استخدام الشبكة متغيرة ويمكن أن تصل إلى كميات كبيرة أثناء التطابقات وحولها.

بالنسبة لريال مدريد، من الضروري مراقبة أداء النظام. يوفر Application Insights عرضا شاملا عبر النظام لضمان مستوى خدمة موثوق به وعالي.

يحصل النادي أيضا على فهم متعمق لجماهيره مثل مكان وجودهم (3٪ فقط في إسبانيا)، وما الاهتمام باللاعبين والنتائج التاريخية والألعاب القادمة، وكيفية استجابتهم لنتائج المباراة.

يتم جمع معظم بيانات تتبع الاستخدام هذه تلقائيا دون أي تعليمة برمجية إضافية، ما يبسط الحل ويقلل من التعقيد التشغيلي. بالنسبة لريال مدريد، تتعامل Application Insights مع 3.8 مليار نقطة قياس عن بعد كل شهر.

يستخدم ريال مدريد وحدة Power BI لعرض بيانات تتبع الاستخدام الخاصة به.

لقطة شاشة تعرض طريقة عرض Power BI لبيانات تتبع الاستخدام ل Application Insights.

الكشف الذكي

تعد ⁧⁩ التشخيصات الاستباقية ⁧⁩ ميزة حديثة. بدون أي تكوين خاص بواسطتك، يقوم تطبيق "Application Insights" تلقائيًا باكتشافك وتنبيهك بشأن الزيادات غير العادية في معدلات الفشل في تطبيقك. من الذكي ما يكفي لتجاهل خلفية حالات الفشل العرضية وكذلك الارتفاعات التي تتناسب ببساطة مع زيادة الطلبات.

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

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

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

لقطة شاشة تعرض البريد الإلكتروني من التشخيصات الاستباقية.

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

Live Metrics Stream

قد يكون نشر أحدث إصدار تجربة مقلقة. إذا كانت هناك أي مشاكل، فأنت تريد أن تعرف عنها على الفور بحيث يمكنك التراجع إذا لزم الأمر. يمنحك Live Metrics Stream المقاييس الرئيسية مع زمن انتقال يبلغ حوالي ثانية واحدة.

لقطة شاشة تعرض المقاييس المباشرة.

يتيح لك فحص عينة من أي حالات فشل أو استثناءات على الفور.

لقطة شاشة تعرض أحداث الفشل المباشر.

Application Map

يكتشف Application Map تلقائيا مخطط التطبيق الخاص بك. يضع معلومات الأداء أعلى الخريطة للسماح لك بسهولة بتحديد ازدحامات الأداء والتدفقات الإشكالية عبر بيئتك الموزعة. باستخدام Application Map، يمكنك اكتشاف تبعيات التطبيق على خدمات Azure.

يمكنك فرز مشكلة عن طريق فهم ما إذا كانت مرتبطة بالتعليمات البرمجية أو مرتبطة بالتبعية. من مكان واحد، يمكنك التعمق في تجربة التشخيص ذات الصلة. على سبيل المثال، قد يفشل التطبيق الخاص بك بسبب تدهور الأداء في طبقة SQL. باستخدام Application Map، يمكنك رؤيتها على الفور والتعمق في تجربة SQL Index Advisor أو Query Insights.

لقطة شاشة تعرض خريطة تطبيق.

Application Insights Log Analytics

باستخدام Log Analytics، يمكنك كتابة استعلامات عشوائية بلغة قوية تشبه SQL. يصبح التشخيص عبر مكدس التطبيقات بأكمله سهلا مع توصيل وجهات نظر مختلفة. ثم يمكنك طرح الأسئلة الصحيحة لربط أداء الخدمة بمقاييس الأعمال وتجربة العملاء.

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

لقطة شاشة تعرض استعلام تحليلات ومخطط النتائج.

على سبيل المثال: من السهل:

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

وقال العميل DNN: "قدمت لنا Application Insights الجزء المفقود من المعادلة لتتمكن من دمج البيانات وفرزها والاستعلام فيها وتصفيتها حسب الحاجة. سمح لنا السماح لفريقنا باستخدام براعتهم وخبراتهم في العثور على البيانات باستخدام لغة استعلام قوية بالعثور على رؤى وحل المشكلات التي لم نكن نعلم بوجودها. تأتي الكثير من الإجابات الشيقة من الأسئلة التي تبدأ بـ ⁧⁩"أتساءل عما إذا كان ...".⁧⁩"

تكامل أدوات التطوير

يتكامل Application Insights مع أدوات التطوير.

تكوين Application Insights

يحتوي Visual Studio وEclipse على أدوات لتكوين حزم SDK الصحيحة للمشروع الذي تقوم بتطويره. يوجد أمر قائمة لإضافة Application Insights.

إذا كنت تستخدم إطار عمل لتسجيل التتبع، مثل Log4N أو NLog أو System.Diagnostics.Trace، فستحصل على خيار إرسال السجلات إلى Application Insights جنبا إلى جنب مع بيانات تتبع الاستخدام الأخرى بحيث يمكنك ربط التتبعات بسهولة بالطلبات ومكالمات التبعية والاستثناءات.

البحث عن بعد في Visual Studio

أثناء تطوير ميزة وتصحيحها، يمكنك عرض بيانات تتبع الاستخدام والبحث فيها مباشرة في Visual Studio. يمكنك استخدام نفس مرافق البحث كما هو الحال في مدخل الويب.

عندما يسجل Application Insights استثناء، يمكنك عرض نقطة البيانات في Visual Studio والقفز مباشرة إلى التعليمات البرمجية ذات الصلة.

لقطة شاشة تعرض بحث Visual Studio.

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

عناصر العمل

عندما يتم رفع تنبيه، يمكن لـ Application Insights إنشاء عنصر عمل تلقائيًا في نظام تتبع العمل الخاص بك.