500 सर्वर में गड़बड़ी - बैकएंड सर्वर

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

वीडियो

वीडियो ब्यौरा
500 सर्वर में गड़बड़ी - बैकएंड की वजह से हुई इसमें बैकएंड सर्वर की वजह से हुई रीयल-टाइम 500 Internal Server Error को दिखाया गया है. साथ ही, गड़बड़ी को ठीक करने और उसे हल करने का तरीका बताया गया है.

समस्या का ब्यौरा

क्लाइंट ऐप्लिकेशन को एपीआई कॉल के जवाब के तौर पर, 500 एचटीटीपी स्टेटस कोड मिलता है. साथ ही, उसे Internal Server Error मैसेज मिलता है.

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

गड़बड़ी के मैसेज

क्लाइंट ऐप्लिकेशन को यह रिस्पॉन्स कोड मिलता है:

HTTP/1.1 500 Internal Server Error

इसके अलावा, आपको यहां दिखाए गए मैसेज जैसा गड़बड़ी का कोई मैसेज भी दिख सकता है:

पहला सैंपल

बैकएंड सर्वर से मिले रिस्पॉन्स का पहला उदाहरण

{"errorMessage":"Sorry either your e-mail or password didn't match.",
"errorParameters":"{}",
"errorCode":"500",
"errorKey":"INVALID_EMAILPASSWORD"}

सैंपल #2

बैकएंड सर्वर से मिले रिस्पॉन्स का दूसरा उदाहरण

<Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <Body>
      <Error>
         <code>500</code>
         <message xml:lang="en-US">Not Authorised(e4138fa0-ec57).</message>
      </Error>
   </Body>
</Envelope>

संभावित कारण

500 Internal Server Error को बैकएंड सर्वर से वापस भेजा जा सकता है. इसकी कई वजहें हो सकती हैं. इस प्लेबुक में, सामान्य चरणों का इस्तेमाल करके समस्या हल करने का तरीका बताया गया है. साथ ही, इस गड़बड़ी की वजह चाहे जो भी हो, इसे ठीक करने का तरीका बताया गया है.

इस समस्या की ये वजहें हो सकती हैं:

वजह ब्यौरा इनके लिए समस्या हल करने के निर्देश
बैकएंड सर्वर में गड़बड़ी बैकएंड सर्वर में किसी वजह से गड़बड़ी हो सकती है. Edge Private और Public Cloud के उपयोगकर्ता

गड़बड़ी का पता लगाने के सामान्य चरण

इस गड़बड़ी का पता लगाने के लिए, इनमें से किसी टूल/तकनीक का इस्तेमाल करें:

एपीआई मॉनिटरिंग

पहली प्रक्रिया: एपीआई मॉनिटरिंग का इस्तेमाल करना

एपीआई मॉनिटरिंग का इस्तेमाल करके गड़बड़ी का पता लगाने के लिए:

  1. Apigee Edge के यूज़र इंटरफ़ेस (यूआई) में, सही भूमिका वाले उपयोगकर्ता के तौर पर साइन इन करें.
  2. उस संगठन पर स्विच करें जिसमें आपको समस्या की जांच करनी है.

  3. विश्लेषण करें > एपीआई मॉनिटरिंग > जांच करें पेज पर जाएं.
  4. वह समयावधि चुनें जिसमें आपको गड़बड़ियां दिखीं.
  5. समय के हिसाब से गड़बड़ी का कोड प्लॉट करें.

  6. वह सेल चुनें जिसमें गड़बड़ी का कोड messaging.adaptors.http.flow.ErrorResponseCode मौजूद है. जैसा कि नीचे दिखाया गया है:

    ( बड़ी इमेज देखें)

  7. गड़बड़ी के कोड messaging.adaptors.http.flow.ErrorResponseCode के बारे में जानकारी, यहां दिखाई गई है:

    ( बड़ी इमेज देखें)

  8. लॉग देखें पर क्लिक करें और पूरे न हो पाने वाले अनुरोध की लाइन को बड़ा करें.

    ( बड़ी इमेज देखें)

  9. लॉग विंडो में, यह जानकारी नोट करें:
    • अनुरोध मैसेज आईडी
    • स्टेटस कोड: 500
    • गड़बड़ी का सोर्स: target
    • गड़बड़ी का कोड: messaging.adaptors.http.flow.ErrorResponseCode

ट्रेस

दूसरी प्रक्रिया: Trace टूल का इस्तेमाल करना

ट्रेस टूल का इस्तेमाल करके गड़बड़ी का पता लगाने के लिए:

  1. ट्रेस सेशन चालू करें. इसके बाद, इनमें से कोई एक काम करें
    • गड़बड़ी कोड messaging.adaptors.http.flow.ErrorResponseCode वाली 500 Internal Server Error गड़बड़ी होने का इंतज़ार करें या
    • अगर आपको समस्या का पता चल गया है, तो समस्या को फिर से ठीक करने के लिए एपीआई कॉल करें 500 Internal Server Error
  2. पक्का करें कि Show all FlowInfos चालू हो:

  3. पूरे न हो पाने वाले किसी अनुरोध को चुनें और उसके ट्रेस की जांच करें.
  4. ट्रेस के अलग-अलग फ़ेज़ पर जाएं और पता लगाएं कि गड़बड़ी कहां हुई.
  5. आपको यह गड़बड़ी आम तौर पर, टारगेट सर्वर से मिला जवाब फ़ेज़ के बाद दिखती है. इसे यहां दिखाया गया है:

    ( बड़ी इमेज देखें)

  6. ट्रेस में AX (Analytics Data Recorded) फ़ेज़ पर जाएं और उस पर क्लिक करें.
  7. नीचे की ओर स्क्रोल करके, फ़ेज़ की जानकारी देने वाले रिस्पॉन्स हेडर सेक्शन पर जाएं. इसके बाद, X-Apigee-fault-code, X-Apigee-fault-source, और X-Apigee-Message-ID की वैल्यू का पता लगाएं. ये वैल्यू नीचे दी गई इमेज में दिखाई गई हैं:

    ( बड़ी इमेज देखें)

  8. X-Apigee-fault-code, X-Apigee-fault-source, और X-Apigee-Message-ID की वैल्यू नोट करें:
  9. रिस्पॉन्स हेडर वैल्यू
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
    X-Apigee-fault-source target
    X-Apigee-Message-ID MESSAGE_ID

NGINX

तीसरी प्रक्रिया: NGINX के ऐक्सेस लॉग का इस्तेमाल करना

NGINX ऐक्सेस लॉग का इस्तेमाल करके गड़बड़ी का पता लगाने के लिए:

  1. अगर आप Private Cloud के उपयोगकर्ता हैं, तो NGINX के ऐक्सेस लॉग का इस्तेमाल करके, एचटीटीपी 500 Internal Server Error के बारे में अहम जानकारी का पता लगाया जा सकता है.
  2. NGINX के ऐक्सेस लॉग देखें:

    /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

  3. खोजें कि क्या किसी खास समयावधि के दौरान, गड़बड़ी कोड 500messaging.adaptors.http.flow.ErrorResponseCode वाली कोई गड़बड़ी हुई है (अगर समस्या पहले हुई थी) या क्या अब भी 500 वाली कोई गड़बड़ी हो रही है.
  4. अगर आपको X-Apigee-fault-code से मेल खाने वाली 500 गड़बड़ियां मिलती हैं, तो messaging.adaptors.http.flow.ErrorResponseCode की वैल्यू का पता लगाएं. इसके बाद, X-Apigee-fault-source की वैल्यू का पता लगाएं.

    NGINX के ऐक्सेस लॉग में मौजूद 500 गड़बड़ी का उदाहरण:

    ( बड़ी इमेज देखें)

    NGINX ऐक्सेस लॉग की ऊपर दी गई सैंपल एंट्री में, X-Apigee-fault-code और X-Apigee-fault-source के लिए ये वैल्यू दी गई हैं:

    हेडर वैल्यू
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
    X-Apigee-fault-source target

वजह: बैकएंड सर्वर में गड़बड़ी

संक्रमण की जांच

बैकएंड सर्वर से मिले 500 Internal Server Error की कई वजहें हो सकती हैं. आपको हर स्थिति का अलग-अलग विश्लेषण करना होगा.

  1. एपीआई मॉनिटरिंग, ट्रेस टूल या NGINX ऐक्सेस लॉग का इस्तेमाल करके, गड़बड़ी कोड और गड़बड़ी का सोर्स का पता लगाएं. इसके बारे में गड़बड़ी का पता लगाने के सामान्य तरीके में बताया गया है.
  2. अगर गड़बड़ी का सोर्स target है और गड़बड़ी का कोड messaging.adaptors.http.flow.ErrorResponseCode है, तो इसका मतलब है कि गड़बड़ी बैकएंड सर्वर से मिली है.
  3. समस्या की वजह का पता लगाने के लिए, इनमें से कोई एक तरीका इस्तेमाल करें:

    ट्रेस

    Trace का इस्तेमाल करना:

    अगर आपके पास गड़बड़ी के लिए ट्रेस सेशन है, तो यह तरीका अपनाएं:

    1. ट्रेस में, उस एपीआई अनुरोध को चुनें जो 500 Internal Server Error के साथ पूरा नहीं हुआ.
    2. नीचे दी गई इमेज में दिखाए गए तरीके से, एपीआई अनुरोध पूरा न होने पर Response received from target server फ़ेज़ चुनें:

      ( बड़ी इमेज देखें)

    3. नीचे की ओर स्क्रोल करके फ़ेज़ की जानकारी सेक्शन पर जाएं. इसके बाद,जवाब का कॉन्टेंट देखें. इसमें बैकएंड सर्वर से मिला जवाब होता है.

      जवाब के कॉन्टेंट का उदाहरण:

      <Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
         <Body>
            <Error>
               <code>500</code>
               <message xml:lang="en-US">Not Authorised(e4138fa0-ec57).</message>
            </Error>
         </Body>
      </Envelope>

      ऊपर दिए गए जवाब में ध्यान दें कि बैकएंड सर्वर से मिला गड़बड़ी का मैसेज यह है: Not Authorised. इससे पता चलता है कि उपयोगकर्ता ने अमान्य क्रेडेंशियल डाले हैं. इसलिए, उन्हें यह गड़बड़ी दिख रही है.

    बैकएंड सर्वर को कॉल करें

    बैकएंड सर्वर को सीधे कॉल करना:

    बैकएंड सर्वर को सीधे तौर पर कॉल किया जा सकता है. इसके अलावा, ये काम किए जा सकते हैं:

    • पुष्टि करें कि आपको वही 500 Internal Server Error जवाब मिल रहा है जो Apigee Edge के ज़रिए अनुरोध करने पर मिला था
    • बैकएंड सर्वर से मिले गड़बड़ी के मैसेज (रिस्पॉन्स) की जांच करें

    बैकएंड सर्वर को सीधे कॉल करने के लिए, यह तरीका अपनाएं:

    1. पक्का करें कि आपके पास सभी ज़रूरी हेडर, क्वेरी पैरामीटर, और क्रेडेंशियल हों. इन्हें अनुरोध के हिस्से के तौर पर बैकएंड सर्वर को पास करना होता है.
    2. अगर बैकएंड सेवा को सार्वजनिक तौर पर ऐक्सेस किया जा सकता है, तो curl कमांड, Postman या किसी अन्य REST क्लाइंट का इस्तेमाल करके, सीधे बैकएंड सर्वर एपीआई को चालू किया जा सकता है.
    3. अगर बैकएंड सर्वर को सिर्फ़ मैसेज प्रोसेसर से ऐक्सेस किया जा सकता है, तो curl कमांड, Postman या किसी अन्य REST क्लाइंट का इस्तेमाल किया जा सकता है. साथ ही, मैसेज प्रोसेसर से सीधे बैकएंड सर्वर एपीआई को शुरू किया जा सकता है.

    4. पुष्टि करें कि बैकएंड सेवा, 500 Internal Server Error दिखा रही है. साथ ही, बैकएंड सर्वर से मिले गड़बड़ी के मैसेज (जवाब) की जांच करें और इस गड़बड़ी की वजह का पता लगाएं.

    बैकएंड सर्वर के लॉग

    बैकएंड सर्वर के लॉग का इस्तेमाल करना

    1. बैकएंड सर्वर के लॉग देखें. साथ ही, गड़बड़ी और उसकी वजह के बारे में ज़्यादा जानकारी पाने की कोशिश करें.
    2. अगर हो सके, तो बैकएंड सर्वर पर डीबग मोड चालू करें. इससे आपको गड़बड़ी और उसकी वजह के बारे में ज़्यादा जानकारी मिलेगी.
  4. देखें कि क्या एपीआई प्रॉक्सी के किसी खास टारगेट एंडपॉइंट में प्रॉक्सी चेनिंग का इस्तेमाल किया जा रहा है. इसका मतलब है कि टारगेट सर्वर/टारगेट एंडपॉइंट, Apigee Edge में किसी दूसरी प्रॉक्सी को चालू कर रहा है. यह पता लगाने के लिए:

    1. अगर आपके पास अनुरोध पूरा न होने का ट्रेस है, तो टारगेट सर्वर को भेजा गया अनुरोध फ़ेज़ पर जाएं और Curl दिखाएं पर क्लिक करें.

    2. टारगेट सर्वर को भेजे गए अनुरोध के लिए कर्ल विंडो खुलती है. इससे आपको टारगेट सर्वर होस्ट के उपनाम का पता चल सकता है.
    3. अपनी एपीआई प्रॉक्सी के टारगेट एंडपॉइंट की समीक्षा करें. साथ ही, देखें कि टारगेट सर्वर में मौजूद बैकएंड सर्वर यूआरएल या होस्ट नेम, किसी दूसरी प्रॉक्सी या आपके बैकएंड सर्वर की ओर तो नहीं ले जा रहा है.
    4. अगर टारगेट सर्वर होस्ट का उपनाम, वर्चुअल होस्ट के उपनाम की ओर इशारा कर रहा है, तो यह प्रॉक्सी चेनिंग है. इस मामले में, आपको चेन्ड प्रॉक्सी के लिए ऊपर दिए गए सभी चरणों को तब तक दोहराना होगा, जब तक आपको यह पता न चल जाए कि 500 Internal Server Error की वजह क्या है. इन मामलों में, 500 Internal Server Error अन्य चरणों में अन्य चेन प्रॉक्सी में भी हो सकता है. इसका पता लगाया जा सकता है और इसे ठीक किया जा सकता है. इसके लिए, इस प्लेबुक या 500 इंटरनल सर्वर की गड़बड़ी वाली प्लेबुक में दिए गए निर्देशों का पालन करें.
    5. अगर टारगेट सर्वर होस्ट का उपनाम आपके बैकएंड सर्वर पर ले जाता है, तो समस्या हल करने का तरीका पर जाएं.

रिज़ॉल्यूशन

अगर यह पता चलता है कि 500 गड़बड़ी बैकएंड सर्वर से आ रही है, तो अपनी बैकएंड सर्वर टीम के साथ मिलकर इस समस्या को ठीक करें.

ऊपर दिए गए उदाहरण में, आपको उपयोगकर्ताओं से यह अनुरोध करना पड़ सकता है कि वे इस समस्या को ठीक करने के लिए, मान्य क्रेडेंशियल डालें.

ध्यान देने वाली ज़रूरी बातें

  1. 500 Internal Server Error के लिए, बैकएंड सर्वर से मिले गड़बड़ी के असली मैसेज को सिर्फ़ तब देखा जा सकता है, जब आपने गड़बड़ी वाले अनुरोधों के लिए ट्रेस सेशन कैप्चर किया हो.
  2. सुरक्षा कारणों से, बैकएंड सर्वर के जवाब को API मॉनिटरिंग, NGINX ऐक्सेस लॉग या मैसेज प्रोसेसर लॉग में लॉग नहीं किया जाएगा.
  3. बैकएंड सर्वर के लॉग की समीक्षा की जा सकती है. इसके अलावा, बैकएंड पर डीबग मोड चालू करके, 500 Internal Server Error के बारे में ज़्यादा जानकारी पाई जा सकती है. साथ ही, बैकएंड सर्वर से मिले गड़बड़ी के मैसेज को देखा जा सकता है.

डाइग्नोस्टिक जानकारी इकट्ठा करना ज़रूरी है

अगर ऊपर दिए गए निर्देशों का पालन करने के बाद भी समस्या बनी रहती है, तो डाइग्नोस्टिक की यह जानकारी इकट्ठा करें और Apigee Edge की सहायता टीम से संपर्क करें.

अगर आप पब्लिक क्लाउड के उपयोगकर्ता हैं, तो यह जानकारी दें:

  • संगठन का नाम
  • परिवेश का नाम
  • एपीआई प्रॉक्सी का नाम
  • 500 गड़बड़ी को फिर से बनाने के लिए, curl कमांड पूरी करें
  • 500 Internal Server Error के साथ किए गए अनुरोधों की जानकारी वाली ट्रेस फ़ाइल
  • अगर फ़िलहाल 500 गड़बड़ियां नहीं हो रही हैं, तो उस समयावधि की जानकारी दें, जब 500 गड़बड़ियां हुई थीं. साथ ही, टाइमज़ोन की जानकारी भी दें.

अगर आप Private Cloud के उपयोगकर्ता हैं, तो यह जानकारी दें:

  • अनुरोध पूरे न होने पर, गड़बड़ी का पूरा मैसेज दिखता है
  • उस संगठन, एनवायरमेंट के नाम, और एपीआई प्रॉक्सी का नाम जिसके लिए 500 गड़बड़ियां दिख रही हैं
  • एपीआई प्रॉक्सी बंडल
  • 500 Internal Server Error के साथ किए गए अनुरोधों की जानकारी वाली ट्रेस फ़ाइल
  • NGINX ऐक्सेस लॉग /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

    कहां: ORG, ENV, और PORT# को असल वैल्यू से बदलें.

  • मैसेज प्रोसेसर के सिस्टम लॉग /opt/apigee/var/log/edge-message-processor/logs/system.log
  • वह समयावधि जिसमें टाइमज़ोन की जानकारी के साथ 500 गड़बड़ियां हुई थीं.