একটি এক্সটেনশন ডিবাগ করা হচ্ছে

আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন
.info- তে যান।

আপনি দুটি জায়গায় দৃশ্যমান বার্তা ব্যবহার করে একটি এক্সটেনশন ডিবাগ করতে পারেন: ট্রেস টুল এবং এক্সটেনশন লগ। যখন একটি এক্সটেনশন কাজ করে না, তখন সমস্যাটি শনাক্ত করার জন্য কখনও কখনও উভয় জায়গা থেকেই তথ্যের প্রয়োজন হতে পারে।

  • Apigee Edge Trace টুলটি এমন একটি জায়গা যেখানে আপনি আপনার এপিআই প্রক্সি কোড তৈরি করার সময় তা পর্যায়ক্রমে পরীক্ষা ও সম্পাদনা করতে পারেন। ট্রেস মেসেজগুলোতে আপনার এপিআই প্রক্সি কোডের ত্রুটিগুলো অন্তর্ভুক্ত থাকে, যার মধ্যে এপিআই প্রক্সি এবং পলিসি কনফিগারেশনও রয়েছে।

    ট্রেস টুলে প্রদর্শিত এক্সটেনশন-সম্পর্কিত ত্রুটিগুলিতে সাধারণত খুব বেশি বিস্তারিত তথ্য থাকে না, শুধু কোন এক্সটেনশন কলআউটটি ব্যর্থ হয়েছে এবং তার সাথে একটি HTTP ত্রুটি কোড উল্লেখ থাকে। যখন আপনি এখানে কোনো কাজের তথ্য দেখতে পান না, তখন আপনার ব্যবহৃত এক্সটেনশনটির লগ দেখাই সবচেয়ে ভালো উপায়।

  • এক্সটেনশনগুলো রানটাইমে লগ এন্ট্রি তৈরি করে। (এক্সটেনশন লগ শুধুমাত্র সংস্থা প্রশাসকদের জন্য উপলব্ধ।)

    এই লগগুলিতে সেই বাহ্যিক রিসোর্স থেকে প্রাপ্ত এন্ট্রিগুলি অন্তর্ভুক্ত থাকে, যার সাথে এক্সটেনশনটি ইন্টারঅ্যাক্ট করার জন্য কনফিগার করা হয়েছে। উদাহরণস্বরূপ, যদি এক্সটেনশনটিতে বাহ্যিক রিসোর্সের ক্রেডেনশিয়ালগুলি ভুলভাবে কনফিগার করা থাকে, তাহলে ত্রুটিটি সম্ভবত এখানে দেখা যাবে।

    লগগুলিতে অভ্যন্তরীণ এক্সটেনশন কোডের এন্ট্রিও অন্তর্ভুক্ত থাকে। লগগুলি দেখার সময় মনে রাখবেন যে, কিছু এন্ট্রি আপনি যে ত্রুটিটি সংশোধন করছেন তার সাথে প্রাসঙ্গিক নয়। এক্সটেনশন-সম্পর্কিত লগ এন্ট্রিগুলি সাধারণত ' details শব্দটি দিয়ে শুরু হয়, যেমন ক্লাউড পাব/সাব এক্সটেনশনের নিম্নলিখিত লগ এন্ট্রিটিতে দেখা যায়:

    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 পলিসি থেকে শুরু হয়ে, এক্সটেনশনের মধ্য দিয়ে বাহ্যিক রিসোর্সে যায় এবং তারপর আবার ফিরে আসে। তাই এই স্থানগুলোর যেকোনোটিতেই ত্রুটি ঘটতে পারে।

আপনি যে ত্রুটিগুলো দেখতে পান, সেগুলো নিম্নলিখিত বিভাগগুলোর অন্তর্ভুক্ত হতে পারে।

এক্সটেনশন কনফিগারেশনে ত্রুটি

কোনো এনভায়রনমেন্টে এক্সটেনশন যোগ করার সময় একজন অর্গানাইজেশন অ্যাডমিনিস্ট্রেটর এই কনফিগারেশনটি করে থাকেন

উদাহরণস্বরূপ, আপনি যদি একটি ভুল গুগল ক্লাউড প্রজেক্ট আইডি দিয়ে ক্লাউড লগিং এক্সটেনশনটি কনফিগার করেন, তাহলে গুগল ক্লাউড লগিং এক্সটেনশনটিতে একটি ত্রুটি বার্তা পাঠাবে। এই ত্রুটিগুলোর বিস্তারিত বিবরণ সাধারণত এক্সটেনশন লগে পাওয়া যায়।

ট্রেস টুলে প্রমাণ

প্রক্সি এডিটরে, এই ত্রুটিগুলো সাধারণত 4xx বা 5xx স্তরের ত্রুটি হিসাবে প্রদর্শিত হয়। তবে, প্রক্সি এডিটরটি ত্রুটির কারণ সম্পর্কে কোনো নির্দিষ্ট তথ্য প্রদর্শন করে না, শুধু এটুকু বলে যে এক্সটেনশনটি একটি ত্রুটি দেখিয়েছে।

{
  "fault": {
    "faultstring":"Execution of ConnectorCallout Logging-Extension failed. Reason: Connector returned error statuscode=500",
    "detail": {
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

সম্প্রসারণ লগগুলিতে প্রমাণ

এই ধরনের ত্রুটি সম্পর্কে বিস্তারিত তথ্য থাকলে, আপনি তা এক্সটেনশনের লগ এন্ট্রিতে দেখতে পাবেন। ক্লাউড পাব/সাব পরিষেবা দ্বারা ফেরত আসা নিম্নলিখিত ত্রুটি বার্তাটি একটি ত্রুটিপূর্ণ প্রজেক্ট আইডির কারণে ঘটে।

details: 'Project does not exist: example-test-12345'

ExtensionCallout পলিসি কনফিগারেশনে ত্রুটি

এই ত্রুটিগুলি ঘটে যখন ExtensionCallout পলিসিটি ভুলভাবে কনফিগার করা হয়, হয় পলিসি কনফিগারেশন সিনট্যাক্স ত্রুটির কারণে অথবা ভুল কনফিগারেশন কী বা ভ্যালুর মাধ্যমে। পলিসিটি কীভাবে কনফিগার করা হয়েছে তার উপর নির্ভর করে এই ত্রুটিগুলি দুই ধরনের হয়:

  • বাহ্যিক উৎস দ্বারা মূল্যায়ন করা ভুল মান

    এটি তখন ঘটতে পারে যখন কনফিগারেশন ত্রুটিটি এক্সটেনশনের কাছে বৈধ বলে মনে হলেও, বাহ্যিক রিসোর্সের জন্য তা অবৈধ ছিল। উদাহরণস্বরূপ, যদি এক্সটেনশনটি ক্লাউড স্প্যানার- এ একটি ভুল ডাটাবেস আইডি পাঠায়, তাহলে ক্লাউড স্প্যানার একটি ত্রুটি ফেরত দেবে যা এক্সটেনশন লগ-এ নথিভুক্ত হবে:

    details: 'Database not found: projects/example-test-123456/instances/spanner-extension-example-db/databases/my-business-d'
    

    পলিসির <Input> এলিমেন্টে ভুল কনফিগারেশন JSON-এর কারণেও এটি ঘটতে পারে। কিছু এক্সটেনশনের ক্ষেত্রে, JSON-এর একটি অংশ এক্সটেনশন দ্বারা প্রসেস করা হয় এবং অন্য একটি অংশ রিসোর্সে পাঠানো হয়। উদাহরণস্বরূপ, ক্লাউড লগিং এক্সটেনশনের কনফিগারেশন JSON-এ একটি metadata অবজেক্ট থাকে, যার বিষয়বস্তু ক্লাউড লগিং- এ পাঠানো হয়। সেখানে ভুল কী-নেম—যেমন type এর পরিবর্তে typ এক্সটার্নাল রিসোর্স থেকে এরর আনতে পারে, যা এক্সটেনশন লগে এন্ট্রি হিসেবে দেখা যায়:

    details: 'Resource type cannot be empty'
    
  • এক্সটেনশন দ্বারা মূল্যায়ন করা ভুল মান

    এই ত্রুটিগুলোর মধ্যে রয়েছে <Input> এলিমেন্ট JSON-এর পলিসি-মূল্যায়িত অংশে সিনট্যাক্স ত্রুটি, <Action> এলিমেন্টে অ্যাকশনের নামের বানান ভুল ইত্যাদি। এই ত্রুটিগুলো সাধারণত ট্রেস টুলে দেখা যায়, কিন্তু এক্সটেনশন লগে দেখা যায় না।

ট্রেস টুলে প্রমাণ

প্রক্সি এডিটরে, এই ত্রুটিগুলি সাধারণত 4xx বা 5xx স্তরের ত্রুটি হিসাবে প্রদর্শিত হয়। তবে, প্রক্সি এডিটর ত্রুটির কারণ সম্পর্কে কোনো নির্দিষ্ট তথ্য প্রদর্শন করে না, শুধু এটুকু বলে যে এক্সটেনশনটি একটি ত্রুটি দেখিয়েছে। ক্লাউড ফায়ারস্টোর এক্সটেনশনে অ্যাকশনের নাম ভুল বানান করলে ট্রেস টুলে নিম্নলিখিত ত্রুটিটি দেখা যায়।

{
  "fault":{
    "faultstring":"Execution of ConnectorCallout Add-User-Data failed. Reason: Connector returned error statuscode=404","detail":
    {
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

সম্প্রসারণ লগগুলিতে প্রমাণ

যখন পলিসি কনফিগারেশনের ফলে এক্সটার্নাল রিসোর্সে কোনো প্রসেসিং ত্রুটি ঘটে, তখন সেই ত্রুটিটি সাধারণত লগে প্রদর্শিত হয়।

এটি এমন একটি ত্রুটি যেখানে এক্সটেনশনের সাথে সম্পর্কহীন কোনো কারণে বাহ্যিক রিসোর্সের অনুরোধটি সফল হয়নি।

উদাহরণস্বরূপ, ধরুন আপনি ডেটাবেসে একটি সারি যোগ করার জন্য ক্লাউড স্প্যানার এক্সটেনশন ব্যবহার করছেন, কিন্তু সারিটির প্রাইমারি কী ভ্যালুটি ইতিমধ্যেই একটি বিদ্যমান সারিতে ব্যবহৃত হয়েছে। ক্লাউড স্প্যানার এক্সটেনশনটিকে একটি ত্রুটি ফেরত পাঠাবে, যা এক্সটেনশন লগে যুক্ত হবে।

ট্রেস টুলে প্রমাণ

প্রক্সি এডিটরে, এই ত্রুটিগুলো সাধারণত 4xx বা 5xx স্তরের ত্রুটি হিসাবে প্রদর্শিত হয়। তবে, প্রক্সি এডিটরটি ত্রুটির কারণ সম্পর্কে কোনো নির্দিষ্ট তথ্য প্রদর্শন করে না, শুধু এটুকু বলে যে এক্সটেনশনটি একটি ত্রুটি দেখিয়েছে।

{
  "fault":{
    "faultstring":"Execution of ConnectorCallout Add-User-Data failed. Reason: Connector returned error statuscode=404",
    "detail":{
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

সম্প্রসারণ লগগুলিতে প্রমাণ

লগটিতে সাধারণত বাহ্যিক রিসোর্সটি থেকে আসা বার্তা সহ এন্ট্রি থাকবে। ক্লাউড স্প্যানার থেকে প্রাপ্ত নিম্নলিখিত লগ বার্তাটি বিদ্যমান প্রাইমারি কী মানের ত্রুটি বর্ণনা করে।

details: 'Row [jonesy42] in table user already exists'