ข้อมูล Analytics ติดอยู่ในคิวจดหมายที่ส่งไม่ได้ของ Qpidd

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X
ข้อมูล

ลักษณะปัญหา

ไม่มีข้อมูล Analytics ใน Edge UI เนื่องจากเซิร์ฟเวอร์ Qpidd ไม่ได้โอนข้อความ Analytics ไปยัง PostgreSQL ใน Edge คอมโพเนนต์ edge-qpid-server จะสอดคล้องกับเซิร์ฟเวอร์ Qpidd

Qpidd จะดูแลคิว 2 คิวสำหรับกลุ่มการวิเคราะห์แต่ละกลุ่ม ได้แก่

  • 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

ขั้นตอนการวิเคราะห์ทั่วไป

เรียกใช้คำสั่งต่อไปนี้เพื่อดูสถิติคิว 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-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

    quit
  7. รอ 5 นาที จากนั้นเรียกใช้ขั้นตอนการวิเคราะห์อีกครั้งจากขั้นตอนการวินิจฉัยทั่วไป ตรวจสอบว่าระบบกำลังประมวลผลข้อความในคิวจริง และตรวจสอบว่าจำนวนจดหมายที่ส่งไม่ได้ยังคงเป็น 0

หากยังพบปัญหาอยู่ ให้ไปที่ส่วนถัดไป

ต้องรวบรวมข้อมูลการวินิจฉัย

หากปัญหายังคงอยู่แม้ว่าจะทำตามคำแนะนำข้างต้นแล้ว โปรดรวบรวมข้อมูลการวินิจฉัยต่อไปนี้ ติดต่อและแชร์กับทีมสนับสนุนของ Apigee Edge

  • บันทึก 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
  • กลุ่ม Analytics ที่แสดงโดยคําสั่ง curl ต่อไปนี้

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