أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلىمستندات Apigee X. info
المشكلة
البيانات الإحصائية غير متوفّرة في واجهة مستخدم New Edge بسبب عدم نقل خادم Qpidd لرسائل الإحصاءات إلى PostgreSQL. في Edge، يتطابق المكوّن edge-qpid-server مع خادم Qpidd.
يحتفظ Qpidd بصفَّين لكل مجموعة إحصاءات:
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 |
الخطوات الشائعة لتشخيص المشكلة
نفِّذ الأمر التالي على عقدة Qpid لعرض إحصاءات صف Qpidd:
/opt/apigee/apigee-qpidd/bin/qpid-stat -q
تعرض النتيجة مجموعة الصفوف المسجّلة لدى الوسيط. إذا كان الصف الذي ينتهي اسمه بـ -dl يحتوي على رسائل (Q-Depth(Messages) في Edge for Private Cloud 4.53.00 والإصدارات الأحدث، أو msg في Edge for Private Cloud 4.52.x والإصدارات الأقدم)، فهذا يعني أنّ الرسائل عالقة في صف الرسائل غير القابلة للتسليم.
مثال على النتيجة في Edge for Private Cloud 4.53.00 والإصدارات الأحدث (بما في ذلك 4.54.00 وApache Qpid Broker-J):
+---------------------------------------+-------------------+-------------------+-------------------+-------------------+-----------+----------+-------------------+------------+ | 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 والإصدارات الأقدم (وسيط
qpiddqpidd القديم المكتوب بلغة C++):
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 لنقل الرسائل العالقة من صف الرسائل غير القابلة للتسليم إلى صف الإحصاءات الرئيسي.
Edge for Private Cloud 4.53.00 والإصدارات الأحدث (بما في ذلك 4.54.00)
يستخدم Edge for Private Cloud 4.53.00 والإصدارات الأحدث (بما في ذلك 4.54.00) Apache Qpid Broker-J (10.0.1 في 4.54.00 و8.0.6 في 4.53.x). تمت إزالة واجهة سطر الأوامر qpid-tool القديمة في Edge for Private Cloud 4.53.00 والإصدارات الأحدث ولا يمكن استخدامها.
بدلاً من ذلك، استخدِم واجهة برمجة تطبيقات إدارة HTTP في Apache Qpid Broker-J (moveMessages) أو وحدة تحكّم إدارة Qpid على الويب لنقل الرسائل من صف الرسائل غير القابلة للتسليم إلى صف الإحصاءات الرئيسي:
دوِّن الأسماء الدقيقة للصف الرئيسي وصف الرسائل غير القابلة للتسليم من نتيجة الخطوات الشائعة لتشخيص المشكلة (على سبيل المثال،
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التالي لاستدعاء عمليةmoveMessagesعلى صف الرسائل غير القابلة للتسليم من خلال واجهة برمجة تطبيقات إدارة HTTP في Qpid Broker-J (المنفذ8090تلقائيًا):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).- استبدِل
ax-q-axgroup001-consumer-group-001وax-q-axgroup001-consumer-group-001-dlإذا كانت أسماء صف الإحصاءات فيqpid-stat -qمختلفة. - لنقل الرسائل على شكل دفعات، ضِّمن
"limit"في نص طلب JSON (على سبيل المثال،"limit": 100000). - إذا كانت طبقة المقابس الآمنة (SSL)/بروتوكول أمان طبقة النقل (TLS) مفعّلاً على Qpid Management API (
conf_qpidd_qpid_management.https.enabled=true)، استخدِمhttps://ومرِّر--cacert(أو-k) إلىcurl.
تحقَّق من نتيجة الأمر. تعرض عملية ناجحة مصفوفة JSON لمعرّفات الرسائل الداخلية التي تم نقلها:
[ 3, 4, 5 ]
إذا كانت المصفوفة المعروضة فارغة (
[])، ما مِن رسائل في صف الرسائل غير القابلة للتسليم لنقلها.انتظِر لمدة 5 دقائق، ثم نفِّذ
/opt/apigee/apigee-qpidd/bin/qpid-stat -qمن الخطوات الشائعة لتشخيص المشكلة. تأكَّد من معالجة الرسائل في الصف الرئيسي (ax-q-axgroup001-consumer-group-001) وأنّQ-Depth(Messages)في صف الرسائل غير القابلة للتسليم (ax-q-axgroup001-consumer-group-001-dl) يظل عند0.
Edge for Private Cloud 4.52.x والإصدارات الأقدم
دوِّن اسمَي الصفَّين من الـ خطوات الشائعة لتشخيص المشكلة. على سبيل المثال:
ax-q-axgroup-001-consumer-group-001ax-q-axgroup-001-consumer-group-001-dl
نفِّذ أمر
qpid-toolلإدخال طلبqpidتفاعلي: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
انتظِر لمدة 5 دقائق، ثم نفِّذ خطوات التشخيص مرة أخرى من الخطوات الشائعة لتشخيص المشكلة. تأكَّد من معالجة الرسائل في الصف الفعلي وتأكَّد من أنّ عدد
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 التالي:
curl -u sysadminEmail:password http://mgmt:8080/v1/analytics/groups/ax