Data analisis macet di antrean surat mati Qpidd

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

ini.

Gejala

Data analisis hilang di UI Edge 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 dan Router Pesan. 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 yang dihentikan pengirimannya. API ini berfungsi sebagai tujuan untuk pesan yang gagal diproses oleh edge-qpid-server dan tidak ingin lagi diterima. Kolom ini biasanya terisi saat jumlah pengiriman maksimum terlampaui, atau jika PostgreSQL menolak penyisipan data baru karena error runtime.

Pesan Error

Akar masalah ini dapat disebabkan oleh berbagai error runtime dari komponen edge-qpid-server. Biasanya, jika menerima error runtime dari PostgreSQL, edge-qpid-server akan membuat antrean yang dihentikan pengirimannya 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 terjebak dalam antrean huruf mati dari 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 untuk melihat statistik antrean Qpidd:

qpid-stat -q

Outputnya akan menampilkan serangkaian antrean yang terdaftar pada broker. Jika antrean dengan nama berakhiran "-dl" memiliki pesan yang terisi, maka ada pesan yang terjebak di antrean surat yang mati.

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 terjebak dalam antrean huruf qpidd mati

Diagnosis

Kondisi ini dapat terjadi dalam skenario berikut:

  1. Upgrade telah terjadi sebelumnya, dan selama periode tersebut PostgreSQL tidak aktif.
  2. Gangguan 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 Diagnosis Umum. Contoh:

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

    qpid-tool

    Perintah ini menampilkan hal berikut:

    Management Tool for QPID
    qpid:
  3. Jalankan list broker untuk mendapatkan daftar broker yang aktif:

    list broker

    Perintah ini menampilkan hal berikut:

    Object Summary:
    ID   Created   Destroyed  Index
    =======================================
    125  21:00:00  -          amqp-broker

    Tempat kolom ID menentukan ID broker.

  4. Catat ID pialang. Pada contoh, nilainya adalah 125.

  5. Jalankan perintah berikut untuk memindahkan pesan dari antrean yang dihentikan pengirimannya 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 menampilkan hal berikut:

    OK (0) - {}

    Jika tidak ada output, berarti tidak ada yang perlu dilakukan, yaitu tidak ada pesan untuk dipindahkan. Jika Anda tidak melihat OK(0), Anda harus menghubungi Dukungan Apigee Edge.

  6. Tutup terminal alat qpid.

    quit
  7. Tunggu 5 menit, lalu jalankan lagi langkah diagnosis dari Langkah-langkah Diagnosis Umum. Verifikasi bahwa pesan di antrean yang sebenarnya sedang diproses dan pastikan jumlah pesan yang dihentikan pengirimannya tetap 0.

Jika masalah masih berlanjut, buka bagian berikutnya.

Harus Mengumpulkan Informasi Diagnostik

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 server edge-qpid: /opt/apigee/var/log/edge-qpid-server/logs/system.log
  • Log server edge-postgres:/opt/apigee/var/log/edge-postgres-server/logs/system.log
  • Statistik antrean Qpidd:

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

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