您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件。 資訊
問題
由於 Qpidd 伺服器並未將分析訊息移轉至 PostgreSQL,因此 Edge UI 中缺少數據分析資料。在 Edge 中,edge-qpid-server
元件會對應至 Qpidd 伺服器。
Qpidd 為每個分析群組維護兩個佇列:
ax-q-axgroup001-consumer-group-001
這個佇列會保留訊息處理器和路由器推送的數據分析訊息。訊息會從這裡從
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-001
ax-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