查看 Apigee Edge 說明文件。
前往
Apigee X說明文件。 資訊
問題
數據分析資訊主頁 (Proxy 成效、目標成效等) 未顯示 資料。所有資訊主頁都會顯示下列訊息:
No traffic in the selected date range
錯誤訊息
這個問題不會導致可觀測的錯誤。
可能原因
下表列出這個問題的可能原因:
原因 | 適用於 |
---|---|
機構環境沒有 API 流量 | 適用於 Private Cloud 使用者的 Edge |
Postgres 資料庫中已有資料,但未顯示在 使用者介面 | 適用於 Private Cloud 使用者的 Edge |
數據分析資料未推送至 Postgres 資料庫 | 適用於 Private Cloud 使用者的 Edge |
Analytics 部署作業有誤 | 適用於 Private Cloud 使用者的 Edge |
數據分析伺服器 UUID | 適用於 Private Cloud 使用者的 Edge |
機構環境沒有 API 流量
診斷
- 檢查特定機構環境的 API Proxy 流量,
您想查看 Analytics 資料的確切時間長度,請使用下列其中一個方法
方法:
- 針對使用者目前正在使用的任何 API 啟用追蹤記錄,並 檢查您是否能收到追蹤記錄中的任何要求。
- 查看 NGINX 存取記錄
(
/opt/apigee/var/log/edge-router/nginx/logs/access.log)
,看看有無 特定時間長度的 API Proxy 新項目。 - 如果您從 API Proxy 將資訊記錄到 Syslog、Splunk、Loggly 等記錄檔伺服器, 等等,那麼您可以查看這些記錄伺服器中是否有任何 API Proxy 項目 特定時間長度
- 如果特定時間範圍內沒有流量 (沒有 API 要求),數據分析資料就會 無法使用。您會看見「所選日期範圍內沒有流量」訊息。在 Analytics 中 儀表板中指定這項設定。
解析度
- 在特定機構環境中呼叫一或多個 API Proxy。
- 請稍候片刻,然後前往「小時」分頁查看數據分析資訊主頁,看看有無 資料就會出現
- 如果問題仍未解決,請繼續前往 Postgres 中提供的資料 資料庫,但不在 UI 中顯示。
Postgres 資料庫中有可用資料,但並未顯示在使用者介面中
問題
首先,請判斷 Postgres 資料庫中最新的數據分析資料可用性。
如要檢查 Postgres Master 中是否有最新的 Analytics 資料 節點:
- 登入每個 Postgres 伺服器,執行下列指令以驗證
請在主要 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 中顯示的原因。
診斷
- 啟用開發人員工具
並在其中一個數據分析資訊主頁中使用
步驟如下:
- 在「開發人員工具」中選取「聯播網」分頁標籤。
- 開始錄製。
- 重新載入 Analytics 資訊主頁。
- 在「開發人員工具」的左側面板中,選取 「apiproxy?_optimized...」。
- 在開發人員工具的右側面板中,選取 [Headers]並記下 「要求網址」。
- 以下是開發人員工具的輸出內容範例:
輸出內容範例,顯示「Network」分頁的 Proxy 效能資訊主頁使用的 API Proxy 效能資訊主頁的開發人員工具
- 直接執行 Management API 呼叫,檢查是否得到結果。以下是 API 範例
「Proxy 效能」資訊主頁的「天」分頁呼叫:
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/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:
- 如果有最新資料,請略過下列步驟,直接繼續完成 「解決方法」區段。如果無法取得最新資料,請繼續採取以下行動 100 萬步的訓練
- 檢查來自 Qpid 伺服器佇列的訊息是否正在推送至 Postgres 資料庫。
- 執行
qpid-stat -q command
並查看 msgIn 和 msgOut 資料欄中的值。 - 以下是顯示 msgIn 和 msgOut 的輸出範例。這表示 要求訊息不會從 Qpid 伺服器推送至 Postgres 資料庫。
- 執行
- 如果 msgIn 和 msgOut 資料欄內不一致,請檢查 Qpid
伺服器記錄
/opt/apigee/var/log/edge-qpid-server/system.log
,看看是否存在 任何錯誤。 - 您可能會看到下列錯誤訊息,例如「PG 仍然可能當機」或
「嚴重:很抱歉,已經太多客戶」,如下圖所示:
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 Server 執行過多 SQL 查詢,或執行中的 CPU 因此無法回應 Qpid 伺服器。
解析度
- 重新啟動 Postgres Server 和 PostgreSQL,如下所示:
/opt/apigee/bin/apigee-service edge-postgres-server restart
/opt/apigee/bin/apigee-service apigee-postgresql restart
- 這個重新啟動作業可確保先前的所有 SQL 查詢皆已停止,且應允許新的 提供快速連結
- 重新載入 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 伺服器的狀態顯示為「成功」,則表示 數據分析伺服器已經正確連接。前往「過時」部分 Analytics 伺服器 UUID。
- 如果 Qpid/Postgres 伺服器的狀態顯示為「UNKNOWN」(不明)或「失敗」,則
表示對應伺服器發生問題。
例如,在下列情境中,Postgres 伺服器的狀態為 「UNKNOWN」:
如果在數據分析的新手上路流程中發生錯誤,就可能發生這種情況。失敗 防止來自管理伺服器的訊息送達 Postgres 伺服器。
解析度
通常只要重新啟動顯示「失敗」訊息的伺服器,即可解決這個問題或 「UNKNOWN」。
- 重新啟動每個分析接線狀態顯示「失敗」的伺服器。或「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 伺服器:
- 在上述範例中,「UNKNOWN」訊息,因此您需要輸入
以重新啟動主和從出的 Postgres 伺服器:
/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
Analytics 伺服器 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 伺服器節點:
curl 0:8084/v1/servers/self/uuid
- 在每個 Qpid 上執行下列指令,取得 Qpid 伺服器 UUID
伺服器節點:
curl 0:8083/v1/servers/self/uuid
- 分別在
Postgres 伺服器節點:
- 如果所有資訊都正確無誤,請繼續前往 Analytics 資料 未推送至 Postgres 資料庫
- 如果 Postgres 和/或 Qpid 伺服器的 UUID 不正確, 管理伺服器所參照的 UUID 過舊。
解析度
如要移除過時的 UUID,並為伺服器新增正確的 UUID,請與 Apigee Edge 支援團隊聯絡。