Anda melihat dokumentasi Apigee Edge.
Buka
dokumentasi Apigee X. info
Gejala
Data analisis tidak ada di UI Edge Baru karena server Qpidd tidak mentransfer pesan analisis ke PostgreSQL. Di Edge, komponen edge-qpid-server sesuai dengan server Qpidd.
Qpidd mempertahankan dua antrean untuk setiap grup analisis:
ax-q-axgroup001-consumer-group-001
Antrean ini menyimpan pesan analisis yang dikirim dari Pemroses Pesan dan Router. Pesan diambil dari sini oleh
edge-qpid-serveryang mengurai pesan dan memasukkannya ke PostgreSQL. Setelah berhasil diproses, pesan akan dihapus dari antrean.ax-q-axgroup001-consumer-group-001-dl
Antrean ini adalah antrean pesan yang tidak terkirim. Antrean ini bertindak sebagai tujuan untuk pesan yang gagal diproses oleh
edge-qpid-serverdan dengan demikian tidak lagi ingin diterima. Antrean ini biasanya diisi saat jumlah pengiriman maksimum terlampaui, atau jika PostgreSQL menolak penyisipan data baru karena error runtime.
Pesan Error
Penyebab utamanya bisa jadi karena berbagai error runtime dari komponen edge-qpid-server. Biasanya, jika edge-qpid-server menerima error runtime dari PostgreSQL, antrean pesan yang tidak terkirim akan dibuat jika belum ada, lalu mengirim pesan berikut ke sana:
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.
Kemungkinan Penyebab
| Penyebab | Deskripsi | Petunjuk Pemecahan Masalah yang Berlaku Untuk |
|---|---|---|
| Pesan yang terhenti di antrean pesan yang tidak terkirim qpidd | edge-qpid-server tidak dapat memahami pesan yang dibacanya dari broker Qpidd atau tidak dapat mempertahankan pesan ke PostgreSQL.
|
Pengguna Edge Private Cloud |
Langkah-Langkah Diagnosis Umum
Jalankan perintah berikut di node Qpid untuk melihat statistik antrean Qpidd:
/opt/apigee/apigee-qpidd/bin/qpid-stat -q
Output akan menampilkan kumpulan antrean yang terdaftar di broker. Jika antrean dengan nama yang diakhiri dengan -dl memiliki pesan yang diisi (Q-Depth(Messages) di Edge untuk Private Cloud 4.53.00 dan yang lebih baru, atau msg di Edge untuk Private Cloud 4.52.x dan yang lebih lama), pesan akan terhenti di antrean pesan yang tidak terkirim.
Contoh output di Edge untuk Private Cloud 4.53.00 dan yang lebih baru (termasuk 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 | +---------------------------------------+-------------------+-------------------+-------------------+-------------------+-----------+----------+-------------------+------------+
Contoh output di Edge untuk Private Cloud 4.52.x dan yang lebih lama (broker
C++qpidd lama):
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
Penyebab: Pesan yang terhenti di antrean pesan yang tidak terkirim qpidd
Diagnosis
Kondisi ini dapat terjadi dalam skenario berikut:
- Upgrade telah dilakukan pada masa lalu, saat PostgreSQL tidak berfungsi.
- Gangguan sementara PostgreSQL karena masalah jaringan.
edge-qpid-servermencoba mengirim pesan ke PostgreSQL, tetapi PostgreSQL menampilkan error runtime.
Resolusi
Ikuti langkah-langkah untuk versi Edge for Private Cloud Anda guna memindahkan pesan yang terhenti dari antrean pesan yang tidak terkirim kembali ke antrean analisis utama.
Edge for Private Cloud 4.53.00 dan yang lebih baru (termasuk 4.54.00)
Edge for Private Cloud 4.53.00 dan yang lebih baru (termasuk 4.54.00) menggunakan Apache Qpid Broker-J (10.0.1 di 4.54.00 dan 8.0.6 di 4.53.x). CLI qpid-tool lama dihapus di Edge untuk Private Cloud 4.53.00 dan yang lebih baru serta tidak dapat digunakan.
Sebagai gantinya, gunakan Apache Qpid Broker-J HTTP Management REST API (moveMessages) atau Qpid Web Management Console untuk memindahkan pesan dari antrean pesan yang tidak terkirim kembali ke antrean analisis utama:
Catat nama persis antrean utama dan antrean pesan yang tidak terkirim dari output Langkah-Langkah Diagnosis Umum (misalnya,
ax-q-axgroup001-consumer-group-001danax-q-axgroup001-consumer-group-001-dl, atauax-q-axgroup-001-consumer-group-001danax-q-axgroup-001-consumer-group-001-dl).Di node Qpid, jalankan perintah
curlberikut untuk memanggil operasimoveMessagesdi antrean pesan yang tidak terkirim melalui Qpid Broker-J HTTP Management API (port8090secara default):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/moveMessagesDengan:
QPID_USERdanQPID_PASSWORDadalah kredensial pengelolaan Qpid yang dikonfigurasi di/opt/apigee/customer/application/qpidd.propertiesatau/opt/apigee/token/application/qpidd.properties(defaultnya adalahguest:guest).- Ganti
ax-q-axgroup001-consumer-group-001danax-q-axgroup001-consumer-group-001-dljika nama antrean analisis Anda diqpid-stat -qberbeda. - Untuk memindahkan pesan dalam batch, sertakan
"limit"dalam isi permintaan JSON (misalnya,"limit": 100000). - Jika SSL/TLS diaktifkan di Qpid Management API (
conf_qpidd_qpid_management.https.enabled=true), gunakanhttps://dan teruskan--cacert(atau-k) kecurl.
Verifikasi output perintah. Panggilan yang berhasil akan menampilkan array JSON dari ID pesan internal yang dipindahkan:
[ 3, 4, 5 ]
Jika array yang ditampilkan kosong (
[]), tidak ada pesan di antrean pesan yang tidak terkirim untuk dipindahkan.Tunggu 5 menit, lalu jalankan
/opt/apigee/apigee-qpidd/bin/qpid-stat -qdari Langkah-Langkah Diagnosis Umum. Pastikan pesan di antrean utama (ax-q-axgroup001-consumer-group-001) sedang diproses danQ-Depth(Messages)di antrean pesan yang tidak terkirim (ax-q-axgroup001-consumer-group-001-dl) tetap di0.
Edge for Private Cloud 4.52.x dan yang lebih lama
Catat nama antrean dari Langkah-Langkah Diagnosis Umum. Contoh:
ax-q-axgroup-001-consumer-group-001ax-q-axgroup-001-consumer-group-001-dl
Jalankan perintah
qpid-tooluntuk memasukkan perintahqpidinteraktif:qpid-tool
Perintah ini akan menampilkan hal berikut:
Management Tool for QPID qpid:
Jalankan
list brokeruntuk mendapatkan daftar broker aktif:list broker
Perintah ini akan menampilkan hal berikut:
Object Summary: ID Created Destroyed Index ======================================= 125 21:00:00 - amqp-broker
Dengan kolom
IDyang menentukan ID broker.Catat ID broker. Dalam contoh ini, ID-nya adalah
125.Jalankan perintah berikut untuk memindahkan pesan dari antrean pesan yang tidak terkirim kembali ke antrean sebenarnya:
call 125 queueMoveMessages ax-q-axgroup-001-consumer-group-001-dl ax-q-axgroup-001-consumer-group-001 100000 {}Perintah ini akan menampilkan hal berikut:
OK (0) - {}Jika tidak ada output, berarti tidak ada yang perlu dilakukan, yang berarti tidak ada pesan untuk dipindahkan. Jika Anda tidak melihat
OK (0), Anda harus menghubungi Dukungan Apigee Edge.Tutup terminal
qpid-tool:quit
Tunggu 5 menit, lalu jalankan kembali langkah-langkah diagnosis dari Langkah-Langkah Diagnosis Umum. Pastikan pesan di antrean sebenarnya sedang diproses dan pastikan jumlah
msgpesan yang tidak terkirim tetap di0.
Jika masalah masih berlanjut, buka bagian berikutnya.
Informasi Diagnostik yang Harus Dikumpulkan
Jika masalah berlanjut setelah mengikuti petunjuk sebelumnya, kumpulkan informasi diagnostik berikut dan bagikan kepada Dukungan Apigee Edge:
- Log Qpidd:
/opt/apigee/var/log/apigee-qpidd/qpidd.log(Edge untuk Private Cloud 4.53.00 dan yang lebih baru) dan/opt/apigee/var/log/apigee-qpidd/apigee-qpidd.log - Log PostgreSQL:
/opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log - Log Edge-qpid-server:
/opt/apigee/var/log/edge-qpid-server/logs/system.log - Log Edge-postgres-server:
/opt/apigee/var/log/edge-postgres-server/logs/system.log Statistik antrean Qpidd:
/opt/apigee/apigee-qpidd/bin/qpid-stat -q
Grup analisis yang ditampilkan oleh perintah curl berikut:
curl -u sysadminEmail:password http://mgmt:8080/v1/analytics/groups/ax