বিশ্লেষণ ডেটা Qpidd মৃত চিঠি সারিতে আটকে আছে

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

লক্ষণ

Qpidd সার্ভার PostgreSQL-এ অ্যানালিটিক্স বার্তা স্থানান্তর না করার কারণে Edge UI-তে অ্যানালিটিক্স ডেটা অনুপস্থিত। Edge-এ, edge-qpid-server কম্পোনেন্টটি Qpidd সার্ভারের সাথে সম্পর্কিত।

Qpidd প্রতিটি অ্যানালিটিক্স গ্রুপের জন্য দুটি কিউ রক্ষণাবেক্ষণ করে:

  • ax-q-axgroup001-consumer-group-001

    এই কিউতে মেসেজ প্রসেসর এবং রাউটার থেকে পাঠানো অ্যানালিটিক্স মেসেজগুলো জমা থাকে। edge-qpid-server এখান থেকে মেসেজগুলো টেনে নেয়, যা মেসেজগুলো পার্স করে এবং পোস্টগ্রেসকিউএল-এ প্রবেশ করায়। মেসেজগুলো সফলভাবে প্রসেস হয়ে গেলে কিউ থেকে সরিয়ে ফেলা হয়।

  • 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-এ বার্তাগুলো সংরক্ষণ করতে অক্ষম ছিল। এজ প্রাইভেট ক্লাউড ব্যবহারকারীরা

সাধারণ রোগ নির্ণয়ের ধাপসমূহ

Qpidd কিউ-এর পরিসংখ্যান দেখতে নিম্নলিখিত কমান্ডটি চালান:

qpid-stat -q

আউটপুটটি ব্রোকারের সাথে নিবন্ধিত কিউগুলোর সেট ফেরত দেয়। যদি "-dl" দিয়ে শেষ হওয়া নামের কিউটিতে মেসেজ থাকে, তাহলে ডেড লেটার কিউতে মেসেজ আটকে আছে।

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 একটি রানটাইম ত্রুটি ফেরত দিয়েছে।

সমাধান

  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. ব্রোকারের আইডিটি লক্ষ্য করুন। উদাহরণে এটি হলো ১২৫।

  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 Support-এর সাথে যোগাযোগ করা উচিত।

  6. qpid-tool টার্মিনালটি বন্ধ করুন।

    quit
  7. ৫ মিনিট অপেক্ষা করুন এবং তারপরে 'সাধারণ রোগ নির্ণয়ের ধাপসমূহ' থেকে রোগ নির্ণয়ের ধাপগুলো আবার চালান। যাচাই করুন যে প্রকৃত কিউ-তে থাকা বার্তাগুলো প্রক্রিয়াজাত হচ্ছে এবং নিশ্চিত করুন যে ডেড লেটার বার্তার সংখ্যা ০-তেই থাকছে।

এরপরও সমস্যাটি থেকে গেলে, পরবর্তী বিভাগে যান।

রোগ নির্ণয়ের তথ্য অবশ্যই সংগ্রহ করতে হবে

উপরের নির্দেশাবলী অনুসরণ করার পরেও যদি সমস্যাটি থেকে যায়, তাহলে অনুগ্রহ করে নিম্নলিখিত ডায়াগনস্টিক তথ্য সংগ্রহ করুন। Apigee Edge Support-এর সাথে যোগাযোগ করুন এবং সেগুলি তাদের সাথে শেয়ার করুন:

  • Qpidd লগ: /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 কিউ পরিসংখ্যান:

    qpid-stat -q
  • নিম্নলিখিত কার্ল কমান্ড দ্বারা ফেরত আসা অ্যানালিটিক্স গ্রুপ:

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