किसी एक्सटेंशन को डीबग करना

Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं.
जानकारी

दो जगहों पर दिखने वाले मैसेज का इस्तेमाल करके, किसी एक्सटेंशन को डीबग किया जा सकता है: ट्रेस टूल और एक्सटेंशन लॉग. जब कोई एक्सटेंशन काम नहीं कर रहा होता है, तो समस्या की पहचान करने के लिए कभी-कभी दोनों जगहों से जानकारी की ज़रूरत हो सकती है.

  • Apigee Edge ट्रेस टूल एक ऐसी जगह है जहां एपीआई प्रॉक्सी कोड को डेवलप करने के बाद, बार-बार उसकी जांच की जा सकती है और उसमें बदलाव किया जा सकता है. ट्रेस मैसेज में, आपके एपीआई प्रॉक्सी कोड की गड़बड़ियां और एपीआई प्रॉक्सी और नीति कॉन्फ़िगरेशन की गड़बड़ियां शामिल हैं.

    ट्रेस टूल में दिखाई देने वाली एक्सटेंशन से जुड़ी गड़बड़ियां, आम तौर पर एचटीटीपी गड़बड़ी कोड के साथ ज़्यादा जानकारी नहीं देती हैं. सिर्फ़ यह बताने के लिए किया जाता है कि कौनसा एक्सटेंशन कॉल आउट नहीं हुआ. जब आपको यहां कुछ भी उपयोगी नहीं दिखता, तो देखने के लिए अगला सबसे अच्छा स्थान आपके द्वारा उपयोग किए जा रहे एक्सटेंशन का लॉग होता है.

  • एक्सटेंशन, रनटाइम के दौरान लॉग एंट्री जनरेट करते हैं. (एक्सटेंशन लॉग सिर्फ़ संगठन के एडमिन के लिए उपलब्ध हैं.)

    इन लॉग में, बाहरी संसाधन से मिली एंट्री शामिल होती हैं जिनके साथ इंटरैक्ट करने के लिए एक्सटेंशन को कॉन्फ़िगर किया गया है. उदाहरण के लिए, अगर एक्सटेंशन में बाहरी संसाधन के क्रेडेंशियल गलत तरीके से कॉन्फ़िगर किए गए हैं, तो यहां गड़बड़ी दिख सकती है.

    लॉग में, इंटरनल एक्सटेंशन कोड की एंट्री भी शामिल होती हैं. लॉग देखते समय, ध्यान रखें कि कुछ एंट्री इस गड़बड़ी के लिए काम की नहीं होती हैं. एक्सटेंशन से जुड़ी लॉग एंट्री आम तौर पर 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.'
    

गड़बड़ी के टाइप और वजहें

किसी एपीआई प्रॉक्सी में, एक्सटेंशन कॉलआउट की नीति से एक्सटेंशन को प्रोसेस करने का अनुरोध, एक्सटेंशन के ज़रिए, बाहरी संसाधन तक जाता है और फिर वापस भेजा जाता है. इसलिए, उनमें से किसी भी जगह पर गड़बड़ी हो सकती है.

आपको दिखने वाली गड़बड़ियां, इन कैटगरी में आ सकती हैं.

एक्सटेंशन के कॉन्फ़िगरेशन में गड़बड़ियां

यह एक कॉन्फ़िगरेशन कॉन्फ़िगरेशन है, जिसे संगठन का एडमिन किसी एनवायरमेंट में एक्सटेंशन जोड़ते समय करता है.

उदाहरण के लिए, अगर क्लाउड लॉगिंग एक्सटेंशन को किसी गलत Google Cloud प्रोजेक्ट आईडी के साथ कॉन्फ़िगर किया जाता है, तो Google Cloud Logging, एक्सटेंशन के लिए गड़बड़ी दिखाएगा. इन गड़बड़ियों की जानकारी आम तौर पर एक्सटेंशन लॉग में होती है.

ट्रेस टूल में सबूत

प्रॉक्सी एडिटर में, ये गड़बड़ियां आम तौर पर 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'

एक्सटेंशन कॉलआउट नीति के कॉन्फ़िगरेशन में गड़बड़ियां

ये गड़बड़ियां तब होती हैं, जब एक्सटेंशन कॉल आउट नीति को गलत तरीके से कॉन्फ़िगर किया जाता है. ऐसा नीति कॉन्फ़िगरेशन सिंटैक्स की गड़बड़ी या गलत कॉन्फ़िगरेशन कुंजियों या वैल्यू की वजह से होता है. नीति को कॉन्फ़िगर करने के तरीके के आधार पर, ये गड़बड़ियां दो तरह की हो सकती हैं:

  • बाहरी संसाधन ने गलत वैल्यू का आकलन किया है

    ऐसा तब हो सकता है, जब कॉन्फ़िगरेशन की गड़बड़ी, एक्सटेंशन के लिए मान्य हो, लेकिन बाहरी संसाधन के लिए अमान्य हो. उदाहरण के लिए, अगर एक्सटेंशन Cloud Spanner में गलत डेटाबेस आईडी पास करता है, तो Cloud Spanner, एक्सटेंशन लॉग में लॉग की गई गड़बड़ी दिखाएगा:

    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-लेवल की गड़बड़ी के तौर पर दिखेंगी. हालांकि, प्रॉक्सी एडिटर गड़बड़ी की वजह के बारे में कोई खास जानकारी नहीं दिखाएगा. हालांकि, इसके लिए सिर्फ़ यह कहना होगा कि एक्सटेंशन ने कोई गड़बड़ी दिखाई है. 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, एक्सटेंशन में गड़बड़ी दिखाएगा. इससे एक्सटेंशन लॉग में गड़बड़ी जुड़ जाएगी.

ट्रेस टूल में सबूत

प्रॉक्सी एडिटर में, ये गड़बड़ियां आम तौर पर 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'