مراقبة مثيلات App Service باستخدام التحقق من الصحة
إشعار
بدءا من 1 يونيو 2024، يمكن لتطبيقات App Service التي تم إنشاؤها حديثا إنشاء اسم مضيف افتراضي فريد يستخدم اصطلاح <app-name>-<random-hash>.<region>.azurewebsites.net
التسمية . تظل أسماء التطبيقات الحالية دون تغيير. على سبيل المثال:
myapp-ds27dh7271aah175.westus-01.azurewebsites.net
لمزيد من المعلومات، راجع اسم المضيف الافتراضي الفريد لمورد App Service.
توضح هذه المقالة كيفية استخدام التحقق من الصحة في مدخل Microsoft Azure لمراقبة مثيلات App Service. يزيد التحقق من الصحة من توفر التطبيق الخاص بك عن طريق إعادة توجيه الطلبات بعيدا عن المثيلات غير الصحية واستبدال المثيلات إذا ظلت غير صحية. وهو يفعل ذلك عن طريق اختبار اتصال تطبيق الويب الخاص بك كل دقيقة، عبر مسار تختاره.
لاحظ أن /api/health هو مجرد مثال. لا يوجد مسار فحص صحة افتراضي. يجب التأكد من أن المسار الذي تختاره هو مسار صالح موجود داخل التطبيق الخاص بك.
كيفية عمل فحص الصحة
- عند تحديد مسار على تطبيقك، تقوم Health check ب pings المسار على جميع مثيلات تطبيق App Service الخاص بك على فترات زمنية مدتها دقيقة واحدة.
- إذا لم يستجب تطبيق ويب يعمل على مثيل معين برمز الحالة بين 200 و299 (شامل) بعد 10 طلبات، فإن App Service تحدد أن المثيل غير سليم ويزيله من موازن التحميل لتطبيق الويب. العدد المطلوب من الطلبات الفاشلة لمثيل يعتبر غير سليم قابل للتكوين إلى طلبين كحد أدنى.
- بعد إزالة المثيل، يستمر فحص الصحة في اختبار اتصاله. إذا بدأ المثيل في الاستجابة برمز الحالة الصحية (200-299)، إرجاع المثيل إلى موازن التحميل.
- إذا ظل تطبيق الويب الذي يعمل على مثيل غير سليم لمدة ساعة واحدة، يتم استبدال المثيل بأخرى جديدة.
- عند التوسع، تقوم App Service باختبار الاتصال على مسار التحقق من الصحة للتأكد من أن المثيلات الجديدة جاهزة.
إشعار
- التحقق من الصحة لا يتبع عمليات إعادة التوجيه 302.
- على الأكثر، سيتم استبدال مثيل واحد في الساعة، بثلاثة مثيلات كحد أقصى يوميا لكل خطة App Service.
- إذا كان فحص الصحة يرسل الحالة
Waiting for health check response
، فمن المحتمل أن يفشل الفحص بسبب رمز حالة HTTP 307، والذي يمكن أن يحدث إذا تم تمكين إعادة توجيه HTTPS ولكن تمHTTPS Only
تعطيله.
تمكين التحقق من الصحة
- لتمكين التحقق من الصحة، استعرض للوصول إلى مدخل Microsoft Azure وحدد تطبيق App Service.
- ضمن Monitoring، حدد Health check.
- حدد تمكين وتوفير مسار URL صالح للتطبيق الخاص بك، مثل
/health
أو/api/health
. - حدد حفظ.
إشعار
- يجب توسيع نطاق خطة App Service إلى مثيلين أو أكثر للاستفادة بشكل كامل من التحقق من الصحة.
- يجب أن يتحقق مسار التحقق من الصحة من المكونات المهمة للتطبيق الخاص بك. على سبيل المثال، إذا كان التطبيق الخاص بك يعتمد على قاعدة بيانات ونظام مراسلة، يجب أن تتصل نقطة نهاية التحقق من الصحة بهذه المكونات. إذا تعذر على التطبيق الاتصال بمكون مهم، فيجب أن يرجع المسار رمز استجابة على مستوى 500 للإشارة إلى أن التطبيق غير صحي. أيضا، إذا لم يرجع المسار استجابة في غضون دقيقة واحدة، فإن اختبار اختبار اختبار السلامة يعتبر غير صحي.
- عند تحديد مسار التحقق من الصحة، تأكد من تحديد مسار يقوم بإرجاع رمز حالة 200 فقط عند تجهيز التطبيق بالكامل.
- لاستخدام التحقق من الصحة على تطبيق الوظائف، يجب عليك استخدام خطة استضافة متميزة أو مخصصة.
- يمكن العثور على تفاصيل حول التحقق من الصحة على تطبيقات الوظائف هنا: مراقبة تطبيقات الوظائف باستخدام التحقق من الصحة.
تنبيه
تعيد تغييرات تكوين التحقق من الصحة تشغيل تطبيقك. لتقليل التأثير على تطبيقات الإنتاج، نوصي بتكوين فتحات التقسيم المرحلي والتبديل إلى الإنتاج.
التكوين
بالإضافة إلى تكوين خيارات التحقق من الصحة، يمكنك أيضاً تكوين إعدادات التطبيق التالية:
اسم إعداد التطبيق | القيم المسموح بها | الوصف |
---|---|---|
WEBSITE_HEALTHCHECK_MAXPINGFAILURES |
2 - 10 | العدد المطلوب من الطلبات الفاشلة لمثيل ما ليتم اعتباره غير صحي وإزالته من موازن التحميل. على سبيل المثال، عند تعيين هذا إلى 2 ، تتم إزالة المثيلات الخاصة بك بعد فشل اختبار الاتصال 2. (القيمة الافتراضية هي 10 .) |
WEBSITE_HEALTHCHECK_MAXUNHEALTHYWORKERPERCENT |
1 - 100 | بشكل افتراضي، لتجنب الإرباك في المثيلات السليمة المتبقية، لن يتم استبعاد أكثر من نصف المثيلات من موازن التحميل في كل مرة. على سبيل المثال، إذا تم تحجيم خطة App Service إلى أربعة مثيلات وثلاثة غير سليمة، يتم استبعاد اثنين. ولا يزال المثيلان الآخران (أحدهما سليم والآخر غير سليم) يتلقىان الطلبات. في سيناريو تكون فيه جميع المثيلات غير صحية، لا يتم استبعاد أي منها. لتجاوز هذا السلوك، قم بتعيين إعداد التطبيق هذا إلى قيمة بين 1 و 100 . تعني القيمة الأعلى إزالة مثيلات أكثر غير صحية. (القيمة الافتراضية هي 50 .). |
المصادقة والأمان
يتكامل التحقق من الصحة مع ميزات مصادقة خدمة التطبيقات والتخويل. لا توجد إعدادات أخرى مطلوبة إذا تم تمكين ميزات الأمان هذه.
إذا كنت تستخدم نظام المصادقة الخاص بك، يجب أن يسمح مسار التحقق من الصحة بالوصول المجهول. لتوفير الأمان لنقطة نهاية التحقق من الصحة، يجب أولا استخدام ميزات مثل قيود IP أو شهادات العميل أو شبكة ظاهرية لتقييد الوصول إلى التطبيق. بمجرد أن يكون لديك هذه الميزات في مكانها، يمكنك مصادقة طلب التحقق من الصحة عن طريق فحص العنوان x-ms-auth-internal-token
والتحقق من أنه يطابق تجزئة SHA256 لمتغير WEBSITE_AUTH_ENCRYPTION_KEY
البيئة . إذا كانت متطابقة، فإن طلب التحقق من الصحة صالح وينشأ من App Service.
إشعار
بالنسبة لمصادقة Azure Functions، تحتاج الدالة التي تعمل كنقطة نهاية التحقق من الصحة إلى السماح بالوصول المجهول.
using System;
using System.Security.Cryptography;
using System.Text;
/// <summary>
/// Method <c>HeaderMatchesEnvVar</c> returns true if <c>headerValue</c> matches WEBSITE_AUTH_ENCRYPTION_KEY.
/// </summary>
public bool HeaderMatchesEnvVar(string headerValue)
{
var sha = SHA256.Create();
string envVar = Environment.GetEnvironmentVariable("WEBSITE_AUTH_ENCRYPTION_KEY");
string hash = Convert.ToBase64String(sha.ComputeHash(Encoding.UTF8.GetBytes(envVar)));
return string.Equals(hash, headerValue, StringComparison.Ordinal);
}
إشعار
x-ms-auth-internal-token
لا يتوفر العنوان إلا على App Service لنظام التشغيل Windows.
المثيلات
بمجرد تمكين التحقق من الصحة، يمكنك إعادة تشغيل حالة مثيلات التطبيق ومراقبتها من علامة تبويب المثيلات. تعرض علامة تبويب المثيلات اسم المثيل وحالة مثيل هذا التطبيق. يمكنك أيضا إعادة تشغيل المثيل يدويا من علامة التبويب هذه.
إذا كانت حالة مثيل التطبيق الخاص بك "غير صحية"، يمكنك إعادة تشغيل المثيل يدويا باستخدام زر إعادة التشغيل في الجدول. ضع في اعتبارك أن أي تطبيقات أخرى مستضافة على نفس خطة App Service مثل المثيل ستتأثر أيضا بإعادة التشغيل. إذا كانت هناك تطبيقات أخرى تستخدم نفس خطة App Service مثل المثيل، يتم سردها على شفرة الفتح من زر إعادة التشغيل.
إذا قمت بإعادة تشغيل المثيل وفشلت عملية إعادة التشغيل، منحك خيار استبدال العامل. (يمكن استبدال مثيل واحد فقط في الساعة.) سيؤثر هذا أيضا على أي تطبيقات تستخدم نفس خطة App Service.
بالنسبة لتطبيقات Windows، يمكنك أيضا عرض العمليات عبر مستكشف العمليات. يمنحك هذا مزيدا من الرؤى حول عمليات المثيل، بما في ذلك عدد مؤشرات الترابط والذاكرة الخاصة وإجمالي وقت وحدة المعالجة المركزية.
جمع المعلومات التشخيصية
بالنسبة لتطبيقات Windows، لديك خيار جمع معلومات التشخيص على علامة التبويب فحص الصحة. يؤدي تمكين مجموعة التشخيص إلى إضافة قاعدة المعالجة التلقائية التي تنشئ تفريغ الذاكرة للمثيلات غير الصحية وحفظها في حساب تخزين معين. يؤدي تمكين هذا الخيار إلى تغيير تكوينات المعالجة التلقائية. إذا كانت هناك قواعد معالجة تلقائية موجودة، نوصي بإعداد ذلك من خلال تشخيصات App Service.
بمجرد تمكين مجموعة التشخيص، يمكنك إنشاء حساب تخزين أو اختيار حساب موجود لملفاتك. يمكنك فقط تحديد حسابات التخزين في نفس المنطقة مثل التطبيق الخاص بك. ضع في اعتبارك أن الحفظ يعيد تشغيل التطبيق الخاص بك. بعد الحفظ، إذا تم العثور على مثيلات الموقع غير سليمة بعد عمليات اختبار اتصال مستمرة، يمكنك الانتقال إلى مورد حساب التخزين وعرض تفريغ الذاكرة.
مراقبة
بعد توفير مسار التحقق من الصحة للتطبيق الخاص بك، يمكنك مراقبة صحة موقعك باستخدام Azure Monitor. من شفرة Health check في المدخل، حدد Metrics في شريط الأدوات العلوي. يؤدي هذا إلى فتح شفرة جديدة حيث يمكنك رؤية محفوظات حالة التحقق من صحة الموقع وإنشاء قاعدة تنبيه جديدة. يجمع مقياس حالة التحقق من الصحة عمليات اختبار الاتصال الناجحة وفشل العرض فقط عندما يعتبر المثيل غير سليم استنادا إلى قيمة عتبة موازنة تحميل التحقق من الصحة التي تم تكوينها. بشكل افتراضي، يتم تعيين هذه القيمة إلى 10 دقائق، لذلك يستغرق الأمر 10 عمليات اتصال متتالية (1 في الدقيقة) لمثيل معين ليتم اعتباره غير صحي وعندئذ فقط سوف ينعكس على المقياس. لمزيد من المعلومات حول مراقبة مواقعك، راجع حصص Azure App Service النسبية والتنبيهات.
القيود
- يمكن تمكين التحقق من الصحة لخطط خدمة التطبيقات المجانية والمشتركة، بحيث يمكنك الحصول على مقاييس على صحة الموقع وإعداد التنبيهات. ومع ذلك، نظرا لعدم إمكانية توسيع المواقع المجانية والمشتركة، فلن يتم استبدال المثيلات غير السليمة. يجب عليك التوسع إلى المستوى الأساسي أو أعلى حتى تتمكن من التوسع إلى مثيلين أو أكثر والحصول على الفائدة الكاملة من فحص الصحة. يوصى بذلك للتطبيقات التي تواجه الإنتاج لأنها تزيد من توفر التطبيق وأدائه.
- يمكن أن تحتوي خطة App Service على مثيل واحد غير سليم يتم استبداله في الساعة كحد أقصى، وعلى الأكثر ثلاثة مثيلات في اليوم.
- هناك حد غير قابل للتكوين على إجمالي عدد المثيلات التي تم استبدالها بفحص الصحة لكل وحدة مقياس. إذا تم الوصول إلى هذا الحد، فلن يتم استبدال مثيلات غير صحية. تتم إعادة تعيين هذه القيمة كل 12 ساعة.
الأسئلة الشائعة
ماذا يحدث إذا كان تطبيقي يعمل على مثيل واحد؟
إذا تم تحجيم تطبيقك إلى مثيل واحد فقط وأصبح غير سليم، فلن تتم إزالته من موازن التحميل لأن ذلك سيؤدي إلى تعطل تطبيقك بالكامل. ومع ذلك، بعد ساعة واحدة من pings غير السليمة المستمرة، يتم استبدال المثيل. توسيع نطاق إلى مثيلين أو أكثر للحصول على فائدة إعادة التوجيه من التحقق من الصحة. إذا كان تطبيقك يعمل على مثيل واحد، فلا يزال بإمكانك استخدام ميزة مراقبة التحقق من الصحة لتتبع صحة التطبيق الخاص بك.
لماذا لا تظهر طلبات فحص الحالة في سجلات خادم الويب؟
يتم إرسال طلبات فحص الحالة إلى موقعك داخليًا، لذلك لن يظهر الطلب في سجلات خادم الويب. يمكنك إضافة عبارات السجل في التعليمات البرمجية للتحقق من الصحة للاحتفاظ بسجلات عند اختبار اتصال مسار التحقق من الصحة.
هل يتم إرسال طلبات التحقق من الصحة عبر HTTP أو HTTPS؟
في App Service لنظامي التشغيل Windows وLinux، يتم إرسال طلبات التحقق من الصحة عبر HTTPS عند تمكين HTTPS فقط على الموقع. وإلا، يتم إرسالها عبر HTTP.
هل تتبع Health check عمليات إعادة التوجيه المكونة للتعليمات البرمجية للتطبيق بين المجال الافتراضي والمجال المخصص؟
لا، ميزة التحقق من الصحة pings مسار المجال الافتراضي لتطبيق الويب. إذا كان هناك إعادة توجيه من المجال الافتراضي إلى مجال مخصص، فلن يكون رمز الحالة الذي يقوم التحقق من الصحة بإرجاعه 200. ستكون إعادة توجيه (301)، والتي تشير إلى أن العامل غير سليم.
ماذا لو كان لدي تطبيقات متعددة على نفس خطة App Service؟
ستتم دائما إزالة المثيلات غير السليمة من تدوير موازن التحميل بغض النظر عن التطبيقات الأخرى على خطة App Service (حتى النسبة المئوية المحددة في WEBSITE_HEALTHCHECK_MAXUNHEALTHYWORKERPERCENT
). عندما يظل أحد التطبيقات على مثيل غير سليم لأكثر من ساعة واحدة، لن يتم استبدال المثيل إلا إذا كانت جميع التطبيقات الأخرى التي تم تمكين فحص الصحة عليها غير صحية أيضا. لن يتم أخذ التطبيقات التي لم يتم تمكين التحقق من الصحة بها في الاعتبار.
مثال
تخيل أن لديك تطبيقين (أو تطبيق واحد مع فتحة) مع تمكين التحقق من الصحة. يطلق عليها اسم التطبيق A والتطبيق B. إنهم على نفس خطة App Service، ويتم توسيع نطاق الخطة إلى أربعة مثيلات. إذا أصبح التطبيق A غير صحي على مثيلين، يتوقف موازن التحميل عن إرسال الطلبات إلى التطبيق A على هذين المثيلين. لا تزال الطلبات توجه إلى التطبيق B على هذه المثيلات، على افتراض أن التطبيق B سليم. إذا ظل التطبيق A غير سليم لأكثر من ساعة على هذين المثيلين، يتم استبدال المثيلات فقط إذا كان التطبيق B غير صحي أيضا على هاتين المثيلتين. إذا كان التطبيق B سليما، فلن يتم استبدال المثيلات.
إشعار
إذا كان هناك موقع أو فتحة أخرى على الخطة (App C) دون تمكين التحقق من الصحة، فلن يؤخذ في الاعتبار لاستبدال المثيل.
ماذا لو كانت جميع مثيلاتي غير صحية؟
إذا كانت جميع مثيلات التطبيق الخاص بك غير صحية، فلن تزيل App Service المثيلات من موازن التحميل. في هذا السيناريو، سيؤدي إخراج جميع مثيلات التطبيق غير السليمة من تدوير موازن التحميل بشكل فعال إلى انقطاع التطبيق الخاص بك. ومع ذلك، سيظل استبدال المثيل يحدث.
ماذا يحدث أثناء تبديل الفتحة؟
تكوين فحص الصحة ليس خاصا بالفتحة، لذلك بعد التبديل، سيتم تطبيق تكوين فحص الصحة للفتحة المبدلة على فتحة الوجهة والعكس صحيح. على سبيل المثال، إذا تم تمكين Health Check لفتحة التقسيم المرحلي، تطبيق نقطة النهاية المكونة على فتحة الإنتاج بعد التبديل.
هل يعمل التحقق من الصحة على بيئات خدمة التطبيقات؟
نعم، يتوفر التحقق من الصحة ل App Service Environment v3.