คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่
เอกสารประกอบของ Apigee X info
ลักษณะปัญหา
ไม่มีข้อมูล Analytics ใน UI ของ Edge ใหม่เนื่องจากเซิร์ฟเวอร์ Qpidd ไม่ได้โอนข้อความ Analytics ไปยัง PostgreSQL ใน Edge คอมโพเนนต์ edge-qpid-server จะสอดคล้องกับเซิร์ฟเวอร์ Qpidd
Qpidd จะดูแลคิว 2 คิวสำหรับกลุ่ม Analytics แต่ละกลุ่ม ดังนี้
ax-q-axgroup001-consumer-group-001
คิวนี้เก็บข้อความ Analytics ที่พุชจาก 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 for Private Cloud |
ขั้นตอนการวินิจฉัยที่พบบ่อย
เรียกใช้คำสั่งต่อไปนี้ในโหนด Qpid เพื่อดูสถิติคิว Qpidd
/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 และเวอร์ชันก่อนหน้า) แสดงว่าข้อความติดอยู่ในคิวข้อความที่ส่งไม่ได้
ตัวอย่างเอาต์พุตใน Edge for Private Cloud 4.53.00 ขึ้นไป (รวมถึง 4.54.00, 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 และเวอร์ชันก่อนหน้า (โบรกเกอร์
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
การวินิจฉัย
เงื่อนไขนี้อาจเกิดขึ้นได้ในสถานการณ์ต่อไปนี้
- มีการอัปเกรดเกิดขึ้นในอดีต ซึ่งในระหว่างนั้น PostgreSQL หยุดทำงาน
- PostgreSQL หยุดทำงานชั่วคราวเนื่องจากปัญหาเครือข่าย
edge-qpid-serverพยายามส่งข้อความไปยัง PostgreSQL แต่ PostgreSQL ส่งกลับข้อผิดพลาดขณะรันไทม์
ความละเอียด
ทำตามขั้นตอนสำหรับ Edge for Private Cloud เวอร์ชันของคุณเพื่อย้ายข้อความที่ติดค้างจากคิวข้อความที่ส่งไม่ได้กลับไปยังคิว Analytics หลัก
Edge for Private Cloud 4.53.00 ขึ้นไป (รวมถึง 4.54.00)
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 แทนเพื่อย้ายข้อความจากคิวข้อความที่ส่งไม่ได้กลับไปยังคิว Analytics หลัก โดยทำดังนี้
จดชื่อที่แน่นอนของคิวหลักและคิวข้อความที่ส่งไม่ได้จาก เอาต์พุตขั้นตอนการวินิจฉัยที่พบบ่อย (เช่น
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)ในโหนด 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)- แทนที่
ax-q-axgroup001-consumer-group-001และax-q-axgroup001-consumer-group-001-dlหากชื่อคิว Analytics ในqpid-stat -qแตกต่างกัน - หากต้องการย้ายข้อความเป็นชุด ให้ใส่
"limit"ในเนื้อหาคำขอ JSON (เช่น"limit": 100000) - หากเปิดใช้ SSL/TLS ใน Qpid Management API (
conf_qpidd_qpid_management.https.enabled=true) ให้ใช้https://และส่ง--cacert(หรือ-k) ไปยังcurl
ตรวจสอบเอาต์พุตจากคำสั่ง การเรียกที่สำเร็จจะแสดงผลอาร์เรย์ JSON ของรหัสข้อความภายในที่ย้ายแล้ว
[ 3, 4, 5 ]
หากอาร์เรย์ที่แสดงผลว่างเปล่า (
[]) แสดงว่าไม่มีข้อความในคิวข้อความที่ส่งไม่ได้ให้ย้ายรอ 5 นาที แล้วเรียกใช้
/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 4.52.x และเวอร์ชันก่อนหน้า
จดชื่อคิวจาก ขั้นตอนการวินิจฉัยที่พบบ่อย เช่น
ax-q-axgroup-001-consumer-group-001ax-q-axgroup-001-consumer-group-001-dl
เรียกใช้คำสั่ง
qpid-toolเพื่อเข้าสู่พรอมต์qpidแบบโต้ตอบqpid-tool
คำสั่งนี้จะแสดงผลดังนี้
Management Tool for QPID qpid:
เรียกใช้
list brokerเพื่อรับรายการโบรกเกอร์ที่ใช้งานอยู่list broker
คำสั่งนี้จะแสดงผลดังนี้
Object Summary: ID Created Destroyed Index ======================================= 125 21:00:00 - amqp-broker
โดยคอลัมน์
IDจะระบุรหัสของโบรกเกอร์จดรหัสของโบรกเกอร์ ในตัวอย่างคือ
125เรียกใช้คำสั่งต่อไปนี้เพื่อย้ายข้อความจากคิวข้อความที่ส่งไม่ได้กลับไปยังคิวจริง
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ออกจากเทอร์มินัล
qpid-toolquit
รอ 5 นาที แล้วทำตามขั้นตอนการวินิจฉัยอีกครั้งจาก ขั้นตอนการวินิจฉัยที่พบบ่อย ตรวจสอบว่าระบบกำลังประมวลผลข้อความในคิวจริง และตรวจสอบว่าจำนวน
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
กลุ่ม Analytics ที่แสดงผลโดยคำสั่ง curl ต่อไปนี้
curl -u sysadminEmail:password http://mgmt:8080/v1/analytics/groups/ax