شما در حال مشاهده اسناد Apigee Edge هستید.
به مستندات Apigee X بروید . اطلاعات
می توانید با استفاده از پیام هایی که در دو مکان قابل مشاهده است، یک برنامه افزودنی را اشکال زدایی کنید: ابزار Trace و گزارش های برنامه افزودنی. هنگامی که یک برنامه افزودنی کار نمی کند، شناسایی مشکل گاهی اوقات به اطلاعات هر دو مکان نیاز دارد.
ابزار Apigee Edge Trace جایی است که شما به طور مکرر کد پروکسی API را هنگام توسعه آزمایش و ویرایش می کنید. پیامهای ردیابی شامل خطاهایی از کد پروکسی API شما، از جمله پروکسی API و پیکربندی خطمشی است.
خطاهای مربوط به برنامه افزودنی که در ابزار Trace ظاهر میشوند معمولاً حاوی جزئیات زیادی نیستند، به جز اینکه بگویند کدام برنامه افزودنی شکست خورده است، همراه با کد خطای HTTP. هنگامی که هیچ چیز مفیدی در اینجا نمی بینید، بهترین مکان بعدی برای جستجو، گزارش برنامه افزودنی است که استفاده می کنید.
برنامه های افزودنی در زمان اجرا، ورودی های گزارش را ایجاد می کنند. (گزارش های برنامه افزودنی فقط برای مدیران سازمان در دسترس هستند.)
این گزارشها شامل ورودیهای بازگردانده شده توسط منبع خارجی است که برنامه افزودنی برای تعامل با آن پیکربندی شده است. به عنوان مثال، اگر اعتبار منبع خارجی در برنامه افزودنی به اشتباه پیکربندی شده باشد، احتمالاً خطا در اینجا ظاهر می شود.
گزارشها همچنین شامل ورودیهایی از کد داخلی داخلی هستند. هنگامی که در حال بررسی گزارشها هستید، به خاطر داشته باشید که برخی از ورودیها به خطایی که اصلاح میکنید مرتبط نیستند. ورودیهای گزارش مربوط به برنامه افزودنی معمولاً با کلمه
details
شروع میشوند، مانند ورودی گزارش زیر از پسوند Cloud Pub/Sub :details: 'Invalid resource name given (name=projects/example-test-123456/topic/extension-example). Refer to https://cloud.google.com/pubsub/docs/admin#resource_names for more information.'
انواع و علل خطا
پردازش درخواست برنامه افزودنی از یک خط مشی ExtensionCallout در یک پراکسی API، از طریق برنامه افزودنی، به منبع خارجی منتقل میشود، سپس دوباره برمیگردد. بنابراین ممکن است در هر یک از آن مکان ها خطا رخ دهد.
خطاهایی که مشاهده می کنید ممکن است در دسته های زیر قرار گیرند.
خطا در پیکربندی برنامه افزودنی
این پیکربندی است که یک مدیر سازمان هنگام افزودن یک برنامه افزودنی به یک محیط انجام می دهد .
به عنوان مثال، اگر افزونه Cloud Logging را با شناسه پروژه Google Cloud نادرست پیکربندی کنید، Google Cloud Logging یک خطا را به برنامه افزودنی برمی گرداند. جزئیات مربوط به این خطاها معمولاً در گزارش برنامه افزودنی است.
شواهد در ابزار Trace
در ویرایشگر پروکسی، این خطاها معمولاً به صورت خطای سطح 4xx
- یا 5xx
نشان داده می شوند. با این حال، ویرایشگر پروکسی هیچ جزئیات خاصی را در مورد علت خطا نشان نمی دهد، به جز اینکه بگوید برنامه افزودنی یک خطا را برگردانده است.
{
"fault": {
"faultstring":"Execution of ConnectorCallout Logging-Extension failed. Reason: Connector returned error statuscode=500",
"detail": {
"errorcode":"steps.connectorcallout.ExecutionFailed"
}
}
}
شواهد در لاگ های افزونه
اگر جزئیاتی در مورد این نوع خطا وجود دارد، آن را در ورودی های گزارش برنامه افزودنی خواهید دید. پیام خطای زیر که توسط سرویس Cloud Pub/Sub برگردانده شده است، ناشی از یک شناسه پروژه نادرست است.
details: 'Project does not exist: example-test-12345'
خطاها در پیکربندی خط مشی ExtensionCallout
این خطاها زمانی رخ میدهند که خطمشی ExtensionCallout به اشتباه پیکربندی شود، یا از طریق یک خطای نحوی پیکربندی خطمشی یا از طریق کلیدهای پیکربندی نادرست یا مقادیر. بسته به نحوه پیکربندی خط مشی، این خطاها دو شکل دارند:
مقادیر نادرست ارزیابی شده توسط منبع خارجی
این می تواند زمانی رخ دهد که خطای پیکربندی برای برنامه افزودنی معتبر به نظر می رسد، اما برای منبع خارجی نامعتبر است. به عنوان مثال، اگر برنامه افزودنی یک شناسه پایگاه داده نادرست را به Cloud Spanner ارسال کند، Cloud Spanner خطایی را که در گزارش برنامه افزودنی ثبت شده است برمیگرداند:
details: 'Database not found: projects/example-test-123456/instances/spanner-extension-example-db/databases/my-business-d'
این می تواند برای پیکربندی نادرست JSON در عنصر
<Input>
خط مشی نیز رخ دهد. برای برخی از برنامههای افزودنی، بخشی از JSON توسط افزونه پردازش میشود و بخشی به منبع ارسال میشود. به عنوان مثال، پیکربندی برنامه افزودنی Cloud Logging JSON شامل یک شیmetadata
است که محتوای آن به Cloud Logging ارسال می شود. نامهای کلید نادرست در آنجا - مانندtyp
به جایtype
- میتوانند خطاهایی را از منبع خارجی که به عنوان ورودی در گزارش برنامه افزودنی ظاهر میشوند، برگردانند:details: 'Resource type cannot be empty'
مقادیر نادرست توسط برنامه افزودنی ارزیابی شده است
این خطاها شامل خطاهای نحوی در بخشهای ارزیابیشده با سیاست عنصر
<Input>
JSON، غلط املایی نام اقدام در عنصر<Action>
و غیره است. این خطاها معمولاً در ابزار Trace ظاهر می شوند، اما در لاگ های برنامه افزودنی ظاهر نمی شوند.
شواهد در ابزار Trace
در ویرایشگر پروکسی، این خطاها معمولاً به صورت خطای سطح 4xx
- یا 5xx
نشان داده می شوند. با این حال، ویرایشگر پروکسی هیچ جزئیات خاصی را در مورد علت خطا نشان نمی دهد، به جز اینکه بگوید برنامه افزودنی یک خطا را برگردانده است. خطای زیر در ابزار Trace هنگام نوشتن اشتباه نام عمل در پسوند Cloud Firestore ظاهر می شود.
{
"fault":{
"faultstring":"Execution of ConnectorCallout Add-User-Data failed. Reason: Connector returned error statuscode=404","detail":
{
"errorcode":"steps.connectorcallout.ExecutionFailed"
}
}
}
شواهد در لاگ های افزونه
هنگامی که پیکربندی خط مشی منجر به خطای پردازش در منبع خارجی می شود، خطا معمولاً در گزارش ظاهر می شود.
خطاهای مربوط به درخواست برنامه افزودنی به منبع
این خطایی است که در آن درخواست به منبع خارجی به دلایلی که به برنامه افزودنی مربوط نمی شود موفق نشد.
برای مثال، تصور کنید از پسوند Cloud Spanner برای افزودن یک ردیف به پایگاه داده استفاده میکنید، اما مقدار کلید اصلی ردیف قبلاً در یک ردیف موجود استفاده میشود. Cloud Spanner یک خطا را به برنامه افزودنی برمیگرداند که خطا را به گزارش برنامه افزودنی اضافه میکند.
شواهد در ابزار Trace
در ویرایشگر پروکسی، این خطاها معمولاً به صورت خطای سطح 4xx
- یا 5xx
نشان داده می شوند. با این حال، ویرایشگر پروکسی هیچ جزئیات خاصی را در مورد علت خطا نشان نمی دهد، به جز اینکه بگوید برنامه افزودنی یک خطا را برگردانده است.
{
"fault":{
"faultstring":"Execution of ConnectorCallout Add-User-Data failed. Reason: Connector returned error statuscode=404",
"detail":{
"errorcode":"steps.connectorcallout.ExecutionFailed"
}
}
}
شواهد در لاگ های افزونه
گزارش معمولا دارای ورودی هایی با پیام هایی از خود منبع خارجی است. پیام گزارش زیر از Cloud Spanner خطای مقدار کلید اولیه موجود را شرح می دهد.
details: 'Row [jonesy42] in table user already exists'