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

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

ลักษณะปัญหา

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

Qpidd มีคิวสำหรับ Analytics แต่ละกลุ่มอยู่ 2 คิว ดังนี้

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

    คิวนี้จะเก็บข้อความการวิเคราะห์ที่พุชมาจาก Message Processor และ Router ข้อความจะดึงมาจากที่นี่โดย 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-tool

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