Analytics verileri Qpidd geçersiz harf sırasında takılı kaldı

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Belirti

Qpidd sunucusu, analiz mesajlarını PostgreSQL'e aktarmadığı için yeni Edge kullanıcı arayüzünde analiz verileri eksik. Edge'de edge-qpid-server bileşeni, Qpidd sunucusuna karşılık gelir.

Qpidd, her analiz grubu için iki sıra tutar:

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

    Bu kuyruk, Mesaj İşleyiciler ve Yönlendiriciler'den gönderilen analiz mesajlarını tutar. Mesajlar, mesajları ayrıştırıp PostgreSQL'e ekleyen edge-qpid-server tarafından buradan alınır. İletiler başarıyla işlendikten sonra sıradan kaldırılır.

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

    Bu sıra, işlenemeyen iletiler sırasıdır. edge-qpid-server tarafından işlenemeyen ve bu nedenle artık alınmak istenmeyen mesajların hedefi olarak işlev görür. Bu alan genellikle maksimum yayın sayısı aşıldığında veya PostgreSQL, çalışma zamanı hataları nedeniyle yeni verilerin eklenmesini reddettiğinde doldurulur.

Hata Mesajı

Temel neden, edge-qpid-server bileşenindeki çeşitli çalışma zamanı hataları olabilir. Genellikle edge-qpid-server, PostgreSQL'den bir çalışma zamanı hatası alırsa henüz mevcut değilse ölü harf kuyruğunu oluşturur ve ardından aşağıdaki mesajı oraya gönderir:

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.

Olası nedenler

Neden Açıklama Aşağıdaki ürünler için geçerli sorun giderme talimatları
qpidd'nin teslim edilemeyen iletiler kuyruğunda takılı kalan mesajlar edge-qpid-server, Qpidd aracısından okuduğu iletileri anlayamadı veya iletileri PostgreSQL'de saklayamadı. Edge Private Cloud Kullanıcıları

Sık Karşılaşılan Teşhis Adımları

Qpidd kuyruk istatistiklerini görüntülemek için Qpid düğümünde aşağıdaki komutu çalıştırın:

/opt/apigee/apigee-qpidd/bin/qpid-stat -q

Çıkış, aracıya kayıtlı kuyruk kümesini döndürür. Adı -dl ile biten kuyrukta mesajlar varsa (Edge for Private Cloud 4.53.00 ve sonraki sürümlerde Q-Depth(Messages), Edge for Private Cloud 4.52.x ve önceki sürümlerde msg) mesajlar, teslim edilemeyen mesaj kuyruğunda takılı kalır.

Edge for Private Cloud 4.53.00 ve sonraki sürümlerde (4.54.00, Apache Qpid Broker-J dahil) örnek çıkış:

+---------------------------------------+-------------------+-------------------+-------------------+-------------------+-----------+----------+-------------------+------------+
|               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 ve önceki sürümlerde (eski C++ qpidd aracısı) örnek çıkış:

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

Nedeni: Mesajlar qpidd'nin teslim edilemeyen mesaj kuyruğunda takılı kalıyor

Teşhis

Bu durum aşağıdaki senaryolarda ortaya çıkabilir:

  1. Geçmişte bir yükseltme işlemi yapıldı ve bu işlem sırasında PostgreSQL kullanılamadı.
  2. Ağ sorunları nedeniyle PostgreSQL'de geçici bir kesinti yaşanması
  3. edge-qpid-server, PostgreSQL'e mesaj göndermeye çalıştı ancak PostgreSQL bir çalışma zamanı hatası döndürdü.

Çözünürlük

Takılı kalan mesajları, teslim edilemeyen mesajlar kuyruğundan ana analiz kuyruğuna taşımak için Edge for Private Cloud sürümünüzle ilgili adımları uygulayın.

Edge for Private Cloud 4.53.00 ve sonraki sürümler (4.54.00 dahil)

Edge for Private Cloud 4.53.00 ve sonraki sürümler (4.54.00 dahil) Apache Qpid Broker-J'yi kullanır (4.54.00'da 10.0.1 ve 4.53.x'te 8.0.6). Eski qpid-tool CLI, Edge for Private Cloud 4.53.00 ve sonraki sürümlerden kaldırılmıştır ve kullanılamaz. Bunun yerine, mesajları teslim edilemeyen ileti kuyruğundan ana analiz kuyruğuna geri taşımak için Apache Qpid Broker-J HTTP Management REST API'yi (moveMessages) veya Qpid Web Management Console'u kullanın:

  1. Common Diagnosis Steps (Ortak Teşhis Adımları) çıkışındaki ana kuyruğun ve işlenemeyen ileti kuyruğunun tam adlarını not edin (örneğin, ax-q-axgroup001-consumer-group-001 ve ax-q-axgroup001-consumer-group-001-dl ya da ax-q-axgroup-001-consumer-group-001 ve ax-q-axgroup-001-consumer-group-001-dl).

  2. Qpid düğümünde, Qpid Broker-J HTTP Yönetim API'si (varsayılan olarak bağlantı noktası 8090) üzerinden ölü harf kuyruğunda curl işlemini çağırmak için aşağıdaki moveMessages komutunu çalıştırın:

    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

    Burada:

    • QPID_USER ve QPID_PASSWORD, /opt/apigee/customer/application/qpidd.properties veya /opt/apigee/token/application/qpidd.properties içinde yapılandırılan Qpid yönetim kimlik bilgileridir (varsayılan değer guest:guest'dir).
    • qpid-stat -q içindeki analiz sırası adlarınız farklıysa ax-q-axgroup001-consumer-group-001 ve ax-q-axgroup001-consumer-group-001-dl değerlerini değiştirin.
    • İletileri toplu olarak taşımak için JSON istek gövdesine "limit" ekleyin (ör. "limit": 100000).
    • Qpid Management API'de (conf_qpidd_qpid_management.https.enabled=true) SSL/TLS etkinse https:// kullanın ve --cacert (veya -k) değerini curl parametresine iletin.
  3. Komut çıkışını doğrulayın. Başarılı bir çağrı, taşınan dahili ileti kimliklerinin JSON dizisini döndürür:

    [ 3, 4, 5 ]

    Döndürülen dizi boşsa ([]) taşınacak iletiler yoktur.

  4. 5 dakika bekleyin ve ardından Genel Teşhis Adımları'ndaki /opt/apigee/apigee-qpidd/bin/qpid-stat -q komutunu çalıştırın. Ana sıradaki (ax-q-axgroup001-consumer-group-001) mesajların işlendiğini ve teslim edilemeyen mesajlar sırasındaki (ax-q-axgroup001-consumer-group-001-dl) Q-Depth(Messages) değerinin 0 olarak kaldığını doğrulayın.

Edge for Private Cloud 4.52.x ve önceki sürümler

  1. Ortak Teşhis Adımları bölümünden kuyrukların adlarını not edin. Örneğin:

    • ax-q-axgroup-001-consumer-group-001
    • ax-q-axgroup-001-consumer-group-001-dl
  2. Etkileşimli qpid istemine girmek için qpid-tool komutunu çalıştırın:

    qpid-tool

    Bu komut aşağıdakileri döndürür:

    Management Tool for QPID
    qpid:
  3. Etkin aracıların listesini almak için list broker komutunu çalıştırın:

    list broker

    Bu komut aşağıdakileri döndürür:

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

    ID sütunu, aracı kurumun kimliğini belirtir.

  4. Aracının kimliğini not edin. Örnekte 125'dır.

  5. Mesajları işlenemeyen iletiler sırasından gerçek sıraya geri taşımak için aşağıdaki komutu çalıştırın:

    call 125 queueMoveMessages ax-q-axgroup-001-consumer-group-001-dl ax-q-axgroup-001-consumer-group-001 100000 {}

    Bu komut aşağıdaki sonucu döndürür:

    OK (0) - {}

    Çıktı yoksa yapılacak bir işlem yok demektir. Yani taşınacak mesaj yoktur. OK (0) simgesini görmüyorsanız Apigee Edge Destek Ekibi ile iletişime geçmeniz gerekir.

  6. qpid-tool terminalinden çıkın:

    quit
  7. 5 dakika bekleyin ve ardından Genel Teşhis Adımları bölümündeki teşhis adımlarını tekrar uygulayın. Gerçek sıradaki mesajların işlendiğini doğrulayın ve işlenemeyen mesaj msg sayısının 0 olarak kaldığından emin olun.

Sorun devam ederse sonraki bölüme gidin.

Teşhis Bilgileri Toplanmalıdır

Önceki talimatları uyguladıktan sonra sorun devam ederse aşağıdaki teşhis bilgilerini toplayıp Apigee Edge Destek Ekibi ile paylaşın:

  • Qpidd günlükleri: /opt/apigee/var/log/apigee-qpidd/qpidd.log (Edge for Private Cloud 4.53.00 ve sonraki sürümler) ve /opt/apigee/var/log/apigee-qpidd/apigee-qpidd.log
  • PostgreSQL günlükleri: /opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log
  • Edge-qpid-server günlükleri: /opt/apigee/var/log/edge-qpid-server/logs/system.log
  • Edge-postgres-server günlükleri: /opt/apigee/var/log/edge-postgres-server/logs/system.log
  • Qpidd kuyruğu istatistikleri:

    /opt/apigee/apigee-qpidd/bin/qpid-stat -q
  • Aşağıdaki curl komutu tarafından döndürülen Analytics grubu:

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