Apigee Edge का दस्तावेज़ देखा जा रहा है.
Apigee X के दस्तावेज़ पर जाएं. info
समस्या का ब्यौरा
New Edge यूज़र इंटरफ़ेस (यूआई) में Analytics का डेटा मौजूद नहीं है, क्योंकि Qpidd सर्वर, Analytics के मैसेज को PostgreSQL में ट्रांसफ़र नहीं कर रहा है. Edge में, edge-qpid-server
कॉम्पोनेंट, Qpidd सर्वर से जुड़ा होता है.
Qpidd, हर Analytics ग्रुप के लिए दो सूची रखता है:
ax-q-axgroup001-consumer-group-001
इस सूची में, मैसेज प्रोसेसर और राऊटर से भेजे गए आंकड़ों के मैसेज होते हैं. मैसेज यहां से
edge-qpid-serverमें भेजे जाते हैं. यह मैसेज को पार्स करता है और उन्हें PostgreSQL में डालता है. मैसेज प्रोसेस होने के बाद, उन्हें सूची से हटा दिया जाता है.ax-q-axgroup001-consumer-group-001-dl
यह सूची, डेड लेटर सूची है. यह उन मैसेज के लिए डेस्टिनेशन के तौर पर काम करता है जिन्हें
edge-qpid-serverप्रोसेस नहीं कर सका. इसलिए, अब वह उन्हें पाना नहीं चाहता. आम तौर पर, यह गड़बड़ी तब दिखती है, जब डिलीवरी की तय सीमा पार हो जाती है या रनटाइम से जुड़ी गड़बड़ियों की वजह से, PostgreSQL नए डेटा को शामिल करने से मना कर देता है.
गड़बड़ी का मैसेज
इसकी असल वजह, edge-qpid-server कॉम्पोनेंट से जुड़ी रनटाइम से जुड़ी गड़बड़ियां हो सकती हैं. आम तौर पर, अगर edge-qpid-server को PostgreSQL से रनटाइम से जुड़ी गड़बड़ी मिलती है, तो वह डेड लेटर क्यू बनाता है. ऐसा तब होता है, जब वह पहले से मौजूद न हो. इसके बाद, वह वहां यह मैसेज भेजता है:
yyyy-MM-dd HH:mm:ss,SSS ax-q-axgroup001-consumer-group-001-persistpool-thread-6 WARN c.a.a.m.MessageConsumer - MessageConsumer.process() : Sending message batch to the DLQ.
संभावित वजहें
| वजह | ब्यौरा | समस्या हल करने के निर्देश इनके लिए लागू होते हैं |
|---|---|---|
| qpidd की डेड लेटर क्यू में मैसेज अटक गए हैं | edge-qpid-server, Qpidd ब्रोकर से पढ़े गए मैसेज को समझ नहीं सका या PostgreSQL में मैसेज सेव नहीं कर सका.
|
Edge Private Cloud के उपयोगकर्ता |
समस्या का पता लगाने के सामान्य तरीके
Qpidd की कतार के आंकड़े देखने के लिए, Qpid नोड पर यह कमांड चलाएं:
/opt/apigee/apigee-qpidd/bin/qpid-stat -q
आउटपुट में, ब्रोकर के साथ रजिस्टर की गई सूची का सेट दिखता है. अगर -dl पर खत्म होने वाली किसी क्यू में मैसेज मौजूद हैं (Edge for Private Cloud 4.53.00 और इसके बाद के वर्शन में Q-Depth(Messages) या Edge for Private Cloud 4.52.x और इससे पहले के वर्शन में msg), तो मैसेज डेड लेटर क्यू में अटक जाते हैं.
Private Cloud 4.53.00 और इसके बाद के वर्शन (इसमें 4.54.00 और Apache Qpid Broker-J शामिल है) के लिए, Edge में आउटपुट का उदाहरण:
+---------------------------------------+-------------------+-------------------+-------------------+-------------------+-----------+----------+-------------------+------------+ | Queue Name | Messages Enqueued | Total Enqueued(B) | Messages Dequeued | Total Dequeued(B) | Consumers | Bindings | Q-Depth(Messages) | Q-Depth(B) | +---------------------------------------+-------------------+-------------------+-------------------+-------------------+-----------+----------+-------------------+------------+ | ax-q-axgroup001-consumer-group-001 | 185 | 13800000 | 185 | 13800000 | 6 | 1 | 0 | 0 | +---------------------------------------+-------------------+-------------------+-------------------+-------------------+-----------+----------+-------------------+------------+ | ax-q-axgroup001-consumer-group-001-dl | 70 | 3900000 | 0 | 0 | 0 | 1 | 70 | 3900000 | +---------------------------------------+-------------------+-------------------+-------------------+-------------------+-----------+----------+-------------------+------------+
Edge for Private Cloud 4.52.x और इससे पहले के वर्शन (लेगसी C++
qpidd ब्रोकर) में आउटपुट का उदाहरण:
Queues queue dur autoDel excl msg msgIn msgOut bytes bytesIn bytesOut cons bind ======================================================================================================================== ax-q-axgroup-001-consumer-group-001 Y 0 185 185 0 13.8m 13.8m 6 2 ax-q-axgroup-001-consumer-group-001-dl Y 0 70 70 0 3.9m 3.9m 0 2
वजह: मैसेज, qpidd की डेड लेटर क्यू में अटके हुए हैं
संक्रमण की जांच
ऐसा इन स्थितियों में हो सकता है:
- पहले अपग्रेड किया गया था. इस दौरान, PostgreSQL बंद था.
- नेटवर्क की समस्याओं की वजह से, PostgreSQL कुछ समय के लिए बंद हो गया हो.
edge-qpid-serverने PostgreSQL को मैसेज भेजने की कोशिश की, लेकिन PostgreSQL ने रनटाइम से जुड़ी गड़बड़ी का मैसेज दिखाया.
रिज़ॉल्यूशन
Edge for Private Cloud के अपने वर्शन के लिए, यह तरीका अपनाएं. इससे, डेड लेटर सूची में अटके हुए मैसेज को वापस मुख्य Analytics सूची में ले जाया जा सकता है.
Edge for Private Cloud 4.53.00 और इसके बाद के वर्शन (इसमें 4.54.00 भी शामिल है)
Edge for Private Cloud 4.53.00 और इसके बाद के वर्शन (4.54.00 भी शामिल है) में Apache Qpid Broker-J का इस्तेमाल किया जाता है (4.54.00 में 10.0.1 और 4.53.x में 8.0.6). Edge for Private Cloud 4.53.00 और इसके बाद के वर्शन में, लेगसी qpid-tool CLI को हटा दिया गया है. इसलिए, इसका इस्तेमाल नहीं किया जा सकता.
इसके बजाय, Apache Qpid Broker-J HTTP Management REST API (moveMessages) या Qpid Web Management Console का इस्तेमाल करके, मैसेज को डेड लेटर क्यू से वापस मुख्य Analytics क्यू में ले जाएं:
समस्या हल करने के सामान्य तरीके के आउटपुट से, मुख्य सूची और डेड लेटर सूची के सटीक नाम नोट करें. उदाहरण के लिए,
ax-q-axgroup001-consumer-group-001औरax-q-axgroup001-consumer-group-001-dlयाax-q-axgroup-001-consumer-group-001औरax-q-axgroup-001-consumer-group-001-dl.Qpid नोड पर, यहां दिया गया
curlकमांड चलाएं. इससे Qpid Broker-J एचटीटीपी मैनेजमेंट एपीआई (डिफ़ॉल्ट रूप से पोर्ट8090) के ज़रिए, डेड लेटर सूची परmoveMessagesकार्रवाई को शुरू किया जा सकेगा:curl -u QPID_USER:QPID_PASSWORD -X POST \ -H "Content-Type: application/json" \ -d '{"destination": "ax-q-axgroup001-consumer-group-001"}' \ http://127.0.0.1:8090/api/latest/queue/default/default/ax-q-axgroup001-consumer-group-001-dl/moveMessagesकहां:
QPID_USERऔरQPID_PASSWORD, Qpid मैनेजमेंट क्रेडेंशियल हैं. इन्हें/opt/apigee/customer/application/qpidd.propertiesया/opt/apigee/token/application/qpidd.propertiesमें कॉन्फ़िगर किया जाता है. डिफ़ॉल्ट रूप से, इन्हेंguest:guestमें कॉन्फ़िगर किया जाता है.- अगर
qpid-stat -qमें मौजूद आपके Analytics के कतार के नाम अलग-अलग हैं, तोax-q-axgroup001-consumer-group-001औरax-q-axgroup001-consumer-group-001-dlको बदलें. - मैसेज को बैच में मूव करने के लिए, JSON अनुरोध के मुख्य हिस्से में
"limit"शामिल करें. उदाहरण के लिए,"limit": 100000. - अगर Qpid Management API (
conf_qpidd_qpid_management.https.enabled=true) पर एसएसएल/टीएलएस चालू है, तोhttps://का इस्तेमाल करें औरcurlको--cacert(या-k) पास करें.
कमांड आउटपुट की पुष्टि करें. कॉल सफल होने पर, एक जगह से दूसरी जगह ले जाए गए इंटरनल मैसेज आईडी का JSON कलेक्शन दिखता है:
[ 3, 4, 5 ]
अगर रिटर्न किया गया कलेक्शन खाली (
[]) है, तो इसका मतलब है कि डेड लेटर सूची में कोई मैसेज नहीं था.पांच मिनट इंतज़ार करें. इसके बाद, समस्या हल करने के सामान्य तरीके में जाकर,
/opt/apigee/apigee-qpidd/bin/qpid-stat -qको चलाएं. पुष्टि करें कि मुख्य कतार (ax-q-axgroup001-consumer-group-001) में मौजूद मैसेज प्रोसेस किए जा रहे हैं और डेड लेटर कतार (ax-q-axgroup001-consumer-group-001-dl) में मौजूदQ-Depth(Messages),0पर बना हुआ है.
Edge for Private Cloud 4.52.x और इससे पहले के वर्शन
गड़बड़ी की जानकारी पाने के सामान्य तरीके में दी गई कतारों के नाम नोट करें. उदाहरण के लिए:
ax-q-axgroup-001-consumer-group-001ax-q-axgroup-001-consumer-group-001-dl
इंटरैक्टिव
qpidप्रॉम्प्ट डालने के लिए,qpid-toolनिर्देश चलाएं:qpid-tool
इस निर्देश से यह जानकारी मिलती है:
Management Tool for QPID qpid:
मौजूदा ब्रोकर की सूची पाने के लिए,
list brokerचलाएं:list broker
इस कमांड से यह जानकारी मिलती है:
Object Summary: ID Created Destroyed Index ======================================= 125 21:00:00 - amqp-broker
यहां
IDकॉलम में ब्रोकर का आईडी दिया गया है.ब्रोकर का आईडी नोट करें. उदाहरण के लिए, यह
125है.मैसेज को डेड लेटर सूची से वापस असल सूची में ले जाने के लिए, यह कमांड चलाएं:
call 125 queueMoveMessages ax-q-axgroup-001-consumer-group-001-dl ax-q-axgroup-001-consumer-group-001 100000 {}इस कमांड से यह जानकारी मिलती है:
OK (0) - {}अगर कोई आउटपुट नहीं मिलता है, तो इसका मतलब है कि कोई कार्रवाई नहीं की गई. इसका मतलब है कि कोई भी मैसेज नहीं मिला. अगर आपको
OK (0)नहीं दिखता है, तो आपको Apigee Edge की सहायता टीम से संपर्क करना चाहिए.qpid-toolटर्मिनल को बंद करें:quit
पांच मिनट इंतज़ार करें. इसके बाद, समस्या का पता लगाने के सामान्य तरीके में दिए गए तरीके से, समस्या का पता लगाने की प्रोसेस फिर से शुरू करें. पुष्टि करें कि असली क्यू में मौजूद मैसेज प्रोसेस किए जा रहे हैं. साथ ही, यह पक्का करें कि डेड लेटर
msgकी संख्या0पर बनी रहे.
अगर समस्या अब भी बनी रहती है, तो अगले सेक्शन पर जाएं.
गड़बड़ी की जानकारी इकट्ठा करना ज़रूरी है
अगर ऊपर दिए गए निर्देशों का पालन करने के बाद भी समस्या बनी रहती है, तो गड़बड़ी की जानकारी इकट्ठा करें और उसे Apigee Edge की सहायता टीम के साथ शेयर करें:
- Qpidd लॉग:
/opt/apigee/var/log/apigee-qpidd/qpidd.log(Edge for Private Cloud 4.53.00 और इसके बाद के वर्शन के लिए) और/opt/apigee/var/log/apigee-qpidd/apigee-qpidd.log - PostgreSQL लॉग:
/opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log - Edge-qpid-server लॉग:
/opt/apigee/var/log/edge-qpid-server/logs/system.log - Edge-postgres-server के लॉग:
/opt/apigee/var/log/edge-postgres-server/logs/system.log Qpidd कतार के आंकड़े:
/opt/apigee/apigee-qpidd/bin/qpid-stat -q
यहां दिए गए curl निर्देश से, Analytics ग्रुप की जानकारी मिलती है:
curl -u sysadminEmail:password http://mgmt:8080/v1/analytics/groups/ax