شما در حال مشاهده اسناد Apigee Edge هستید.
به مستندات Apigee X بروید . اطلاعات
علامت
برنامه سرویس گیرنده کد وضعیت HTTP 404 را با پیام Not Found و پیام خطا Unable to identify proxy for host: VIRTUAL_HOST and url: PATH به عنوان پاسخ به تماس های API دریافت می کند.
این خطا به این معنی است که Edge نمی تواند پروکسی API را برای میزبان مجازی و مسیر مشخص شده پیدا کند.
پیغام خطا
کد وضعیت 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 نمیتواند پروکسی API را برای میزبان مجازی default و مسیر /oauth2/token پیدا کند.
علل احتمالی
برخی از دلایل احتمالی این خطا در زیر ذکر شده است:
| علت | توضیحات | دستورالعمل های عیب یابی قابل اجرا برای |
|---|---|---|
| پروکسی API با میزبان مجازی خاص مرتبط نیست | پروکسی API خاص برای پذیرش درخواست ها در میزبان مجازی مشخص شده در پیام خطا پیکربندی نشده است. | کاربران Edge Public و Private Cloud |
| میزبان مجازی در ویرایش جدید پراکسی API حذف شد | حذف هاست مجازی از نسخه جدید نصب شده در حالی که مشتری هنوز از میزبان مجازی خاص استفاده می کند می تواند باعث این مشکل شود. | کاربران Edge Public و Private Cloud |
| مسیری که با هیچ پروکسی API مرتبط نیست | پروکسی API خاص برای پذیرش درخواست ها در مسیر مشخص شده در پیام خطا پیکربندی نشده است. | کاربران Edge Public و Private Cloud |
| پروکسی API در یک محیط مستقر نشده است | پروکسی API خاص در محیط خاصی که در آن میخواهید درخواستهای API را انجام دهید مستقر نشده است. | کاربران Edge Public و Private Cloud |
| محیط روی پردازشگر پیام بارگذاری نشده است | محیط خاصی (که در آن میخواهید درخواستهای API را انجام دهید) به دلیل خطا در پردازشگرهای پیام بارگذاری نشده است. | کاربران Edge Private Cloud |
| پروکسی API در یک یا چند پردازشگر پیام مستقر نشده است | پروکسی API ممکن است در یک یا چند پردازشگر پیام به دلیل از دست رفتن اعلان رویداد در حین استقرار مستقر نشود. | کاربران Edge Private Cloud |
مراحل تشخیص رایج
گزارش های NGINX و Message Processor برای عیب یابی خطای 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برای API خاص دارید یا خیر شناسه پیام منحصر به فرد از مرحله 2 برای درخواست API.نمونه پیام خطا از ورود به سیستم پردازشگر پیام
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
علت: پروکسی API با میزبان مجازی خاص مرتبط نیست
اگر پروکسی API برای پذیرش درخواستها برای میزبان مجازی خاص پیکربندی نشده باشد، میتوانیم پاسخ 404 Not Found را با پیام خطا دریافت Unable to identify proxy for host: VIRTUAL_HOST and url: PATH .
تشخیص
- پیکربندی Proxy Endpoint را برای پراکسی API بررسی کنید و ببینید آیا پروکسی API برای پذیرش درخواستهای میزبان مجازی مشخصشده در خطا پیکربندی شده است یا خیر. این توسط عنصر
VirtualHostنشان داده می شود. بیایید به یک نمونه پیکربندیProxyEndpointبرای درک این موضوع نگاه کنیم.نمونه پیکربندی نقطه پایانی پروکسی که نشان میدهد پروکسی API درخواستهای یک میزبان مجازی امن را میپذیرد

- فرض کنید هاست های مجازی در یک محیط خاص به صورت زیر تعریف می شوند:
نام بندر نام مستعار میزبان default80myorg-prod.apigee.netsecure443myorg-prod.apigee.net - شما با استفاده از URL
http://myorg-prod.apigee.net/weatherیک درخواست API بهVirtualHostdefaultمی کنید. - از آنجایی که
ProxyEndpointهمانطور که در مثال بالا نشان داده شده استVirtualHostdefaultندارد، کد پاسخ404را با پیام خطای زیر دریافت می کنید:{"fault":{"faultstring":"Unable to identify proxy for host: default and url: \/weather","detail":{"errorcode":"messaging.adaptors.http.flow.ApplicationNotFound"}}} - برای رفع این مشکل به بخش Resolution زیر بروید.
- اگر
ProxyEndpointبرای پذیرش درخواستها درVirtualHostdefaultپیکربندی شده است، به علت بعدی بروید - مسیری که با هیچ پروکسی API مرتبط نیست .
قطعنامه
-
VirtualHostاز دست رفته را به پیکربندیProxyEndpointاضافه کنید تا مشکل برطرف شود. برای مثال نشان داده شده در بالا، می توانیدVirtualHostپیش فرض را به شکل زیر به پیکربندیProxyEndpointاضافه کنید:<VirtualHost>default</VirtualHost>
نمونه پیکربندی نقطه پایانی پروکسی که نشان می دهد پیش فرض > VirtualHost> اضافه شده است

- از طرف دیگر، در مثالی که در بالا ذکر شد، اگر میخواهید فقط از
VirtualHostsecureبرای این پراکسی API خاص استفاده کنید، درخواستهای APIVirtualHostsecureاستفاده از پروتکل HTTPS انجام دهید:https://myorg-prod.apigee.net/weather
علت: میزبان مجازی در ویرایش جدید پراکسی API حذف شد
اگر یک ویرایش جدید از یک پروکسی API پس از حذف یک میزبان مجازی خاص (که بخشی از ویرایش قبلی استقرار یافته بود) اجرا شود، که هنوز توسط کلاینتها برای ایجاد درخواستهای API استفاده میشود، میتواند این مشکل را ایجاد کند.
تشخیص
- پیکربندی Proxy Endpoint را برای پراکسی API بررسی کنید تا ببینید آیا پروکسی API برای پذیرش درخواستهای میزبان مجازی مشخصشده در خطا پیکربندی شده است یا خیر. این توسط عنصر
VirtualHostدر پیکربندیProxyEndpointنشان داده می شود. - اگر میزبان مجازی مشخص شده در خطا در پیکربندی
ProxyEndpointوجود ندارد، مراحل زیر را انجام دهید. در غیر این صورت، به دلیل بعدی بروید - مسیر با هیچ پروکسی API مرتبط نیست . - پیکربندی
ProxyEndpointنسخه قبلی مستقر شده را با نسخه فعلی مستقر شده مقایسه کنید.- به عنوان مثال، فرض کنید نسخه قبلی شما
5بوده و نسخه فعلی شما6است:- میزبانهای مجازی در نسخه پایانی پروکسی پیکربندی شدهاند
- میزبانهای مجازی پیکربندی شده در Proxy Endpoint در نسخه 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بود)، درخواستها را به این پروکسی API ارسال میکنید، کد پاسخ404را با پیام خطای زیر دریافت خواهید کرد:{"fault":{"faultstring":"Unable to identify proxy for host: vh1 and url: \/weather","detail":{"errorcode":"messaging.adaptors.http.flow.ApplicationNotFound"}}}
- به عنوان مثال، فرض کنید نسخه قبلی شما
- بررسی کنید که آیا تغییر میزبان مجازی به صورت عمدی یا غیرعمدی در ویرایش فعلی انجام شده است و اقدامات مناسب را همانطور که در بخش Resolution توضیح داده شده است، انجام دهید.
قطعنامه
اگر تشخیص دادید که میزبان مجازی یا هاست ها در یک ویرایش جدید حذف شده اند، ممکن است عمدی بوده یا تصادفی باشد. برای هر مورد، راه حل / مراحل توصیه شده زیر را برای حل مشکل انجام دهید.
سناریوی شماره 1: تغییر عمدی
در صورتی که حذف میزبان مجازی عمدی باشد، میتوانید یکی از گزینههای زیر را انتخاب کنید که اولین گزینه آن رویکرد پیشنهادی است:
- یک پروکسی جدید با یک مسیر پایه متفاوت ایجاد کنید و از یک میزبان مجازی متفاوت (که در نسخه قبلی وجود ندارد) استفاده کنید.
اگر می خواهید به استفاده از پروکسی API موجود ادامه دهید اما از میزبان مجازی دیگری استفاده کنید، بهتر است هاست مجازی موجود را حفظ کرده و میزبان مجازی اضافی را اضافه کنید.
این تضمین می کند که کاربران این پروکسی API تحت تأثیر این تغییر قرار نگیرند.
اگر می خواهید از پروکسی API موجود استفاده کنید و فقط یک میزبان مجازی متفاوت داشته باشید، از قبل به کاربران خود اطلاع دهید و این تغییر را در یک دوره تعمیر و نگهداری انجام دهید.
این اطمینان حاصل می کند که کاربران این پروکسی API از تغییر آگاه هستند و می توانند از یک میزبان مجازی متفاوت برای برقراری تماس با این پروکسی API استفاده کنند. از این رو، آنها تحت تأثیر این تغییر قرار نخواهند گرفت.
سناریوی شماره 2: تغییر ناخواسته
در صورتی که حذف هاست مجازی به اشتباه و عمدی انجام نشده است، موارد زیر را انجام دهید:
- پیکربندی
ProxyEndpointرا در نسخهای که در حال حاضر مستقر شده است، بهروزرسانی کنید تا از همان میزبانهای مجازی استفاده شود که در نسخه قبلی استفاده شده بود. در مثال بالا، بخش زیر را از:<HTTPProxyConnection> <BasePath>/weather</BasePath> <Properties/> <VirtualHost>secure</VirtualHost> </HTTPProxyConnection>به
<HTTPProxyConnection> <BasePath>/weather</BasePath> <Properties/> <VirtualHost>vh1</VirtualHost> </HTTPProxyConnection> - بازنگری را دوباره اجرا کنید.
بهترین شیوه ها
همیشه توصیه میشود که پراکسیهای جدید یا بازبینیهای جدید را در طول یک دوره تعمیر و نگهداری یا زمانی که کمترین ترافیک را انتظار میرود، مستقر کنید تا بتوان از هرگونه مشکلی که در حین استقرار ایجاد میشود جلوگیری کرد یا تأثیر آن بر ترافیک را به حداقل رساند.
علت: مسیر با هیچ پروکسی API مرتبط نیست
اگر پروکسی API برای پذیرش درخواستهای مسیر خاص مورد استفاده در URL درخواست API پیکربندی نشده باشد، میتوانیم پاسخ 404 Not Found را با پیام خطا دریافت Unable to identify proxy for host: VIRTUAL_HOST and url: PATH .
تشخیص
- به پیکربندی
ProxyEndpointبرای پراکسی API خاصی که قصد داشتید درخواست های API را برای آن ارسال کنید، نگاه کنید. - بررسی کنید که آیا پروکسی API برای پذیرش درخواستها برای مسیر خاصی که در پیام خطا نشان داده شده است پیکربندی شده است. می توانید این کار را با انجام مراحل در سناریو شماره 1 و سناریو شماره 2 انجام دهید.
سناریوی شماره 1: مسیر با مسیر پایه پروکسی API مطابقت ندارد
- اگر
pathنشاندادهشده در پیام خطا باbasepathپروکسی API خاص یکسان نباشد یا باbasepathشروع نشود، میتواند دلیل این خطا باشد. - برای توضیح این موضوع مثالی می زنیم:
-
basepathپروکسی API مورد نظر/weatherاست - URL درخواست API
https://myorg-prod.apigee.net/climateاست. این بدان معنی است که مسیر مورد استفاده در URL درخواست API/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 درخواست API شما باbasepathپروکسی API خاص یکسان است. - در مثال بالا، URL درخواست API باید به صورت زیر باشد:
{ https://myorg-prod.apigee.net/weather
سناریوی شماره 2: مسیر با هیچ یک از جریان های شرطی موجود مطابقت ندارد
- اگر
pathمورد استفاده در URL درخواست API باbasepathشروع شود، ممکن استpath suffix(بخشی که بعد ازbasepathمی آید) که در پیام خطا نشان داده شده است با هیچ یک از جریان های شرطی مطابقت نداشته باشد، در این صورت ممکن است باعث404شود. خطا - برای توضیح این موضوع مثالی می زنیم:
-
basepathپروکسی API مورد نظر/weatherاست - URL درخواست API
https://myorg-prod.apigee.net/weather/Delhiاست. این بدان معنی است که مسیر مورد استفاده در URL درخواست API/weather/Delhi.
-
- در این مثال،
pathباbasepath/weatherشروع می شود. علاوه بر این، دارایpath suffix/Delhiاست. - اکنون بررسی کنید که آیا جریان های شرطی در
ProxyEndpointوجود دارد یا خیر. - اگر جریان های مشروط وجود ندارد یا چند جریان غیرشرطی وجود دارد، به دلیل بعدی بروید - پراکسی API در یک محیط مستقر نشده است .
- اگر
ProxyEndpointفقط دارای جریان های شرطی است، موارد زیر را بررسی کنید:- اگر شرایط در همه این جریان های شرطی یک
proxy.pathsuffixخاص (مسیر بعد از مسیر پایه) را بررسی کنید. - و اگر
path suffixمشخص شده در URL درخواست API با هیچ یک از شرایط مطابقت نداشته باشد، این دلیل خطا است.
- اگر شرایط در همه این جریان های شرطی یک
- فرض کنید دو جریان در
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 درخواست API است، وجود ندارد. - این دلیل خطای
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 API با یکی از جریانهای شرطی مطابقت داشته باشد، به علت بعدی بروید - پراکسی API در یک محیط مستقر نشده است .
علت: پراکسی API در یک محیط مستقر نشده است
تشخیص
- محیطی را که نام مستعار میزبان استفاده شده در URL درخواست API شما وجود دارد، تعیین کنید. این کار را می توان با بررسی جزئیات همه هاست های مجازی در هر یک از محیط های سازمان شما در رابط کاربری Edge انجام داد.
به عنوان مثال، پیکربندی زیر را در نظر بگیرید:
- اگر
http://myorg-prod.apigee.net/weatherURL شما است،myorg-prod.apigee.netنام مستعار میزبان است. - میزبان مستعار
myorg-prod.apigee.netبه عنوان بخشی از یکی از میزبان های مجازی در محیطprodسازمان شما پیکربندی شده است.
- اگر
- بررسی کنید که آیا پروکسی API خاص در محیط خاصی که در مرحله 1 در بالا تعیین شده است مستقر شده است یا خیر.
- اگر پراکسی API در یک محیط خاص مستقر نشده باشد، پس این دلیل خطای
404است.- بنابراین در مثال مورد استفاده در مرحله 1 در بالا، فرض کنید پروکسی API در محیط
prodمستقر نشده است، پس این دلیل خطا است. - به بخش Resolution در زیر بروید.
- بنابراین در مثال مورد استفاده در مرحله 1 در بالا، فرض کنید پروکسی API در محیط
- اگر پروکسی API در یک محیط خاص مستقر شده است، به علت بعدی بروید - محیط در پردازشگرهای پیام بارگذاری نشده است .
قطعنامه
پراکسی API را در محیط خاصی که قصد دارید درخواست های API را در آن ایجاد کنید، مستقر کنید.
علت: محیط در پردازشگرهای پیام بارگذاری نشده است
تشخیص
- به هر یک از پردازشگرهای پیام وارد شوید و بررسی کنید که آیا محیط خاصی که در آن درخواست API را انجام می دهید، با استفاده از دستور زیر بر روی پردازشگر پیام بارگذاری شده است:
curl -v 0:8082/v1/runtime/organizations/<orgname>/environments
- اگر محیط خاص به عنوان بخشی از دستور بالا فهرست شده است، به علت بعدی بروید - پروکسی API در یک یا چند پردازشگر پیام مستقر نشده است .
- اگر محیط خاصی در لیست نیست،
/opt/apigee/var/log/edge-message-processor/logs/system.logو/opt/apigee/var/log/edge-message-processor/logs/startupruntimeerrors.logبرای هر گونه خطا در حین بارگیری محیط ها، در پردازشگرهای پیام/opt/apigee/var/log/edge-message-processor/logs/startupruntimeerrors.log. - ممکن است خطاهای مختلفی وجود داشته باشد که می تواند منجر به شکست در بارگیری یک محیط در پردازشگر پیام شود. وضوح به خطای رخ داده بستگی دارد.
قطعنامه
ممکن است به دلایل زیادی محیط روی Message Processor بارگذاری نشود. این بخش چند دلیل احتمالی را نشان می دهد که می تواند منجر به این مشکل شود و توضیح می دهد که چگونه مشکل را حل کنید.
اگر یکی از خطاهای زیر را در گزارش پردازشگر پیام مشاهده کردید، پس از آن مشکلی ایجاد میشود که در گواهیها/کلیدهایی که در محیط مشخص شده به ذخیرهسازی کلید/تراستور مشخص شده اضافه شدهاند، ایجاد میشود.
خطای شماره 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
- با استفاده از فراخوانی مدیریت API زیر، جزئیات keystore/truststore مشخص شده در پیام خطای نشان داده شده در مرحله قبل را دریافت کنید:
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 معمولاً حاوی کلید نیست. در صورت وجود، بهتر است یک گواهی و یک کلید داشته باشید. - جزئیات مربوط به دو گواهی را با استفاده از API زیر دریافت کنید:
curl -s http://<management-IPaddress>:8080/v1/runtime/organizations/<org-name>/environments/<env-name>/keystores/<keystore-name>/certs/<cert-name>
- تاریخ انقضای هر یک از گواهینامه ها را بررسی کنید و گواهی منقضی شده/قدیمی را تعیین کنید.
- گواهی منقضی شده یا ناخواسته را از Truststore
myTruststoreحذف کنید.
اگر مشکل همچنان پابرجا بود یا اگر خطای دیگری غیر از موارد ذکر شده در مرحله 1 در بالا مشاهده کردید، به اطلاعات باید جمعآوری شود.
علت: پراکسی API در یک یا چند پردازشگر پیام مستقر نشده است
پروکسی API ممکن است روی یک یا چند پردازشگر پیام مستقر نشود. این مشکل به ندرت رخ می دهد و بیشتر به دلیل عدم وجود یک اعلان رویداد از سرور مدیریت به پردازشگر پیام در حین استقرار پروکسی API خاص رخ می دهد. در این مورد نیز، شما نمی توانید جلسه ردیابی را در رابط کاربری Edge ایجاد کنید.
تشخیص
- به هر یک از پردازشگرهای پیام وارد شوید و بررسی کنید که آیا ویرایش خاص پروکسی API مستقر شده است یا نه با استفاده از دستور زیر:
curl -v 0:8082/v1/runtime/organizations/<orgname>/environments/<envname>/apis/<apiname>/revisions
- اگر بازبینی خاص پراکسی API به عنوان خروجی فرمان ذکر شده در مرحله 1 در بالا نشان داده نشد، پردازشگر پیام خاص را همانطور که در Resolution توضیح داده شده مجدداً راه اندازی کنید.
- مراحل 1-2 را برای همه پردازشگرهای پیام تکرار کنید.
- اگر بازبینی خاص پروکسی API در همه پردازشگرهای پیام مستقر شده باشد، این دلیل این مشکل نیست. به اطلاعات تشخیصی باید جمع آوری شود .
قطعنامه
پردازشگرهای پیام خاصی را که ویرایش خاصی از پراکسی API روی آنها اجرا نشده است، مجدداً راه اندازی کنید.
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
با استفاده از API Monitoring مشکلات را تشخیص دهید
API Monitoring شما را قادر میسازد تا مناطق مشکلدار را به سرعت جدا کنید تا خطاها، عملکرد، و مشکلات تأخیر و منبع آنها، مانند برنامههای توسعهدهنده، پراکسیهای API، اهداف باطنی یا پلتفرم API را تشخیص دهید.
برای این مشکل می توانید به صفحه API Monitoring > Investigate بروید و تاریخ مناسب، پراکسی و غیره را انتخاب کنید و ممکن است جزئیات زیر را مشاهده کنید:

- کد خطا:
messaging.adaptors.http.flow.ApplicationNotFound - کد وضعیت:
404 - منبع خطا:
ApigeeیاMP
علاوه بر این، می توانید همانطور که در تصویر بالا نشان داده شده است، روی View logs کلیک کنید و بیشتر بررسی کنید.

مرحله از طریق یک سناریوی نمونه نحوه عیبیابی مشکلات 5xx با APIهای خود را با استفاده از API Monitoring نشان میدهد. برای مثال، ممکن است بخواهید هشداری تنظیم کنید تا زمانی که تعداد 404 کد وضعیت از یک آستانه خاص فراتر رفت، به شما اطلاع داده شود.
باید اطلاعات تشخیصی را جمع آوری کرد
اگر حتی پس از پیروی از دستورالعمل های بالا، مشکل همچنان ادامه داشت، اطلاعات تشخیصی زیر را جمع آوری کنید. تماس بگیرید و این اطلاعات را با پشتیبانی Apigee Edge به اشتراک بگذارید.
- اگر کاربر Public Cloud هستید، اطلاعات زیر را ارائه دهید:
- نام سازمان
- نام محیط زیست
- نام پروکسی API
- برای بازتولید خطا، دستور curl را کامل کنید
- اگر کاربر Private Cloud هستید، اطلاعات زیر را ارائه دهید:
- پیغام خطای کامل مشاهده شد
- نام محیط زیست
- بسته پروکسی API
- گزارشهای پردازشگر پیام
/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 - جزئیات مربوط به بخشهایی که در این کتاب راهنما امتحان کردهاید و هر بینش دیگری که به ما در پیگیری سریع حل این مشکل کمک میکند.