أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى
مستندات Apigee X. info
المشكلة
يتلقّى تطبيق العميل رمز حالة HTTP 404 مع الرسالة Not Found ورسالة الخطأ Unable to identify proxy for host: VIRTUAL_HOST and url: PATH كاستجابة لطلبات البيانات من واجهة برمجة التطبيقات.
يشير هذا الخطأ إلى أنّه تعذّر على Edge العثور على خادم وكيل لواجهة برمجة التطبيقات للمضيف الافتراضي والمسار المحدّدَين.
رسالة الخطأ
ستتلقّى رمز حالة HTTP التالي:
HTTP/1.1 404 Not Found
ستظهر لك أيضًا رسالة خطأ مشابهة للرسالة الموضّحة أدناه:
{
"fault":{
"faultstring":"Unable to identify proxy for host: default and url: \/oauth2\/token",
"detail":{
"errorcode":"messaging.adaptors.http.flow.ApplicationNotFound"
}
}
}
تشير رسالة الخطأ أعلاه إلى أنّ Edge لم يتمكّن من العثور على خادم وكيل لواجهة برمجة التطبيقات لمضيف default الظاهري والمسار /oauth2/token.
الأسباب المحتملة
في ما يلي بعض الأسباب المحتملة لهذا الخطأ:
| السبب | الوصف | تعليمات تحديد المشاكل وحلّها التي تنطبق على |
|---|---|---|
| لم يتم ربط خادم وكيل لواجهة برمجة التطبيقات بالمضيف الافتراضي المحدّد | لم يتم ضبط خادم وكيل واجهة برمجة التطبيقات المحدّد لقبول الطلبات على المضيف الافتراضي المحدّد في رسالة الخطأ. | مستخدمو Edge Public Cloud وEdge Private Cloud |
| تمت إزالة المضيف الافتراضي في مراجعة تم نشرها حديثًا لخادم وكيل لواجهة برمجة التطبيقات | قد تحدث هذه المشكلة عند إزالة المضيف الافتراضي من المراجعة التي تم نشرها حديثًا بينما لا يزال العميل يستخدم المضيف الافتراضي المحدّد. | مستخدمو Edge Public Cloud وEdge Private Cloud |
| لم يتم ربط المسار بأي خادم وكيل لواجهة برمجة التطبيقات | لم يتم ضبط خادم وكيل واجهة برمجة التطبيقات المحدّد لقبول الطلبات في المسار المحدّد في رسالة الخطأ. | مستخدمو Edge Public Cloud وEdge Private Cloud |
| لم يتم نشر خادم وكيل لواجهة برمجة التطبيقات في بيئة | لم يتم نشر خادم وكيل واجهة برمجة التطبيقات المحدّد في البيئة المحدّدة التي تحاول فيها إرسال طلبات إلى واجهة برمجة التطبيقات. | مستخدمو Edge Public Cloud وEdge Private Cloud |
| لم يتم تحميل البيئة على "معالج الرسائل" | لم يتم تحميل البيئة المحدّدة (التي تحاول فيها إرسال طلبات البيانات من واجهة برمجة التطبيقات) على "معالجات الرسائل" بسبب حدوث خطأ. | مستخدمو Edge Private Cloud |
| لم يتم نشر خادم وكيل لواجهة برمجة التطبيقات على معالج رسائل واحد أو أكثر | قد لا يتم نشر خادم وكيل واجهة برمجة التطبيقات على معالج رسائل واحد أو أكثر بسبب عدم توفّر إشعار برصد حدث أثناء عملية النشر. | مستخدمو Edge Private Cloud |
خطوات التشخيص الشائعة
ستكون سجلّات NGINX و"معالج الرسائل" مفيدة في تحديد المشاكل وحلّها في الخطأ 404.
اتّبِع الخطوات التالية للاطّلاع على السجلّات:
- يمكنك عرض سجلّات NGINX باستخدام الأمر التالي:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- ابحث عن الحقول التالية في إدخالات السجلّ:
الحقل القيمة Upstream_status, status404X-Apigee-fault-codemessaging.adaptors.http.flow.ApplicationNotFoundدوِّن رقم تعريف الرسالة من السجلّات.
- راجِع سجلّات "معالج الرسائل" (
/opt/apigee/var/log/edge-message-processor/logs/system.log)) لمعرفة ما إذا كان لديكmessaging.adaptors.http.flow.ApplicationNotFoundلواجهة برمجة التطبيقات المحدّدة أو ما إذا كان لديك معرّف الرسالة الفريد من الخطوة 2 لطلب البيانات من واجهة برمجة التطبيقات.نموذج لرسالة خطأ من سجلّ "معالج الرسائل"
NIOThread@1 ERROR ADAPTORS.HTTP.FLOW - AbstractRequestListener.onException() : Request:POST, uri:/weather, message Id:null, exception:com.apigee.rest.framework.ResourceNotFoundException{ code = messaging.adaptors.http.flow.ApplicationNotFound, message = Unable to identify proxy for host: vh1 and url: /weather, associated contexts = []}, context:Context@342ea86b input=ClientInputChannel(SSLClientChannel[Accepted: Remote:10.123.123.123:8443 Local:10.135.33.68:62092]@1206954 useCount=1 bytesRead=0 bytesWritten=0 age=1ms lastIO=0ms isOpen=true)
يعرض السجلّ أعلاه رمز الخطأ ورسالة الخطأ على النحو التالي:
code = messaging.adaptors.http.flow.ApplicationNotFound, message = Unable to identify proxy for host: vh1 and url: /weather
السبب: لم يتم ربط خادم وكيل لواجهة برمجة التطبيقات بالمضيف الافتراضي المحدّد
إذا لم يتم ضبط خادم وكيل واجهة برمجة التطبيقات لقبول الطلبات الخاصة بالمضيف الافتراضي المحدّد، يمكننا الحصول على استجابة 404 Not Found مع رسالة الخطأ Unable to identify proxy for host: VIRTUAL_HOST and url: PATH..
التشخيص
- تحقَّق من إعدادات نقطة نهاية الخادم الوكيل لخادم API الوكيل، واطّلِع على ما إذا كان خادم API الوكيل مضبوطًا لقبول الطلبات الخاصة المضيف الافتراضي المحدّد في الخطأ. ويتم الإشارة إلى ذلك باستخدام العنصر
VirtualHost. لنلقِ نظرة على نموذج إعداداتProxyEndpointلفهم ذلك.مثال على إعداد نقطة نهاية الخادم الوكيل يوضّح أنّ خادم وكيل واجهة برمجة التطبيقات يقبل الطلبات على مضيف افتراضي آمن

- لنفترض أنّه تم تحديد الأجهزة المضيفة الافتراضية في البيئة المحدّدة على النحو التالي:
الاسم المنفذ الاسم المستعار للمضيف default80myorg-prod.apigee.netsecure443myorg-prod.apigee.net - تُرسِل طلب بيانات من واجهة برمجة التطبيقات إلى
defaultVirtualHostباستخدام عنوان URLhttp://myorg-prod.apigee.net/weather - بما أنّ
ProxyEndpointلا يتضمّنdefaultVirtualHostكما هو موضّح في المثال أعلاه، سيظهر لك رمز الاستجابة404مع رسالة الخطأ التالية:{"fault":{"faultstring":"Unable to identify proxy for host: default and url: \/weather","detail":{"errorcode":"messaging.adaptors.http.flow.ApplicationNotFound"}}} - انتقِل إلى قسم الحلّ أدناه لحلّ هذه المشكلة.
- إذا تم ضبط
ProxyEndpointلقبول الطلبات علىdefaultVirtualHost، انتقِل إلى السبب التالي: لم يتم ربط المسار بأي خادم وكيل لواجهة برمجة التطبيقات.
الدقة
- أضِف السمة
VirtualHostالناقصة إلى إعداداتProxyEndpointلحلّ المشكلة. بالنسبة إلى المثال الموضّح أعلاه، يمكنك إضافة القيمة التلقائيةVirtualHostإلى إعدادProxyEndpointعلى النحو التالي:<VirtualHost>default</VirtualHost>
نموذج لإعداد نقطة نهاية الخادم الوكيل يعرض إضافة الإعداد التلقائي> VirtualHost>

- بدلاً من ذلك، في المثال المشار إليه أعلاه، إذا كنت تنوي استخدام
secureVirtualHostفقط لخادم وكيل واجهة برمجة التطبيقات المحدّد هذا، عليك إرسال طلبات البيانات من واجهة برمجة التطبيقات إلىsecureVirtualHostفقط باستخدام بروتوكول HTTPS:https://myorg-prod.apigee.net/weather
السبب: تمت إزالة المضيف الافتراضي في مراجعة تم نشرها حديثًا لخادم وكيل لواجهة برمجة التطبيقات
إذا تم نشر نسخة جديدة من خادم وكيل لواجهة برمجة التطبيقات بعد إزالة مضيف افتراضي معيّن (كان جزءًا من النسخة التي تم نشرها سابقًا)، وكان العملاء لا يزالون يستخدمون هذا المضيف لإرسال طلبات إلى واجهة برمجة التطبيقات، قد يؤدي ذلك إلى حدوث هذه المشكلة.
التشخيص
- تحقَّق من إعدادات نقطة نهاية الخادم الوكيل لخادم API الوكيل لمعرفة ما إذا كان خادم API الوكيل
مُعدًّا لقبول الطلبات الخاصة المضيف الافتراضي المحدّد في الخطأ. ويتم تحديد ذلك من خلال العنصر
VirtualHostفي إعداداتProxyEndpoint. - إذا لم يكن المضيف الافتراضي المحدّد في الخطأ متوفّرًا في إعدادات
ProxyEndpoint، اتّبِع الخطوات التالية. بخلاف ذلك، انتقِل إلى السبب التالي - لم يتم ربط المسار بأي خادم وكيل لواجهة برمجة التطبيقات. - قارِن إعدادات
ProxyEndpointللإصدار الذي تم نشره سابقًا بالإصدار الذي تم نشره حاليًا.- على سبيل المثال، لنفترض أنّ رقم المراجعة الذي تم نشره سابقًا هو
5ورقم المراجعة الذي تم نشره حاليًا هو6:- المضيفات الافتراضية التي تم إعدادها في نقطة نهاية الخادم الوكيل في المراجعة 5
- المضيفات الافتراضية التي تم ضبطها في نقطة نهاية الخادم الوكيل في المراجعة 6
<HTTPProxyConnection> <BasePath>/weather</BasePath> <Properties/> <VirtualHost>vh1</VirtualHost> </HTTPProxyConnection><HTTPProxyConnection> <BasePath>/weather</BasePath> <Properties/> <VirtualHost>secure</VirtualHost> </HTTPProxyConnection> - في المثال أعلاه، كان
VirtualHost vh1متوفّرًا فيrevision 5,ولكن تمت إزالته فيrevision 6واستبداله بـVirtualHost secure. - لذلك، إذا كنت أنت أو عملاؤك ترسلون الطلبات إلى وكيل واجهة برمجة التطبيقات هذا باستخدام
VirtualHost vh1(الذي كان جزءًا منrevision 5)، ستتلقّون رمز الاستجابة404مع رسالة الخطأ التالية:{"fault":{"faultstring":"Unable to identify proxy for host: vh1 and url: \/weather","detail":{"errorcode":"messaging.adaptors.http.flow.ApplicationNotFound"}}}
- على سبيل المثال، لنفترض أنّ رقم المراجعة الذي تم نشره سابقًا هو
- تحقَّق مما إذا تم إجراء تغيير المضيف الظاهري عن قصد أو بدون قصد في المراجعة المنشورة حاليًا، واتّخِذ الإجراءات المناسبة كما هو موضّح في قسم الحل.
الدقة
إذا تبيّن لك أنّه تمت إزالة المضيف الافتراضي أو المضيفين الافتراضيين في مراجعة جديدة، قد يكون ذلك مقصودًا أو عن طريق الخطأ. في كل حالة، اتّبِع الخطوات التالية لحلّ المشكلة.
السيناريو 1: التغيير المقصود
في حال كانت إزالة المضيف الافتراضي مقصودة، يمكنك اختيار أحد الخيارات التالية، مع العلم أنّ الخيار الأول هو الأسلوب المقترَح:
- أنشئ خادمًا وكيلاً جديدًا باستخدام مسار أساسي مختلف ومضيف افتراضي مختلف (غير متوفّر في المراجعة التي تم نشرها سابقًا).
-
إذا أردت مواصلة استخدام خادم وكيل لواجهة برمجة التطبيقات الحالية ولكن باستخدام مضيف افتراضي مختلف، من الأفضل الاحتفاظ بالمضيف الافتراضي الحالي وإضافة المضيف الافتراضي الإضافي.
سيضمن ذلك عدم تأثّر مستخدمي خادم وكيل واجهة برمجة التطبيقات هذا بالتغيير.
إذا كنت تريد استخدام خادم وكيل لواجهة برمجة التطبيقات الحالية وتوفير مضيف افتراضي مختلف فقط، عليك إبلاغ المستخدمين مسبقًا وإجراء هذا التغيير خلال فترة الصيانة.
سيضمن ذلك أن يكون مستخدمو خادم وكيل واجهة برمجة التطبيقات على دراية بالتغيير، وأن يتمكّنوا من استخدام مضيف افتراضي مختلف لإجراء الطلبات إلى خادم وكيل واجهة برمجة التطبيقات هذا. وبالتالي، لن تتأثر هذه الحسابات بهذا التغيير.
السيناريو 2: تغيير غير مقصود
في حال تمت إزالة المضيف الافتراضي عن طريق الخطأ وليس عن قصد، اتّبِع الخطوات التالية:
- عدِّل إعدادات
ProxyEndpointفي المراجعة المنشورة حاليًا لاستخدام المضيفات الافتراضية نفسها التي تم استخدامها في المراجعة المنشورة سابقًا. في المثال أعلاه، غيِّر القسم التالي من:<HTTPProxyConnection> <BasePath>/weather</BasePath> <Properties/> <VirtualHost>secure</VirtualHost> </HTTPProxyConnection>إلى
<HTTPProxyConnection> <BasePath>/weather</BasePath> <Properties/> <VirtualHost>vh1</VirtualHost> </HTTPProxyConnection> - أعِد نشر النسخة المعدَّلة.
أفضل الممارسات
يُنصح دائمًا بنشر وكلاء جدد أو مراجعات جديدة خلال فترة الصيانة أو عندما يكون من المتوقّع أن يكون عدد الزيارات في أدنى مستوياته، وذلك لتجنُّب أي مشكلة تنشأ أثناء عملية النشر أو الحدّ من التأثير في عدد الزيارات.
السبب: المسار غير مرتبط بأي خادم وكيل لواجهة برمجة التطبيقات
إذا لم يتم ضبط خادم وكيل واجهة برمجة التطبيقات لقبول الطلبات الخاصة بالمسار المحدّد المستخدَم في عنوان URL لطلب واجهة برمجة التطبيقات، يمكننا الحصول على استجابة 404 Not Found مع رسالة الخطأ Unable to identify proxy for host: VIRTUAL_HOST and url: PATH..
التشخيص
- اطّلِع على إعدادات
ProxyEndpointلوكيل واجهة برمجة التطبيقات المحدّد الذي أردت إرسال طلبات البيانات إليه. - تحقَّق ممّا إذا كان خادم وكيل واجهة برمجة التطبيقات معدًا لقبول الطلبات للمسار المحدّد الموضّح في رسالة الخطأ. يمكنك إجراء ذلك من خلال اتّباع الخطوات الواردة في السيناريو 1 والسيناريو 2.
السيناريو 1: لا يتطابق المسار مع basepath لخادم وكيل واجهة برمجة التطبيقات
- إذا كان
pathالموضّح في رسالة الخطأ لا يتطابق معbasepathلخادم وكيل واجهة برمجة التطبيقات المحدّد أو لا يبدأ بـbasepath، قد يكون ذلك هو سبب الخطأ. - لنأخذ مثالاً لتوضيح ذلك:
basepathلخادم وكيل واجهة برمجة التطبيقات المقصود هو/weather- عنوان URL لطلب البيانات من واجهة برمجة التطبيقات هو
https://myorg-prod.apigee.net/climate. وهذا يعني أنّ المسار المستخدَم في عنوان URL لطلب البيانات من واجهة برمجة التطبيقات هو/climate. - في هذا المثال، لا يتطابق
pathمعbasepathولا يبدأ بـbasepath. وبالتالي، يظهر لك الخطأ التالي:{ "fault":{ "faultstring":"Unable to identify proxy for host: secure and url: \/climate", "detail":{ "errorcode":"messaging.adaptors.http.flow.ApplicationNotFound" } } }
الدقة
- تأكَّد من أنّ
pathالمستخدَم في عنوان URL لطلب البيانات من واجهة برمجة التطبيقات هو نفسهbasepathلخادم وكيل واجهة برمجة التطبيقات المحدّد. - في المثال أعلاه، يجب أن يكون عنوان URL لطلب البيانات من واجهة برمجة التطبيقات على النحو التالي:
{ https://myorg-prod.apigee.net/weather
السيناريو 2: المسار لا يتطابق مع أي من مسارات التنفيذ الشرطية المتاحة
- إذا كان
pathالمستخدَم في عنوان URL لطلب البيانات من واجهة برمجة التطبيقات يبدأ بـbasepath، من المحتمل أنّpath suffix(الجزء الذي يليbasepath) الموضّح في رسالة الخطأ لا يتطابق مع أي من المسارات الشرطية، وقد يؤدي ذلك إلى ظهور الخطأ404. - لنأخذ مثالاً لتوضيح ذلك:
basepathلخادم وكيل واجهة برمجة التطبيقات المقصود هو/weather- عنوان URL لطلب البيانات من واجهة برمجة التطبيقات هو
https://myorg-prod.apigee.net/weather/Delhi. وهذا يعني أنّ المسار المستخدَم في عنوان URL لطلب بيانات من واجهة برمجة التطبيقات هو/weather/Delhi.
- في هذا المثال، يبدأ
pathبـbasepath/weather. بالإضافة إلى ذلك، يبلغpath suffix/Delhi. - تحقَّق الآن لمعرفة ما إذا كانت هناك أي مسارات شرطية في
ProxyEndpoint. - إذا لم تكن هناك مسارات شرطية أو كانت هناك بعض المسارات غير الشرطية، انتقِل إلى السبب التالي: لم يتم نشر خادم وكيل لواجهة برمجة التطبيقات في بيئة.
- إذا كان
ProxyEndpointيتضمّن مهام مستندة إلى شروط فقط، تحقَّق ممّا يلي:- إذا كانت الشروط في جميع مسارات التنفيذ الشرطية هذه تتحقّق من
proxy.pathsuffixمحدّد (المسار بعد basepath). - وإذا لم تتطابق قيمة
path suffixالمحدّدة في عنوان URL لطلب البيانات من واجهة برمجة التطبيقات مع أي من الشروط، سيكون ذلك هو سبب الخطأ.
- إذا كانت الشروط في جميع مسارات التنفيذ الشرطية هذه تتحقّق من
- لنفترض أنّ لدينا مسارَين في
ProxyEndpointوكلاهما مساران مشروطان كما هو موضّح أدناه:<Condition>(proxy.pathsuffix MatchesPath "/Bangalore") and (request.verb = "GET")</Condition> <Condition>(proxy.pathsuffix MatchesPath "/Chennai") and (request.verb = "GET")</Condition>
- في المثال الموضّح أعلاه، لدينا مساران شرطيان، أحدهما يطابق
proxy.pathsuffix(المسار بعد basepath) مع/Bangalore، والآخر يطابق/Chennai. ولكن لا يتطابق أيّ منها مع/Delhiوهوpath suffixالذي تمّ إدخاله في عنوان URL لطلب واجهة برمجة التطبيقات. - هذا هو سبب الخطأ
404. وبالتالي، سيظهر لك الخطأ التالي:{ "fault":{ "faultstring":"Unable to identify proxy for host: secure and url: \/weather\/Delhi", "detail":{ "errorcode":"messaging.adaptors.http.flow.ApplicationNotFound" } } }
- في المثال الموضّح أعلاه، لدينا مساران شرطيان، أحدهما يطابق
الدقة
- تأكَّد من أنّ
path suffixيتطابق مع أحد المسارات الشرطية على الأقل في نقطة نهاية الخادم الوكيل. - في المثال أعلاه، يمكنك استخدام إحدى الطرق التالية لحلّ الخطأ:
- إذا كنت تريد تنفيذ أي مجموعة معيّنة من السياسات للمسار
/Delhi، فأضِف مسارًا منفصلاً يتضمّن المجموعة المطلوبة من السياسات وتأكَّد من توفّر شرط يطابق/proxy.pathsuffix/Delhiكما هو موضّح أدناه:<Condition>(proxy.pathsuffix MatchesPath "/Delhi") and (request.verb = "GET")</Condition>
- إذا أردت تنفيذ مجموعة شائعة من السياسات للمسار
/Delhi، تأكَّد في المسار الشائع من توفُّر شرط يسمح باستخدام/proxy.pathsuffixعام. أي أنّه سيسمح بأي مسار بعدbasepath/weatherكما هو موضّح أدناه:<Condition>(proxy.pathsuffix MatchesPath "/**") and (request.verb = "GET")</Condition>
- إذا كنت تريد تنفيذ أي مجموعة معيّنة من السياسات للمسار
إذا كان ProxyEndpoint يتضمّن basepath الصحيح وكان path suffix المحدّد في عنوان URL لواجهة برمجة التطبيقات
يتطابق مع أحد المسارات الشرطية، انتقِل إلى السبب التالي: لم يتم نشر خادم وكيل لواجهة برمجة التطبيقات في بيئة.
السبب: لم يتم نشر خادم وكيل لواجهة برمجة التطبيقات في بيئة
التشخيص
- حدِّد البيئة التي يتوفّر فيها الاسم المستعار للمضيف المستخدَم في عنوان URL لطلب واجهة برمجة التطبيقات.
ويمكن إجراء ذلك من خلال الاطّلاع على تفاصيل جميع المضيفين الظاهريين في كل بيئة من بيئات مؤسستك في واجهة مستخدم Edge.
على سبيل المثال، لنفترض الإعداد التالي:
- إذا كان عنوان URL هو
http://myorg-prod.apigee.net/weather، فإنّmyorg-prod.apigee.netهو الاسم المستعار للمضيف. - تم ضبط الاسم المستعار للمضيف
myorg-prod.apigee.netكجزء من أحد المضيفين الافتراضيين في بيئةprodالخاصة بمؤسستك.
- إذا كان عنوان URL هو
- تحقَّق ممّا إذا كان خادم وكيل واجهة برمجة التطبيقات المحدّد قد تم نشره في البيئة المحدّدة التي تم تحديدها في الخطوة 1 أعلاه.
- إذا لم يتم نشر خادم وكيل لواجهة برمجة التطبيقات في البيئة المحدّدة، سيكون ذلك هو سبب ظهور الخطأ
404.- لنفترض في المثال المستخدَم في الخطوة 1 أعلاه أنّه لم يتم نشر خادم وكيل لواجهة برمجة التطبيقات في بيئة
prod، عندها سيكون هذا هو سبب الخطأ. - انتقِل إلى قسم الدقة أدناه.
- لنفترض في المثال المستخدَم في الخطوة 1 أعلاه أنّه لم يتم نشر خادم وكيل لواجهة برمجة التطبيقات في بيئة
- إذا تم نشر خادم وكيل لواجهة برمجة التطبيقات في البيئة المحدّدة، انتقِل إلى السبب التالي - لم يتم تحميل البيئة على "معالجات الرسائل".
الدقة
يمكنك نشر خادم وكيل لواجهة برمجة التطبيقات في البيئة المحدّدة التي تريد إرسال طلبات إلى واجهة برمجة التطبيقات فيها.
السبب: لم يتم تحميل البيئة على "معالجات الرسائل"
التشخيص
- سجِّل الدخول إلى كلّ معالج رسائل وتحقّق ممّا إذا كانت البيئة المحدّدة التي تُجري فيها طلب بيانات من واجهة برمجة التطبيقات محملة على معالج الرسائل باستخدام الأمر التالي:
curl -v 0:8082/v1/runtime/organizations/<orgname>/environments
- إذا كانت البيئة المحدّدة مُدرَجة كجزء من الأمر أعلاه، انتقِل إلى السبب التالي: لم يتم نشر خادم وكيل لواجهة برمجة التطبيقات على معالج رسائل واحد أو أكثر.
- إذا لم تكن البيئة المحدّدة مدرَجة، تحقَّق من
/opt/apigee/var/log/edge-message-processor/logs/system.logو/opt/apigee/var/log/edge-message-processor/logs/startupruntimeerrors.logفي "معالجات الرسائل" بحثًا عن أي أخطاء أثناء تحميل البيئات. - قد تحدث العديد من الأخطاء المختلفة التي قد تؤدي إلى تعذُّر تحميل بيئة على "معالج الرسائل". تعتمد طريقة الحل على الخطأ الذي حدث.
الدقة
قد لا يتم تحميل البيئة على "معالج الرسائل" لأسباب عديدة. يوضّح هذا القسم بعض الأسباب المحتملة التي يمكن أن تؤدي إلى حدوث هذه المشكلة، ويشرح كيفية حلّها.
-
إذا ظهر أحد الأخطاء التالية في سجلّ "معالج الرسائل"، يكون السبب مشكلة في الشهادات أو المفاتيح التي تمت إضافتها إلى مخزن المفاتيح أو مخزن الثقة المحدّدَين في البيئة المحدّدة.
الخطأ رقم 1: java.security.KeyStoreException: لا يمكن الكتابة فوق الشهادة الخاصة بك
2018-01-30 12:04:38,248 pool-47-thread-4 ERROR MESSAGING.RUNTIME - AbstractConfigurator.propagateEvent() : Error while handling the update for the Configurator com.apigee.kernel.exceptions.spi.UncheckedException: Failed to add certificate : mycert in key store : mytruststore in environment : test at com.apigee.entities.configurators.KeyStore.setCertificateEntry(KeyStore.java:156) ~[config-entities-1.0.0.jar:na] at com.apigee.entities.configurators.KeyStore.handleUpdate(KeyStore.java:101) ~[config-entities-1.0.0.jar:na] at com.apigee.entities.AbstractConfigurator.propagateEvent(AbstractConfigurator.java:85) ~[config-entities-1.0.0.jar:na] at com.apigee.messaging.runtime.Environment.handleUpdate(Environment.java:238) [message-processor-1.0.0.jar:na] … Caused by: java.security.KeyStoreException: Cannot overwrite own certificate at com.sun.crypto.provider.JceKeyStore.engineSetCertificateEntry(JceKeyStore.java:355) ~[sunjce_provider.jar:1.8.0_151] at java.security.KeyStore.setCertificateEntry(KeyStore.java:1201) ~[na:1.8.0_151] at com.apigee.entities.configurators.KeyStore.setCertificateEntry(KeyStore.java:153) ~[config-entities-1.0.0.jar:na]
... 20 common frames omitted2018-01-30 12:04:38,250 pool-47-thread-4 ERROR MESSAGING.RUNTIME - AbstractConfigurator.rollbackTransaction() : Error in processing the changes : Unknown resource type cert
الخطأ رقم 2: java.security.KeyStoreException: لا يمكن استبدال مفتاح الأمان
2017-11-01 03:28:47,560 pool-21-thread-7 ERROR MESSAGING.RUNTIME - AbstractConfigurator.propagateEvent() : Error while handling the update for the Configurator com.apigee.kernel.exceptions.spi.UncheckedException: Failed to add certificate : mstore in key store : myTruststore in environment : dev at com.apigee.entities.configurators.KeyStore.setCertificateEntry(KeyStore.java:156) ~[config-entities-1.0.0.jar:na] at com.apigee.entities.configurators.KeyStore.handleUpdate(KeyStore.java:101) ~[config-entities-1.0.0.jar:na] ... Caused by: java.security.KeyStoreException: Cannot overwrite secret key at com.sun.crypto.provider.JceKeyStore.engineSetCertificateEntry(JceKeyStore.java:354) ~[sunjce_provider.jar:1.8.0_144] at java.security.KeyStore.setCertificateEntry(KeyStore.java:1201) ~[na:1.8.0_144] at com.apigee.entities.configurators.KeyStore.setCertificateEntry(KeyStore.java:153) ~[config-entities-1.0.0.jar:na] ... 20 common frames omitted 2017-11-01 03:28:47,562 pool-21-thread-7 ERROR MESSAGING.RUNTIME - AbstractConfigurator.rollbackTransaction() : Error in processing the changes : Unknown resource type cert
- احصل على تفاصيل ملف تخزين المفاتيح/ملف تخزين الشهادات المحدّد في رسالة الخطأ المعروضة في الخطوة السابقة باستخدام طلب البيانات التالي من Management API:
curl -v "http://<management-IPaddress>:8080/v1/organizations/<org-name>/environments/<env-name>/keystores/myTruststore" -u <user>
مثال على الناتج:
{ "certs":[ "mycert", "mycert-new" ], "keys":[ "mycert" ], "name":"myTruststore" } - توضّح نتيجة المثال أنّ هناك شهادتَين ومفتاحًا في مستودع الثقة
myTruststore. لا يحتوي ملف truststore عادةً على مفتاح. وفي حال توفّرها، من الأفضل استخدام شهادة واحدة ومفتاح واحد. - يمكنك الحصول على تفاصيل حول الشهادتَين باستخدام واجهة برمجة التطبيقات التالية:
curl -s http://<management-IPaddress>:8080/v1/runtime/organizations/<org-name>/environments/<env-name>/keystores/<keystore-name>/certs/<cert-name>
- تحقَّق من تاريخ انتهاء صلاحية كل شهادة وحدِّد الشهادة المنتهية الصلاحية أو الأقدم.
- احذف الشهادة المنتهية الصلاحية أو غير المرغوب فيها من مستودع الشهادات الموثوقة
myTruststore.
إذا استمرت المشكلة أو ظهر لك أي خطأ آخر غير الأخطاء المذكورة في الخطوة 1 أعلاه، انتقِل إلى المعلومات التشخيصية التي يجب جمعها.
السبب: لم يتم نشر خادم وكيل لواجهة برمجة التطبيقات على معالج رسائل واحد أو أكثر
قد لا يتم نشر خادم وكيل واجهة برمجة التطبيقات على معالج رسائل واحد أو أكثر. تحدث هذه المشكلة نادرًا جدًا، ويعود السبب في معظم الأحيان إلى عدم تلقّي "معالج الرسائل" إشعارًا برصد حدث من "خادم الإدارة" أثناء نشر خادم وكيل معيّن لواجهة برمجة التطبيقات. في هذه الحالة أيضًا، لن تتمكّن من إنشاء جلسة التتبُّع في واجهة مستخدم Edge.
التشخيص
- سجِّل الدخول إلى كل من "معالجات الرسائل" وتحقّق مما إذا كان قد تم نشر المراجعة المحدّدة لخادم وكيل واجهة برمجة التطبيقات أم لا باستخدام الأمر التالي:
curl -v 0:8082/v1/runtime/organizations/<orgname>/environments/<envname>/apis/<apiname>/revisions
- إذا لم تظهر المراجعة المحدّدة لخادم وكيل واجهة برمجة التطبيقات كنتيجة للأمر المذكور في الخطوة 1 أعلاه، أعِد تشغيل "معالج الرسائل" المحدّد كما هو موضّح في الحلّ.
- كرِّر الخطوتين 1 و2 لجميع معالِجات الرسائل.
- إذا تم نشر المراجعة المحدّدة لخادم وكيل واجهة برمجة التطبيقات على جميع معالِجات الرسائل، لن يكون ذلك سببًا لهذه المشكلة. انتقِل إلى يجب جمع معلومات التشخيص.
الدقة
أعِد تشغيل معالِجات الرسائل المحدّدة التي لم يتم نشر المراجعة المحدّدة لخادم وكيل واجهة برمجة التطبيقات عليها.
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
تشخيص المشاكل باستخدام رصد واجهة برمجة التطبيقات
تتيح لك ميزة مراقبة واجهة برمجة التطبيقات تحديد مواضع المشاكل بسرعة لتشخيص الأخطاء ومشاكل الأداء ووقت الاستجابة ومصدرها، مثل تطبيقات المطوّرين أو خوادم وكيل واجهة برمجة التطبيقات أو أهداف الخلفية أو منصة واجهة برمجة التطبيقات.
بالنسبة إلى هذه المشكلة، يمكنك الانتقال إلى صفحة رصد واجهة برمجة التطبيقات > التحقيق واختيار التاريخ المناسب والخادم الوكيل وما إلى ذلك، وقد تظهر لك التفاصيل التالية:
- رمز الخطأ:
messaging.adaptors.http.flow.ApplicationNotFound - رمز الحالة:
404 - مصدر الخطأ:
ApigeeأوMP
بالإضافة إلى ذلك، يمكنك النقر على عرض السجلّات كما هو موضّح في لقطة الشاشة أعلاه، والتحقّق من المزيد من التفاصيل.

توضّح خطوات تنفيذ سيناريو نموذجي كيفية تحديد المشاكل وحلّها في 5xx باستخدام خدمة "مراقبة واجهة برمجة التطبيقات". على سبيل المثال، قد تريد إعداد تنبيه لتلقّي إشعار عندما يتجاوز عدد رموز الحالة 404 حدًا معيّنًا.
يجب جمع معلومات التشخيص
إذا استمرت المشكلة حتى بعد اتّباع التعليمات أعلاه، اجمع معلومات التشخيص التالية. يُرجى التواصل مع فريق دعم Apigee Edge ومشاركة هذه المعلومات معه.
- إذا كنت من مستخدمي السحابة الإلكترونية العامة، يُرجى تقديم المعلومات التالية:
- اسم المؤسسة
- اسم البيئة
- اسم خادم وكيل لواجهة برمجة التطبيقات
- أكمِل أمر curl لإعادة إظهار الخطأ
- إذا كنت من مستخدمي Private Cloud، يُرجى تقديم المعلومات التالية:
- رسالة الخطأ الكاملة التي ظهرت
- اسم البيئة
- حِزمة خادم وكيل لواجهة برمجة التطبيقات
- سجلّات "معالج الرسائل"
/opt/apigee/var/log/edge-message-processor/logs/system.log - ناتج الأوامر التالية على كلّ من "معالجات الرسائل"
curl -v 0:8082/v1/runtime/organizations/<orgname>/environments
curl -v 0:8082/v1/runtime/organizations/<orgname>/environments/<envname>/apis/<apiname>/revisions - تفاصيل حول الأقسام التي جرّبتها في دليل التشغيل هذا وأي إحصاءات أخرى تساعدنا في تسريع حلّ هذه المشكلة