Qpidd ডেড লেটার কিউতে আটকে থাকা Analytics ডেটা

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন-এ যান।
info

সমস্যার উপসর্গ

Qpidd সার্ভার PostgreSQL-এ অ্যানালিটিক্স মেসেজ ট্রান্সফার না করার কারণে New Edge UI-তে অ্যানালিটিক্স ডেটা নেই। 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 কম্পোনেন্ট থেকে বিভিন্ন রানটাইম সমস্যার কারণে মূল কারণ হতে পারে। সাধারণত, PostgreSQL থেকে edge-qpid-server রানটাইম এরর পেলে, আগে থেকে না থাকলে এটি ডেড লেটার কোয়েরি তৈরি করে এবং তারপরে নিম্নলিখিত মেসেজটি সেখানে পাঠায়:

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 দিয়ে শেষ হওয়া নামের কিউতে মেসেজ থাকলে (Q-Depth(Messages) Edge for Private Cloud 4.53.00 ও তার পরের ভার্সনে অথবা msg Edge for Private Cloud 4.52.x ও তার আগের ভার্সনে), তাহলে মেসেজগুলি ডেড লেটার কিউতে আটকে আছে।

প্রাইভেট ক্লাউড 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-এর ডেড লেটার কিউতে মেসেজ আটকে আছে

ডায়াগনসিস

নিম্নলিখিত পরিস্থিতিতে এই অবস্থা হতে পারে:

  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 (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 ব্যবহার করে ডেড লেটার কিউ থেকে মেসেজগুলি মূল অ্যানালিটিক্স কিউতে ফিরিয়ে আনুন:

  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 নোডে, Qpid Broker-J HTTP ম্যানেজমেন্ট API (ডিফল্ট হিসেবে পোর্ট 8090) এর মাধ্যমে ডেড লেটার কিউতে moveMessages অপারেশন চালু করতে নিম্নলিখিত curl কমান্ড রান করুন:

    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 পরিবর্তন করুন।
    • ব্যাচে মেসেজ সরাতে, JSON অনুরোধের বডিতে "limit" অন্তর্ভুক্ত করুন (যেমন, "limit": 100000)।
    • Qpid ম্যানেজমেন্ট API-তে SSL/TLS চালু করা থাকলে (conf_qpidd_qpid_management.https.enabled=true), https:// ব্যবহার করুন এবং curl-এ --cacert (বা -k) পাস করুন।
  3. কমান্ডের আউটপুট যাচাই করুন। সফল কল থেকে সরানো ইন্টার্নাল মেসেজ আইডির JSON অ্যারে রিটার্ন করা হয়:

    [ 3, 4, 5 ]

    ফেরত আসা অ্যারে খালি ([]) থাকলে, ডেড লেটার কিউতে সরানোর মতো কোনও মেসেজ ছিল না।

  4. ৫ মিনিট অপেক্ষা করুন এবং তারপর সাধারণ ডায়াগনসিস ধাপ থেকে /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 এবং তার আগের ভার্সন

  1. সাধারণ ডায়াগনসিস ধাপ থেকে কিউয়ের নাম নোট করুন। যেমন:

    • ax-q-axgroup-001-consumer-group-001
    • ax-q-axgroup-001-consumer-group-001-dl
  2. ইন্টার‍্যাক্টিভ qpid প্রম্পট পেতে qpid-tool কমান্ড রান করান:

    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 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