داده‌های Analytics در صف پیام‌های ناموفق Qpidd گیر کرده است

درحال مشاهده اسناد Apigee Edge هستید.
به اسناد Apigee X بروید.
اطلاعات

نشانه

داده‌های Analytics در «رابط کاربری New Edge» وجود ندارد چون سرور Qpidd پیام‌های Analytics را به 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 برای Private Cloud نسخه ۴.۵۳.۰۰ و جدیدتر، یا msg در Edge برای Private Cloud نسخه ۴.۵۲.x و قدیمی‌تر)، پیام‌ها در صف پیام‌های ناموفق گیر کرده‌اند.

نمونه برونداد در Edge for Private Cloud نسخه ۴.۵۳.۰۰ و جدیدتر (ازجمله ۴.۵۴.۰۰، 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 و قدیمی‌تر (کارگزار qpidd 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 خود را دنبال کنید تا پیام‌های گیرکرده را از صف پیام‌های ناموفق به صف اصلی Analytics برگردانید.

Edge for Private Cloud نسخه ۴.۵۳.۰۰ و جدیدتر (ازجمله ۴.۵۴.۰۰)

‫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) استفاده می‌کند. ‫CLI qpid-tool قدیمی در Edge for Private Cloud نسخه 4.53.00 و نسخه‌های جدیدتر برداشته شده است و نمی‌توان از آن استفاده کرد. به‌جای آن، از Apache Qpid Broker-J HTTP Management REST API (moveMessages) یا Qpid Web Management Console برای انتقال پیام‌ها از صف نامه مرده به صف اصلی تجزیه‌وتحلیل استفاده کنید:

  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 عملیات در صف پیام‌های ناموفق ازطریق Qpid Broker-J HTTP Management API (درگاه 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 است).
    • اگر نام‌های صف تجزیه‌وتحلیل شما در qpid-stat -q متفاوت است، ax-q-axgroup001-consumer-group-001 و ax-q-axgroup001-consumer-group-001-dl را جایگزین کنید.
    • برای انتقال پیام‌ها به‌صورت دسته‌ای، "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. ‫۵ دقیقه صبر کنید و سپس /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 نسخه ۴.۵۲.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. ۵ دقیقه صبر کنید و سپس مراحل تشخیص را دوباره از مراحل تشخیص رایج اجرا کنید. بررسی کنید که پیام‌های صف واقعی پردازش می‌شوند و مطمئن شوید که تعداد پیام‌های ناموفق msg روی 0 باقی می‌ماند.

اگر مشکل همچنان برطرف نشد، به بخش بعدی بروید.

باید اطلاعات تشخیص خرابی را جمع‌آوری کند

اگر مشکل پس‌از دنبال کردن دستورالعمل‌های قبلی همچنان ادامه داشت، اطلاعات عیب‌یابی زیر را جمع‌آوری کنید و آن را با پشتیبانی Apigee Edge هم‌رسانی کنید:

  • گزارش‌های Qpidd: /opt/apigee/var/log/apigee-qpidd/qpidd.log (Edge for Private Cloud نسخه ۴.۵۳.۰۰ و جدیدتر) و /opt/apigee/var/log/apigee-qpidd/apigee-qpidd.log
  • گزارش‌های PostgreSQL: /opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log
  • گزارش‌های سرور Edge-qpid: /opt/apigee/var/log/edge-qpid-server/logs/system.log
  • گزارش‌های سرور Edge-postgres: /opt/apigee/var/log/edge-postgres-server/logs/system.log
  • آمار صف Qpidd:

    /opt/apigee/apigee-qpidd/bin/qpid-stat -q
  • گروه Analytics برگشت‌داده‌شده توسط فرمان curl زیر:

    curl -u sysadminEmail:password http://mgmt:8080/v1/analytics/groups/ax