您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件。 資訊
問題
數據分析資訊主頁 (Proxy 效能、目標效能等) 不會在 Edge UI 中顯示任何資料。所有資訊主頁都會顯示以下訊息:
No traffic in the selected date range
錯誤訊息
這個問題不會導致可觀測的錯誤。
可能原因
下表列出這個問題的可能原因:
原因 | 適用於 |
---|---|
機構環境沒有 API 流量 | 適用於私有雲使用者的邊緣 |
Postgres 資料庫中提供的資料,未顯示在 UI 中 | 適用於私有雲使用者的邊緣 |
Analytics (分析) 資料未推送至 Postgres 資料庫 | 適用於私有雲使用者的邊緣 |
數據分析部署作業不正確 | 適用於私有雲使用者的邊緣 |
過時的數據分析伺服器 UUID | 適用於私有雲使用者的邊緣 |
機構環境沒有 API 流量
診斷
- 根據您嘗試查看數據分析資料的特定時間長度,查看特定機構環境中的 API Proxy 是否有流量:
- 針對使用者目前使用的 API 啟用追蹤記錄,檢查您是否能在追蹤記錄中取得任何要求。
- 查看 NGINX 存取記錄檔 (
/opt/apigee/var/log/edge-router/nginx/logs/access.log)
,並查看特定期間內的 API Proxy 是否有任何新項目)。 - 若您將 API Proxy 資訊記錄到 Syslog、Splunk、Loggly 等記錄伺服器,可以在一定期間內,查看這些記錄伺服器中是否存在 API Proxy 的任何項目。
- 如果這段時間內沒有流量 (沒有 API 要求),系統就不會提供數據分析資料。數據分析資訊主頁會顯示「所選日期範圍內沒有流量」。
解析度
- 針對特定機構環境中的一或多個 API Proxy 進行呼叫。
- 等待幾秒鐘,然後查看「小時」分頁中的數據分析資訊主頁,看看資料是否顯示。
- 如果問題持續發生,請前往 Postgres Database 中提供的資料,但不顯示在 UI 中的資料中。
Postgres 資料庫中提供的資料,但未顯示在使用者介面中
問題
首先,請確認 Postgres 資料庫中是否提供最新的 Analytics (分析) 資料。
如何檢查 Postgres Master 節點中是否有最新的 Analytics (分析) 資料:
- 登入每個 Postgres 伺服器,然後執行下列指令,確認是否位於 Master Postgres 節點:
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master
- 在 Master Postgres 節點中,登入 PostgreSQL:
psql -h /opt/apigee/var/run/apigee-postgresql -U apigee apigee
- 請在 Postgres 資料庫中使用下列 SQL 查詢,確認您的 org-env 是否已有資料表:
\d analytics."orgname.envname.fact"
- 使用下列 SQL 查詢,檢查 Postgres 資料庫中是否有最新資料:
select max(client_received_start_timestamp) from analytics."orgname.envname.fact";
- 如果最新的時間戳記過舊 (或空值),表示 Postgres 資料庫中沒有資料。導致這個問題的原因可能是資料未從 Qpid 伺服器推送至 Postgres 資料庫。前往「Analytics (分析) 資料未推送至 Postgres 資料庫」部分。
- 如果主要節點的 Postgres 資料庫中有可用的最新資料,請按照下列步驟診斷資料未顯示在 Edge UI 中的原因。
診斷
- 在 Chrome 瀏覽器中啟用開發人員工具,然後按照下列步驟,透過任一數據分析資訊主頁取得目前使用的 API:
- 選取「開發人員工具」中的「聯播網」分頁標籤。
- 開始錄製。
- 重新載入數據分析資訊主頁。
- 在開發人員工具的左側面板中,選取含有 "apiproxy?_optimized...".
- 在「開發人員工具」的右側面板中,選取「標頭」分頁標籤,然後記下「要求網址」。
- 以下是開發人員工具的輸出範例:
輸出範例,顯示「Proxy 效能資訊主頁」的「網路」分頁使用的 API 用於「Proxy 效能」資訊主頁
- 請直接執行 Management API 呼叫,並檢查是否取得結果。以下是 Proxy 效能資訊主頁中「天」分頁的 API 呼叫範例:
curl -u username:password "http://management_server_IP_address:8080/v1/organizations/ org_name/environments/env_name/stats/apiproxy?limit=14400& select=sum(message_count),sum(is_error),avg(total_response_time), avg(target_response_time)&sort=DESC&sortby=sum(message_count),sum(is_error), avg(total_response_time),avg(target_response_time)&timeRange=08%2F9%2F2017+ 18:00:00~08%2F10%2F2017+18:00:00&timeUnit=hour&tsAscending=true"
- 如果系統顯示成功的回應,但沒有任何資料,表示管理伺服器因網路連線問題而無法從 Postgres 伺服器擷取資料。
- 檢查是否能從管理伺服器連線至 Postgres 伺服器:
telnet Postgres_server_IP_address 5432
- 如果您無法連線到 Postgres 伺服器,請檢查通訊埠 5432 是否受到防火牆限制。
- 如果設有防火牆限制,可能是管理伺服器無法從 Postgres 伺服器提取資料的原因。
解析度
- 如果設有防火牆限制,請將其移除,讓管理伺服器能與 Postgres 伺服器通訊。
- 如果沒有防火牆限制,則可能是網路故障造成問題。
- 如果管理伺服器發生網路故障,重新啟動或許就能解決問題。
- 使用下列指令,逐一重新啟動所有管理伺服器:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- 檢查是否能在 Edge UI 中查看分析資料。
如果依然找不到資料,請與 Apigee Edge 支援團隊聯絡。
數據分析資料未推送至 Postgres 資料庫
診斷
如果資料未從 Qpid 伺服器推送至 Postgres 資料庫 (依 Postgres 資料庫中可用的資料,但未顯示在 UI 中的資料) 而定,請執行下列步驟:
- 請執行下列指令,確認每個 Qpid 伺服器是否都已啟動且正在執行:
/opt/apigee/bin/apigee-service edge-qpid-server status
- 如果任何 Qpid 伺服器當機,請重新啟動。如果只有一部裝置,請跳至步驟 5。
/opt/apigee/bin/apigee-service edge-qpid-server restart
- 請稍候片刻,然後再次檢查 Postgres 資料庫是否提供最新資料。
- 登入 PostgreSQL:
psql -h /opt/apigee/var/run/apigee-postgresql -U apigee apigee
- 執行下列 SQL 查詢,查看是否有最新資料:
select max(client_received_start_timestamp) from analytics."orgname.envname.fact";
- 登入 PostgreSQL:
- 如果有可用的最新資料,請略過下列步驟,繼續前往「解決方案」一節中的最後一個步驟。如果沒有最新資料,請按照下列步驟操作。
- 檢查 Qpid 伺服器佇列中的訊息是否推送至 Postgres 資料庫。
- 執行
qpid-stat -q command
並查看 msgIn 和 msgOut 資料欄的值。 - 以下是 msgIn 和 msgOut 不等於的輸出範例。這表示訊息並未從 Qpid 伺服器推送至 Postgres 資料庫。
- 執行
- 如果 msgIn 和 msgOut 資料欄之間有不相符,請檢查 Qpid 伺服器記錄
/opt/apigee/var/log/edge-qpid-server/system.log
,確認是否有任何錯誤。 - 您可能會看到「Prob 請注意 PG 目前仍在下課」或「FATAL:很抱歉,個客戶已經過多」等錯誤訊息,如下圖所示:
2017-07-28 09:56:39,896 ax-q-axgroup001-persistpool-thread-3 WARN c.a.a.d.c.ServerHandle - ServerHandle.logRetry() : Found the exception to be retriable - . Error observed while trying to connect to jdbc:postgresql://PG_IP_address:5432/apigee Initial referenced UUID when execution started in this thread was a1ddf72f-ac77-49c0-a1fc-d0db6bf9991d Probably PG is still down. PG set used - [a1ddf72f-ac77-49c0-a1fc-d0db6bf9991d] 2017-07-28 09:56:39,896 ax-q-axgroup001-persistpool-thread-3 WARN c.a.a.d.c.ServerHandle - ServerHandle.logRetry() : Could not get JDBC Connection; nested exception is org.postgresql.util.PSQLException: FATAL: sorry, too many clients already 2017-07-28 09:56:53,617 pool-7-thread-1 WARN c.a.a.d.c.ServerHandle - ServerHandle.logRetry() : Found the exception to be retriable - . Error observed while trying to connect to jdbc:postgresql://PG_IP_address:5432/apigee Initial referenced UUID when execution started in this thread was a1ddf72f-ac77-49c0-a1fc-d0db6bf9991d Probably PG is still down. PG set used - [a1ddf72f-ac77-49c0-a1fc-d0db6bf9991d] 2017-07-28 09:56:53,617 pool-7-thread-1 WARN c.a.a.d.c.ServerHandle - ServerHandle.logRetry() : Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (FATAL: sorry, too many clients already)
如果 Postgres 伺服器執行的 SQL 查詢數量過多,或是 CPU 執行程度很高且無法回應 Qpid 伺服器,就可能發生這種情況。
解析度
- 重新啟動 Postgres 伺服器和 PostgreSQL,如下所示:
/opt/apigee/bin/apigee-service edge-postgres-server restart
/opt/apigee/bin/apigee-service apigee-postgresql restart
- 重新啟動可確保先前的所有 SQL 查詢都停止,且應允許連至 Postgres 資料庫。
- 重新載入 Analytics (分析) 資訊主頁,確認 Analytics (分析) 資料是否正常顯示。
如果問題持續發生,請與 Apigee Edge 支援團隊聯絡。
Analytics (分析) 部署作業不正確
診斷
- 使用以下 API 呼叫取得數據分析部署狀態:
curl -u user_email:password http://management_server_host:port /v1/organizations/orgname/environments/envname/provisioning/axstatus
- 從 API 呼叫的結果檢查 Qpid 和 Postgres 伺服器的狀態。
- 如果 Qpid 和 Postgres 伺服器的狀態顯示為「成功」,就表示數據分析伺服器已正確連接。前往過時的數據分析伺服器 UUID。
- 如果 Qpid/Postgres 伺服器的狀態顯示為「不明」或「失敗」,表示對應伺服器發生問題。
舉例來說,以下情境會將 Postgres 伺服器的狀態顯示為「UNKNOWN」:
如果在數據分析新手上路流程過程中失敗,就有可能發生這種情況。此錯誤會導致管理伺服器的訊息無法送達 Postgres 伺服器。
解析度
通常只要重新啟動顯示「FAILURE」或「UNKNOWN」的伺服器,通常就能解決這個問題。
- 使用下列指令,重新啟動分析線路狀態顯示為「失敗」或「不明」的每個伺服器:
/opt/apigee/apigee-service/bin/apigee-service component restart
- 例如:
- 如果您在 Qpid 伺服器上看到這個問題,請重新啟動 Qpid 伺服器:
/opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
- 如果您在 Postgres 伺服器中發現問題,請重新啟動 Master 和 Slave Postgres 伺服器節點:
/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
- 如果您在 Qpid 伺服器上看到這個問題,請重新啟動 Qpid 伺服器:
- 在上例中,Postgres 伺服器顯示了「UNKNOWN」訊息,因此您需要重新啟動 Master 和 Slave Postgres 伺服器:
/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
過時的數據分析伺服器 UUID
診斷
- 使用下列 API 呼叫取得數據分析設定:
curl -u user_email:password http://management-server-host:port/v1/analytics/groups/ax
以下是上述 API 的輸出範例:
[ { "name" : "axgroup001", "properties" : { "consumer-type" : "ax" }, "scopes" : [ "myorg~prod", "myorg~test" ], "uuids" : { "aries-datastore" : [ ], "postgres-server" : [ "6777...2db14" ], "dw-server" : [ ], "qpid-server" : [ "774e...fb23", "29f3...8c11" ] }, "consumer-groups" : [ { "name" : "consumer-group-001", "consumers" : [ "774e...8c11" ], "datastores" : [ "6777...db14" ], "properties" : { } } ], "data-processors" : { } } ]
- 確認輸出中的下列資訊正確無誤:
- 「範圍」元素中列出的 org-env 名稱
- Postgres 伺服器和 Qpid 伺服器的 UUID。
- 在每個 Postgres 伺服器節點中執行下列指令,以取得 Postgres 伺服器 UUID:
curl 0:8084/v1/servers/self/uuid
- 在每個 Qpid 伺服器節點中執行下列指令,以取得 Qpid 伺服器 UUID:
curl 0:8083/v1/servers/self/uuid
- 在每個 Postgres 伺服器節點中執行下列指令,以取得 Postgres 伺服器 UUID:
- 如果所有資訊正確無誤,請繼續執行未推送至 Postgres 資料庫的 Analytics (分析) 資料。
- 如果 Postgres 和/或 Qpid 伺服器的 UUID 不正確,那麼管理伺服器有可能會參照過時的 UUID。
解析度
如要移除過時的 UUID,並為伺服器新增正確的 UUID,請與 Apigee Edge 支援團隊聯絡。