استكشاف أخطاء تطبيق حاوية وإصلاحها
يمكن أن تكشف مراجعة سجلات Azure Container Apps وإعدادات التكوين عن المشكلات الأساسية إذا لم يعمل تطبيق الحاوية بشكل صحيح. استخدم الدليل التالي لمساعدتك في تحديد موقع وعرض تفاصيل حول تطبيق الحاوية.
السيناريوهات
يسرد الجدول التالي المشكلات التي قد تواجهها أثناء استخدام Azure Container Apps والإجراءات التي يمكنك اتخاذها لحلها.
السيناريو | الوصف | الإجراءات |
---|---|---|
جميع السيناريوهات |
عرض السجلات استخدام تشخيص المشكلات وحلها |
|
خطأ في نشر مراجعة جديدة | تتلقى رسالة خطأ عند محاولة نشر مراجعة جديدة. | تحقق من أن تطبيقات الحاوية يمكنها سحب صورة الحاوية |
يستغرق التوفير وقتا طويلا جدا | بعد نشر مراجعة جديدة، تحتوي المراجعة الجديدة على حالة توفير وحالةقيد التشغيل للمعالجة إلى أجل غير مسمى. | التحقق من تكوين فحوصات السلامة بشكل صحيح |
المراجعة متدهورة | يستغرق توفير المراجعة الجديدة أكثر من 10 دقائق. وأخيرا لديه حالة Provision من Provisioned، ولكن حالة قيد التشغيل متدهورة.
قراءة تلميح أداة حالة التشغيلDetails: Deployment Progress Deadline Exceeded. 0/1 replicas ready. |
التحقق من تكوين فحوصات السلامة بشكل صحيح |
فشل طلبات نقاط النهاية | لا تستجيب نقطة نهاية تطبيق الحاوية للطلبات. | مراجعة تكوين الدخول |
حالة إرجاع الطلبات 403 | تستجيب نقطة نهاية تطبيق الحاوية للطلبات التي بها خطأ HTTP 403 (تم رفض الوصول). | التحقق من صحة تكوين الشبكة |
الاستجابات ليست كما هو متوقع | تستجيب نقطة نهاية تطبيق الحاوية للطلبات، ولكن الاستجابات ليست كما هو متوقع. |
التحقق من توجيه حركة المرور إلى المراجعة الصحيحة تحقق من أنك تستخدم علامات فريدة عند نشر الصور في سجل الحاوية |
خطأ المعلمات المفقودة | تتلقى رسائل خطأ حول المعلمات المفقودة عند تشغيل az containerapp الأوامر في Azure CLI، أو تشغيل cmdlets من الوحدة النمطية Az.App في Azure PowerShell. |
تحقق من تثبيت أحدث إصدار من ملحق Azure Container Apps |
ميزات المعاينة غير متوفرة |
لا تتوفر ميزات المعاينة عند تشغيل az containerapp الأوامر في Azure CLI. |
تحقق من أن ملحق Azure Container Apps يسمح بميزات المعاينة |
لا يعمل حذف تطبيقك أو بيئتك | غالبا ما تكون هذه المشكلة مصحوبة برسالة مثل provisioningState: ScheduledForDelete. | حذف الشبكة الظاهرية المقترنة يدويا |
عرض السجلات
تتمثل إحدى الخطوات الأولى التي يجب اتخاذها أثناء البحث عن مشكلات في تطبيق الحاوية في عرض رسائل السجل. يمكنك عرض إخراج كل من وحدة التحكم وسجلات النظام. يلتقط سجل وحدة تحكم تطبيق الحاوية الخاص بك تدفقات التطبيق stdout
و stderr
. تنشئ تطبيقات الحاوية سجلات النظام لأحداث مستوى الخدمة.
- قم بتسجيل الدخول إلى بوابة Azure.
- في شريط البحث ، أدخل اسم تطبيق الحاوية.
- ضمن قسم الموارد ، حدد اسم تطبيق الحاوية.
- في شريط التنقل، قم بتوسيع Monitoring وحدد Log stream (وليس Logs).
- إذا كانت صفحة دفق السجل تشير إلى أن هذا المراجعة قد تم تحجيمه إلى الصفر.، فحدد الزر الانتقال إلى إدارة المراجعة. نشر مراجعة جديدة تم تحجيمها إلى الحد الأدنى لعدد النسخ المتماثلة من 1. لمزيد من المعلومات، راجع التحجيم في Azure Container Apps.
- في صفحة دفق السجل، قم بتعيين السجلات إلى وحدة التحكم أو النظام.
استخدام أداة تشخيص المشكلات وحلها
يمكنك استخدام أداة تشخيص المشكلات وحلها للعثور على المشكلات المتعلقة بصحة تطبيق الحاوية وتكوينه وأدائه.
- قم بتسجيل الدخول إلى بوابة Azure.
- في شريط البحث ، أدخل اسم تطبيق الحاوية.
- ضمن قسم الموارد ، حدد اسم تطبيق الحاوية.
- في شريط التنقل، حدد تشخيص المشاكل وحلها.
- في صفحة تشخيص المشكلات وحلها، حدد إحدى فئات استكشاف الأخطاء وإصلاحها.
- حدد إحدى الفئات في شريط التنقل للعثور على طرق لإصلاح المشكلات المتعلقة بتطبيق الحاوية.
التحقق من إمكانية وصول ذوي الاحتياجات الخاصة إلى صورة الحاوية
إذا تلقيت رسالة خطأ عند محاولة نشر مراجعة جديدة، فتحقق من أن Container Apps قادرة على سحب صورة الحاوية.
- تأكد من أن جدار حماية بيئة الحاوية لا يمنع الوصول إلى سجل الحاوية. لمزيد من المعلومات، راجع التحكم في حركة المرور الصادرة باستخدام المسارات المعرفة من قبل المستخدم.
- إذا كانت الشبكة الظاهرية الموجودة تستخدم خادم DNS مخصصا بدلا من خادم DNS الافتراضي الذي يوفره Azure، فتحقق من تكوين خادم DNS بشكل صحيح وأن بحث DNS لسجل الحاوية لا يفشل. لمزيد من المعلومات، اطلع على DNS.
- إذا استخدمت ميزة إنشاء سحابة Container Apps لإنشاء صورة حاوية لك (راجع مسار التعليمات البرمجية إلى السحابة لتطبيقات حاوية Azure، فلن يمكن الوصول إلى صورتك بشكل عام، لذلك لا ينطبق هذا القسم.
بالنسبة إلى حاوية Docker التي يمكن تشغيلها كتطبيق وحدة تحكم، تحقق من إمكانية الوصول إلى صورتك بشكل عام عن طريق تشغيل الأمر التالي في موجه أوامر غير مقيد. قبل تشغيل هذا الأمر، استبدل العناصر النائبة المحيطة <>
بالقيم الخاصة بك.
docker run --rm <YOUR_CONTAINER_IMAGE>
تحقق من تشغيل Docker للصورة دون الإبلاغ عن أي أخطاء. إذا كنت تقوم بتشغيل Docker على Windows، فتأكد من تشغيل Docker Engine.
إذا لم يكن يمكن الوصول إلى صورتك بشكل عام، فقد تتلقى الخطأ التالي.
docker: Error response from daemon: pull access denied for <YOUR_CONTAINER_IMAGE>, repository does not exist or may require 'docker login': denied: requested access to the resource is denied. See 'docker run --help'.
لمزيد من المعلومات، راجع الشبكات في بيئة Azure Container Apps.
مراجعة تكوين الدخول
يتم فرض إعدادات دخول تطبيق الحاوية من خلال مجموعة من القواعد التي تتحكم في توجيه حركة المرور الخارجية والداخلية إلى تطبيق الحاوية. إذا لم تتمكن من الاتصال بتطبيق الحاوية، فراجع إعدادات الدخول هذه للتأكد من أن إعدادات الدخول لا تمنع الطلبات.
- قم بتسجيل الدخول إلى بوابة Azure.
- في شريط البحث ، أدخل اسم تطبيق الحاوية.
- ضمن الموارد، حدد اسم تطبيق الحاوية.
- في شريط التنقل، قم بتوسيع الإعدادات وحدد الدخول.
المشكلة | الإجراء |
---|---|
هل تم تمكين الدخول؟ | تحقق من تحديد خانة الاختيار Enabled . |
هل تريد السماح بالدخول الخارجي؟ | تحقق من تعيين حركة مرور الدخول إلى قبول نسبة استخدام الشبكة من أي مكان. إذا لم يستمع تطبيق الحاوية لحركة مرور HTTP، فقم بتعيين حركة مرور الدخول إلى محدودة ببيئة تطبيقات الحاوية. |
هل يستخدم العميل HTTP أو TCP للوصول إلى تطبيق الحاوية؟ | تحقق من تعيين نوع الدخول إلى البروتوكول الصحيح (HTTP أو TCP). |
هل يدعم عميلك mTLS؟ | تحقق من تعيين وضع شهادة العميل على Require فقط إذا كان العميل يدعم mTLS. لمزيد من المعلومات، راجع تكوين مصادقة شهادة العميل. |
هل يستخدم العميل HTTP/1 أو HTTP/2؟ | تحقق من تعيين Transport إلى إصدار HTTP الصحيح (HTTP/1 أو HTTP/2). |
هل تم تعيين المنفذ الهدف بشكل صحيح؟ | تحقق من تعيين المنفذ الهدف إلى نفس المنفذ الذي يستمع إليه تطبيق الحاوية، أو نفس المنفذ الذي يعرضه Dockerfile الخاص بتطبيق الحاوية. |
هل عنوان IP الخاص بالعميل مرفوض؟ | إذا لم يتم تعيين وضع قيود أمان IP على السماح بكافة نسبة استخدام الشبكة، فتحقق من أن العميل ليس لديه عنوان IP مرفوض. |
لمزيد من المعلومات، راجع الدخول في Azure Container Apps.
التحقق من تكوين الشبكة
تستخدم أدوات حل Azure المتكررة عنوان 168.63.129.16
IP لحل الطلبات.
- إذا كانت الشبكة الظاهرية تستخدم خادم DNS مخصصا بدلا من خادم DNS الافتراضي الذي يوفره Azure، فقم بتكوين خادم DNS لإعادة توجيه استعلامات DNS التي لم يتم حلها إلى
168.63.129.16
. - عند تكوين NSG أو جدار الحماية
168.63.129.16
، لا تحظر العنوان.
لمزيد من المعلومات، راجع الشبكات في بيئة Azure Container Apps.
التحقق من تكوين فحوصات السلامة
بالنسبة لجميع أنواع فحوصات السلامة (الحياة والاستعداد وبدء التشغيل) التي تستخدم TCP كنقل لها، تحقق من تطابق أرقام المنافذ الخاصة بها مع المنفذ الهدف للدخول الذي قمت بتكوينه لتطبيق الحاوية الخاص بك.
- قم بتسجيل الدخول إلى بوابة Azure.
- في شريط البحث ، أدخل اسم تطبيق الحاوية.
- ضمن الموارد، حدد اسم تطبيق الحاوية.
- في شريط التنقل، قم بتوسيع التطبيق وحدد حاويات.
- في صفحة Containers ، حدد Health probes.
- قم بتوسيع تحقيقات Liveness وفحوصات الجاهزية وفحوصات بدء التشغيل.
- لكل فحص، تحقق من صحة قيمة المنفذ .
تحديث قيم المنفذ كما يلي:
- حدد تحرير ونشر لإنشاء مراجعة جديدة.
- في صفحة إنشاء مراجعة جديدة ونشرها، حدد خانة الاختيار بجوار صورة الحاوية وحدد تحرير.
- في نافذة Edit a container ، حدد Health probes.
- قم بتوسيع تحقيقات Liveness وفحوصات الجاهزية وفحوصات بدء التشغيل.
- لكل مسبار، قم بتحرير قيمة المنفذ .
- حدد الزر حفظ.
- في صفحة إنشاء ونشر مراجعة جديدة، حدد الزر إنشاء .
تكوين تحقيقات السلامة لوقت بدء التشغيل الممتد
إذا تم تمكين الدخول، تتم إضافة الفحوصات الافتراضية التالية تلقائيا إلى حاوية التطبيق الرئيسية إذا لم يتم تعريف أي منها لكل نوع.
فيما يلي القيم الافتراضية لكل نوع مسبار.
الخاصية | البدء | الجهوزية | الحياة |
---|---|---|---|
البروتوكول | TCP | TCP | TCP |
المنفذ | منفذ هدف الدخول | منفذ هدف الدخول | منفذ هدف الدخول |
المهلة | 3 seconds | 5 seconds | غير متوفر |
المدة | 1 ثانية | 5 seconds | غير متوفر |
التأخير الأولي | 1 ثانية | 3 seconds | غير متوفر |
حد النجاح | 1 | 1 | غير متوفر |
حد الفشل | 240 | 48 | غير متوفر |
إذا كان تطبيق الحاوية يستغرق وقتا طويلا للبدء (وهو أمر شائع في Java) فقد تحتاج إلى تخصيص خاصية ثواني التأخير الأولي للحيوية والجاهزية وفقا لذلك. يمكنك عرض السجلات لمشاهدة وقت بدء التشغيل النموذجي لتطبيق الحاوية.
- قم بتسجيل الدخول إلى بوابة Azure.
- في شريط البحث ، أدخل اسم تطبيق الحاوية.
- ضمن الموارد، حدد اسم تطبيق الحاوية.
- في شريط التنقل، قم بتوسيع التطبيق وحدد حاويات.
- في صفحة Containers ، حدد Health probes.
- حدد تحرير ونشر لإنشاء مراجعة جديدة.
- في صفحة إنشاء مراجعة جديدة ونشرها، حدد خانة الاختيار بجوار صورة الحاوية وحدد تحرير.
- في نافذة Edit a container ، حدد Health probes.
- قم بتوسيع تحقيقات الحياة.
- إذا تم تحديد Enable liveness probes ، فقم بزيادة قيمة ثواني التأخير الأولي.
- توسيع فحوصات الجاهزية.
- إذا تم تحديد Enable readiness probes ، فقم بزيادة قيمة ثواني التأخير الأولي.
- حدد حفظ.
- في صفحة إنشاء ونشر مراجعة جديدة، حدد الزر إنشاء .
يمكنك بعد ذلك عرض السجلات لمعرفة ما إذا كان تطبيق الحاوية يبدأ بنجاح.
لمزيد من المعلومات، راجع استخدام فحوصات السلامة.
التحقق من توجيه حركة المرور إلى المراجعة الصحيحة
إذا لم يتصرف تطبيق الحاوية كما هو متوقع، فقد تكون المشكلة في توجيه الطلبات إلى مراجعة قديمة.
- قم بتسجيل الدخول إلى بوابة Azure.
- في شريط البحث ، أدخل اسم تطبيق الحاوية.
- ضمن الموارد، حدد اسم تطبيق الحاوية.
- في شريط التنقل، قم بتوسيع Application وحدد Revisions.
إذا تم تعيين وضع المراجعة إلى Single
، يتم توجيه كل نسبة استخدام الشبكة إلى أحدث مراجعة بشكل افتراضي. يجب أن تسرد علامة التبويب المراجعات النشطة مراجعة واحدة فقط، مع قيمة نسبة استخدام الشبكة ل 100%
.
إذا تم تعيين وضع المراجعة إلى Multiple
، فتحقق من أنك لا تقوم لتوجيه نسبة استخدام الشبكة إلى المراجعات القديمة.
لمزيد من المعلومات حول تكوين تقسيم نسبة استخدام الشبكة، راجع تقسيم نسبة استخدام الشبكة في Azure Container Apps.
تحقق من تثبيت أحدث إصدار من ملحق Azure Container Apps
إذا تلقيت أخطاء حول المعلمات المفقودة عند تشغيل az containerapp
الأوامر في Azure CLI أو cmdlets من Az.App
الوحدة النمطية في Azure PowerShell، فتأكد من تثبيت أحدث إصدار من ملحق Azure Container Apps.
تحقق من أن ملحق Azure Container Apps يسمح بميزات المعاينة
إذا لم تتوفر ميزات المعاينة عند تشغيل az containerapp
الأوامر في Azure CLI، فقم بتمكين ميزات المعاينة على ملحق Azure Container Apps.
az extension add --name containerapp --upgrade --allow-preview true
حذف الشبكة الظاهرية التي تستخدمها بيئة Azure Container Apps يدويا
إذا تلقيت الرسالة provisioningState: ScheduledForDelete، ولكن البيئة الخاصة بك تفشل في الحذف فعليا، فتأكد من حذف VNet المقترنة يدويا.
حدد الشبكة الظاهرية التي تستخدمها البيئة التي تحاول حذفها. استبدل العناصر النائبة <> بالقيم الخاصة بك.
az containerapp env show --resource-group <RESOURCE_GROUP> --name <ENVIRONMENT>
في الإخراج، ابحث عن
infrastructureSubnetId
معرف الشبكة الظاهرية ولاحظه. مثال على معرف الشبكة الظاهرية هوvNet::myVNet.id
.حذف VNet يدويا:
az network vnet delete --resource-group <RESOURCE_GROUP> --name <VNET_ID>
حذف بيئة Azure Container Apps:
az containerapp env delete --resource-group <RESOURCE_GROUP> --name <ENVIRONMENT> --yes