Data analisis macet di antrean surat mati Qpidd

Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi Apigee X.
info

Gejala

Data Analytics tidak ada di UI Edge karena server Qpidd tidak mentransfer pesan Analytics 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 ditarik dari sini oleh edge-qpid-server yang 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. Tindakan ini berfungsi sebagai tujuan untuk pesan yang edge-qpid-server gagal diproses dan dengan demikian tidak ingin lagi menerima pesan. Kolom 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, akan membuat antrean pesan yang tidak terkirim 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 macet di antrean pesan yang dihentikan pengirimannya qpidd edge-qpid-server tidak dapat memahami pesan yang dibacanya dari broker Qpidd atau tidak dapat menyimpan pesan ke PostgreSQL. Pengguna Edge Private Cloud

Langkah-Langkah Diagnosis Umum

Jalankan perintah berikut untuk melihat statistik antrean Qpidd:

qpid-stat -q

Output menampilkan kumpulan antrean yang terdaftar di broker. Jika antrean dengan nama yang diakhiri dengan "-dl" berisi pesan, berarti ada pesan yang macet di antrean pesan yang dihentikan pengirimannya.

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 macet di antrean pesan yang tidak terkirim qpidd

Diagnosis

Kondisi ini dapat terjadi dalam skenario berikut:

  1. Upgrade telah dilakukan pada masa lalu, dan selama waktu tersebut PostgreSQL tidak berfungsi.
  2. Penonaktifan sementara PostgreSQL karena masalah jaringan.
  3. edge-qpid-server mencoba mengirim pesan ke PostgreSQL, tetapi PostgreSQL menampilkan error runtime.

Resolusi

  1. Catat nama antrean dari Langkah-Langkah Diagnostik Umum. Contoh:

    • ax-q-axgroup-001-consumer-group-001
    • ax-q-axgroup-001-consumer-group-001-dl
  2. Jalankan perintah qpid-tool untuk memasukkan perintah qpidinteraktif:

    qpid-tool

    Perintah ini akan menampilkan hal berikut:

    Management Tool for QPID
    qpid:
  3. Jalankan list broker untuk 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 ID menentukan ID broker.

  4. Catat ID broker. Dalam contoh ini, nilainya adalah 125.

  5. 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 yang perlu dipindahkan. Jika Anda tidak melihat OK(0), Anda harus menghubungi Dukungan Apigee Edge.

  6. Keluar dari terminal qpid-tool.

    quit
  7. Tunggu 5 menit, lalu jalankan langkah-langkah diagnosis lagi dari Langkah-Langkah Diagnosis Umum. Pastikan pesan dalam antrean sebenarnya sedang diproses dan pastikan jumlah pesan yang tidak terkirim tetap 0.

Jika masalah masih berlanjut, buka bagian berikutnya.

Mengumpulkan Informasi Diagnostik yang Wajib

Jika masalah berlanjut bahkan setelah mengikuti petunjuk di atas, kumpulkan informasi diagnostik berikut. Hubungi dan bagikan kepada Dukungan Apigee Edge:

  • Log Qpidd: /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:

    qpid-stat -q
  • Grup Analytics yang ditampilkan oleh perintah curl berikut:

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