يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستندات
Apigee X. المعلومات
المشكلة
يحصل تطبيق العميل على رمز حالة 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 العام والخاص على السحابة الإلكترونية |
إزالة المضيف الافتراضي في نسخة منشورة حديثًا من الخادم الوكيل لواجهة برمجة التطبيقات | يمكن أن تؤدي إزالة المضيف الافتراضي من النسخة السابقة التي تم نشرها مؤخرًا إلى أن يكون العميل لا يزال يستخدم المضيف الظاهري المحدد أن تتسبب في حدوث هذه المشكلة. | مستخدمو Edge العام والخاص على السحابة الإلكترونية |
مسار غير مرتبط بأي خادم وكيل لواجهة برمجة التطبيقات | لم يتم إعداد الخادم الوكيل المحدّد لواجهة برمجة التطبيقات لقبول الطلبات في المسار المحدّد في رسالة الخطأ. | مستخدمو Edge العام والخاص على السحابة الإلكترونية |
عدم نشر الخادم الوكيل لواجهة برمجة التطبيقات في بيئة | لم يتم نشر الخادم الوكيل المحدّد لواجهة برمجة التطبيقات في البيئة المحدّدة التي تحاول إجراء طلبات البيانات من واجهة برمجة التطبيقات فيها. | مستخدمو Edge العام والخاص على السحابة الإلكترونية |
لم يتم تحميل البيئة على معالج الرسائل | لم يتم تحميل البيئة المحددة (التي تحاول تقديم طلبات واجهة برمجة التطبيقات فيها) في معالجات الرسائل بسبب حدوث خطأ. | مستخدمو Edge Private Cloud |
عدم نشر الخادم الوكيل لواجهة برمجة التطبيقات على معالِج رسائل واحد أو أكثر | قد لا يتم نشر الخادم الوكيل لواجهة برمجة التطبيقات على معالِجات رسائل واحدة أو أكثر بسبب عدم توفُّر إشعارات برصد أحداث أثناء النشر. | مستخدمو Edge Private Cloud |
خطوات التشخيص الشائعة
يمكنك الاستفادة من سجلات NGINX و"معالج الرسائل" في تحديد مشاكل 404
وحلّها.
ويمكنك اتّباع الخطوات التالية للتحقّق من السجلّات:
- اعرض سجلات NGINX باستخدام الأمر التالي:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- تحقَّق من الحقول التالية في إدخالات السجلّ:
الحقل القيمة Upstream_status, status
404
X-Apigee-fault-code
messaging.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.
التشخيص
- تحقَّق من إعدادات نقطة نهاية الخادم الوكيل للخادم الوكيل لواجهة برمجة التطبيقات وتعرَّف على ما إذا تم ضبط الخادم الوكيل لواجهة برمجة التطبيقات
لقبول طلبات المضيف الظاهري المحدّد في الخطأ. ويُشار إلى ذلك
من خلال العنصر
VirtualHost
. لنلقِ نظرة على نموذج لإعداداتProxyEndpoint
لفهم ذلك.نموذج لإعداد نقطة نهاية الخادم الوكيل يوضح أنّ الخادم الوكيل لواجهة برمجة التطبيقات يقبل الطلبات على مضيف افتراضي آمن
- لنفترض أن المضيفين الافتراضيين تم تعريفهم في البيئة المحددة على النحو التالي:
الاسم ميناء الاسم المستعار للمضيف default
80
myorg-prod.apigee.net
secure
443
myorg-prod.apigee.net
- يمكنك تقديم طلب بيانات من واجهة برمجة التطبيقات إلى
default
VirtualHost
باستخدام عنوان URLhttp://myorg-prod.apigee.net/weather
. - بما أنّ
ProxyEndpoint
لا تحتوي علىdefault
VirtualHost
كما هو موضّح في المثال أعلاه، ستحصل على رمز الاستجابة404
مع رسالة الخطأ التالية:{"fault":{"faultstring":"Unable to identify proxy for host: default and url: \/weather","detail":{"errorcode":"messaging.adaptors.http.flow.ApplicationNotFound"}}}
- انتقِل إلى قسم الحلّ أدناه لمعالجة هذه المشكلة.
- في حال ضبط
ProxyEndpoint
لقبول الطلبات فيdefault
VirtualHost
، انتقِل إلى السبب التالي، المسار غير مرتبط بأي خادم وكيل لواجهة برمجة التطبيقات.
درجة الدقّة
- أضِف السمة
VirtualHost
غير المتوفّرة إلى إعداداتProxyEndpoint
لحلّ المشكلة. في المثال المعروض أعلاه، يمكنك إضافة السمةVirtualHost
التلقائية إلى إعداداتProxyEndpoint
كما يلي:<VirtualHost>default</VirtualHost>
نموذج لإعداد نقطة نهاية الخادم الوكيل يعرض الإعداد التلقائي> VirtualHost> الذي تتم إضافته
- في المثال المذكور أعلاه، إذا كنت تنوي استخدام
VirtualHost
secure
فقط لهذا الخادم الوكيل لواجهة برمجة التطبيقات، يجب إرسال طلبات البيانات من واجهة برمجة التطبيقات إلىVirtualHost
secure
فقط باستخدام بروتوكول HTTPS:https://myorg-prod.apigee.net/weather
السبب: تمت إزالة المضيف الظاهري في نسخة منشورة حديثًا من الخادم الوكيل لواجهة برمجة التطبيقات.
قد تحدث هذه المشكلة إذا تم نشر نسخة جديدة من خادم وكيل لواجهة برمجة التطبيقات بعد إزالة مضيف افتراضي محدَّد (كان جزءًا من النسخة السابقة المنشورة)، والتي كانت لا تزال قيد الاستخدام من قِبل العملاء لإجراء طلبات البيانات من واجهة برمجة التطبيقات.
التشخيص
- تحقَّق من إعدادات نقطة نهاية الخادم الوكيل للخادم الوكيل لواجهة برمجة التطبيقات لمعرفة ما إذا تم ضبط الخادم الوكيل لواجهة برمجة التطبيقات
على قبول طلبات المضيف الظاهري المحدّد في الخطأ. ويُشار إلى ذلك من خلال العنصر
VirtualHost
في إعداداتProxyEndpoint
. - إذا لم يكن المضيف الافتراضي المحدّد في الخطأ متوفرًا ضمن إعدادات
ProxyEndpoint
، نفِّذ الخطوات التالية. بخلاف ذلك، انتقِل إلى السبب التالي، وهو المسار غير مرتبط بأي خادم وكيل لواجهة برمجة التطبيقات. - مقارنة بين إعدادات
ProxyEndpoint
للإصدار المنشور سابقًا والنسخة المنشورة حاليًا.- على سبيل المثال، لنفترض أنّ النسخة السابقة المنشورة سابقًا هي
5
والنسخة المنشورة حاليًا هي6
:- الأجهزة المضيفة الافتراضية التي تم إعدادها في نقطة نهاية الخادم الوكيل في الإصدار 5
<HTTPProxyConnection> <BasePath>/weather</BasePath> <Properties/> <VirtualHost>vh1</VirtualHost> </HTTPProxyConnection>
- الأجهزة المضيفة الافتراضية التي تم إعدادها في نقطة نهاية الخادم الوكيل في النسخة 6
<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: لا يتطابق المسار مع المسار الأساسي للخادم الوكيل لواجهة برمجة التطبيقات
- إذا كانت علامة
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
محدّد (المسار بعد المسار الأساسي). - وإذا كان
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
(المسار بعد المسار الأساسي) إلى/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
، أضِف مسارًا منفصلاً يتضمّن المجموعة المطلوبة من السياسات وتأكَّد من توفّر شرط يتطابق مع/Delhi
/proxy.pathsuffix
كما هو موضّح أدناه:<Condition>(proxy.pathsuffix MatchesPath "/Delhi") and (request.verb = "GET")</Condition>
- إذا أردت تنفيذ مجموعة مشتركة من السياسات للمسار
/Delhi
، تأكَّد من في المسار المشترك أنّ هناك شرط يسمح باستخدام/proxy.pathsuffix
عام. وهذا يعني أنّه سيسمح بأي مسار بعد/weather
basepath
كما هو موضّح أدناه:<Condition>(proxy.pathsuffix MatchesPath "/**") and (request.verb = "GET")</Condition>
- إذا أردت تنفيذ أي مجموعة محدّدة من السياسات للمسار
إذا كان العنصر ProxyEndpoint
يحتوي على basepath
الصحيح، وكان path suffix
المحدّد في عنوان URL لواجهة برمجة التطبيقات يتطابق مع أحد التدفقات الشرطية، يتم الانتقال إلى السبب التالي، وهو عدم نشر الخادم الوكيل لواجهة برمجة التطبيقات في بيئة.
السبب: عدم نشر الخادم الوكيل لواجهة برمجة التطبيقات في بيئة
التشخيص
- حدِّد البيئة التي يوجد بها الاسم المستعار للمضيف المُستخدَم في عنوان URL لطلب واجهة برمجة التطبيقات.
ويمكن إجراء ذلك من خلال التحقّق من تفاصيل جميع المضيفين الافتراضيين في كل بيئات مؤسستك في واجهة مستخدم Edge.
لنفترض مثلاً الإعدادات التالية:
- إذا كان
http://myorg-prod.apigee.net/weather
هو عنوان URL الخاص بك، يكونmyorg-prod.apigee.net
هو الاسم المستعار للمضيف. - تم إعداد الاسم المستعار للمضيف
myorg-prod.apigee.net
كجزء من أحد المضيفين الافتراضيين في بيئةprod
في مؤسستك.
- إذا كان
- تحقَّق مما إذا كان الخادم الوكيل المحدَّد لواجهة برمجة التطبيقات منشورًا في البيئة المحدّدة التي تم تحديدها في الخطوة 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 omitted
2018-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
- احصل على تفاصيل ملف تخزين المفاتيح/متجر الثقة المحدّدة في رسالة الخطأ المعروضة في
الخطوة السابقة باستخدام طلب واجهة برمجة التطبيقات التالي للإدارة:
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" }
- يوضِّح مثال الناتج أنّ هناك شهادتَين ومفتاحًا في Truststore
myTruststore
. لا يحتوي Truststore بشكل عام على أي مفتاح. وفي هذه الحالة، من الأفضل استخدام شهادة واحدة ومفتاح واحد. - يمكنك الحصول على تفاصيل حول الشهادتَين باستخدام واجهة برمجة التطبيقات التالية:
curl -s http://<management-IPaddress>:8080/v1/runtime/organizations/<org-name>/environments/<env-name>/keystores/<keystore-name>/certs/<cert-name>
- تحقق من تاريخ انتهاء صلاحية كل شهادة من الشهادات وحدد الشهادة منتهية الصلاحية/الأقدم.
- احذف الشهادة منتهية الصلاحية أو غير المرغوب فيها من Truststore
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 ومشاركته.
- إذا كنت من مستخدمي Public Cloud، يُرجى تقديم المعلومات التالية:
- اسم المؤسسة
- اسم البيئة
- اسم الخادم الوكيل لواجهة برمجة التطبيقات
- إكمال أمر 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
- تفاصيل حول الأقسام التي جرّبتها في هذا الدليل الإرشادي وأي إحصاءات أخرى ستساعدنا في التوصّل إلى حلّ سريع لهذه المشكلة.