您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。 info
問題
Edge UI 中的 Analytics 資訊主頁 (Proxy 成效、目標成效等) 未顯示任何資料。所有資訊主頁都會顯示下列訊息:
No traffic in the selected date range
錯誤訊息
這個問題不會導致可觀察到的錯誤。
可能原因
下表列出這個問題的可能原因:
| 原因 | 適用於 |
|---|---|
| No API Traffic for Organization-Environment | Edge for Private Cloud 使用者 |
| Postgres 資料庫中提供資料,但未顯示在使用者介面中 | Edge for Private Cloud 使用者 |
| Analytics 資料未推送至 Postgres 資料庫 | Edge for Private Cloud 使用者 |
| Analytics 部署錯誤 | Edge for Private Cloud 使用者 |
| 過時的 Analytics 伺服器 UUID | Edge for Private Cloud 使用者 |
機構環境沒有 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 資料庫中提供資料,但未顯示在使用者介面中」。
Postgres 資料庫中提供資料,但未顯示在使用者介面中
問題
首先,請判斷 Postgres 資料庫中是否有最新的 Analytics 資料。
如要檢查 Postgres Master 節點是否提供最新的 Analytics 資料,請按照下列步驟操作:
- 登入每個 Postgres 伺服器,然後執行下列指令,驗證您是否位於主要 Postgres 節點:
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master
- 在主要 Postgres 節點上登入 PostgreSQL:
psql -h /opt/apigee/var/run/apigee-postgresql -U apigee apigee
- 在 Postgres 資料庫中,使用下列 SQL 查詢檢查機構環境是否有資料表:
\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 瀏覽器中啟用開發人員工具,然後按照下列步驟,從任一 Analytics 資訊主頁取得使用的 API:
- 在開發人員工具中選取「網路」分頁標籤。
- 開始錄製。
- 重新載入 Analytics 資訊主頁。
- 在「開發人員工具」的左側面板中,選取含有「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 支援團隊聯絡。
Analytics 資料未推送至 Postgres 資料庫
診斷
如果資料未從 Qpid 伺服器推送至 Postgres 資料庫 (如「Postgres 資料庫中的資料可用,但未顯示在 UI 中」一節所述),請執行下列步驟:
- 執行下列指令,檢查每個 Qpid 伺服器是否已啟動並正常運作:
/opt/apigee/apigee-service/bin edge-qpid-server status
- 如果任何 Qpid 伺服器停止運作,請重新啟動。如果沒有,請跳至步驟 5。
/opt/apigee/apigee-service/bin 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是否有任何錯誤。 - 您可能會看到「Probably PG is still down」(可能 PG 仍處於停機狀態) 或 「FATAL: sorry, too many clients already」(致命錯誤:抱歉,用戶端數量過多) 等錯誤訊息,如下圖所示:
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 呼叫取得 Analytics 部署狀態:
curl -u user_email:password http://management_server_host:port /v1/organizations/orgname/environments/envname/provisioning/axstatus
- 從 API 呼叫結果檢查 Qpid 和 Postgres 伺服器的狀態。
解析度
通常只要重新啟動顯示「FAILURE」或「UNKNOWN」的伺服器,即可解決這個問題。
- 使用下列指令,重新啟動分析資料連線狀態為「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 伺服器發生問題,請重新啟動主要和從屬 Postgres 伺服器節點:
/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
- 如果 Qpid 伺服器發生問題,請重新啟動 Qpid 伺服器:
- 在上述範例中,Postgres 伺服器會顯示「UNKNOWN」訊息,因此您需要重新啟動主伺服器和從屬伺服器:
/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
過時的 Analytics 伺服器 UUID
診斷
- 使用下列 API 呼叫取得 Analytics 設定:
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" : { } } ]
- 確認輸出內容中的下列資訊正確無誤:
- 「scopes」元素中列出的 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:
- 如果所有資訊都正確無誤,請繼續參閱「Analytics 資料未推送至 Postgres 資料庫」。
- 如果 Postgres 和/或 Qpid 伺服器的 UUID 不正確,管理伺服器可能參照的是過時的 UUID。
解析度
如要移除過時的 UUID 並新增伺服器的正確 UUID,請與 Apigee Edge 支援團隊聯絡。
