بيانات "إحصاءات Google" عالقة في قائمة انتظار الأحرف المفقودة في Qbidd

أنت الآن بصدد الاطّلاع على مستندات 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

التشخيص

يمكن أن يحدث هذا الشرط في الحالات التالية:

  1. تم إجراء ترقية في الماضي، وكان PostgreSQL متوقفًا خلالها.
  2. انقطاع مؤقت في PostgreSQL بسبب مشاكل في الشبكة
  3. حاول 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 على الويب لنقل الرسائل من صف الرسائل غير القابلة للتسليم إلى صف الإحصاءات الرئيسي:

  1. دوِّن الأسماء الدقيقة للصف الرئيسي وصف الرسائل غير القابلة للتسليم من نتيجة الخطوات الشائعة لتشخيص المشكلة (على سبيل المثال، 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).

  2. على عقدة 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.
  3. تحقَّق من نتيجة الأمر. تعرض عملية ناجحة مصفوفة JSON لمعرّفات الرسائل الداخلية التي تم نقلها:

    [ 3, 4, 5 ]

    إذا كانت المصفوفة المعروضة فارغة ([])، ما مِن رسائل في صف الرسائل غير القابلة للتسليم لنقلها.

  4. انتظِر لمدة 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 والإصدارات الأقدم

  1. دوِّن اسمَي الصفَّين من الـ خطوات الشائعة لتشخيص المشكلة. على سبيل المثال:

    • ax-q-axgroup-001-consumer-group-001
    • ax-q-axgroup-001-consumer-group-001-dl
  2. نفِّذ أمر qpid-tool لإدخال طلب qpid تفاعلي:

    qpid-tool

    يعرض هذا الأمر ما يلي:

    Management Tool for QPID
    qpid:
  3. نفِّذ list broker للحصول على قائمة بالوسطاء النشطين:

    list broker

    يعرض هذا الأمر ما يلي:

    Object Summary:
    ID   Created   Destroyed  Index
    =======================================
    125  21:00:00  -          amqp-broker

    يشير عمود ID إلى رقم تعريف الوسيط.

  4. دوِّن رقم تعريف الوسيط. في المثال، هو 125.

  5. نفِّذ الأمر التالي لنقل الرسائل من صف الرسائل غير القابلة للتسليم إلى الصف الفعلي:

    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.

  6. اخرج من نافذة qpid-tool الطرفية:

    quit
  7. انتظِر لمدة 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