您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。 info
問題
由於 Qpidd 伺服器未將 Analytics 訊息傳輸至 PostgreSQL,因此 Edge UI 中缺少 Analytics 資料。在 Edge 中,edge-qpid-server 元件對應於 Qpidd 伺服器。
Qpidd 會為每個 Analytics 群組維護兩個佇列:
ax-q-axgroup001-consumer-group-001
這個佇列會保留從訊息處理器和路由器推送的 Analytics 訊息。
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 Private Cloud 使用者 |
常見診斷步驟
執行下列指令,查看 Qpidd 佇列統計資料:
qpid-stat -q
輸出內容會傳回向代理程式註冊的佇列集。如果名稱結尾為「-dl」的佇列已填入訊息,表示無效信件佇列中有訊息遭到擱置。
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 傳回執行階段錯誤。
解析度
-
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欄會指定仲介服務的 ID。記下仲介服務的 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-tool 終端機。
quit
等待 5 分鐘,然後從「常見診斷步驟」再次執行診斷步驟。確認實際佇列中的訊息正在處理中,並確保無效郵件訊息計數維持在 0。
如果問題仍未解決,請參閱下節說明。
必須收集診斷資訊
如果按照上述指示操作後問題仍未解決,請收集下列診斷資訊。請聯絡 Apigee Edge 支援團隊並提供下列資訊:
- Qpidd 記錄:
/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 佇列統計資料:
qpid-stat -q
下列 curl 指令傳回的 Analytics 群組:
curl -u sysadminEmail:password http://mgmt:8080/v1/analytics/groups/ax