數據分析資訊主頁未顯示資料

您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件
資訊

問題

數據分析資訊主頁 (Proxy 效能、目標效能等) 不會在 Edge UI 中顯示任何資料。所有資訊主頁都會顯示以下訊息:

No traffic in the selected date range

錯誤訊息

這個問題不會導致可觀測的錯誤。

可能原因

下表列出這個問題的可能原因:

原因 適用於
機構環境沒有 API 流量 適用於私有雲使用者的邊緣
Postgres 資料庫中提供的資料,未顯示在 UI 中 適用於私有雲使用者的邊緣
Analytics (分析) 資料未推送至 Postgres 資料庫 適用於私有雲使用者的邊緣
數據分析部署作業不正確 適用於私有雲使用者的邊緣
過時的數據分析伺服器 UUID 適用於私有雲使用者的邊緣

機構環境沒有 API 流量

診斷

  1. 根據您嘗試查看數據分析資料的特定時間長度,查看特定機構環境中的 API Proxy 是否有流量:
    1. 針對使用者目前使用的 API 啟用追蹤記錄,檢查您是否能在追蹤記錄中取得任何要求。
    2. 查看 NGINX 存取記錄檔 (/opt/apigee/var/log/edge-router/nginx/logs/access.log),並查看特定期間內的 API Proxy 是否有任何新項目)。
    3. 若您將 API Proxy 資訊記錄到 Syslog、Splunk、Loggly 等記錄伺服器,可以在一定期間內,查看這些記錄伺服器中是否存在 API Proxy 的任何項目。
  2. 如果這段時間內沒有流量 (沒有 API 要求),系統就不會提供數據分析資料。數據分析資訊主頁會顯示「所選日期範圍內沒有流量」。

解析度

  1. 針對特定機構環境中的一或多個 API Proxy 進行呼叫。
  2. 等待幾秒鐘,然後查看「小時」分頁中的數據分析資訊主頁,看看資料是否顯示。
  3. 如果問題持續發生,請前往 Postgres Database 中提供的資料,但不顯示在 UI 中的資料中。

Postgres 資料庫中提供的資料,但未顯示在使用者介面中

問題

首先,請確認 Postgres 資料庫中是否提供最新的 Analytics (分析) 資料。

如何檢查 Postgres Master 節點中是否有最新的 Analytics (分析) 資料:

  1. 登入每個 Postgres 伺服器,然後執行下列指令,確認是否位於 Master Postgres 節點:
    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master
    
  2. 在 Master Postgres 節點中,登入 PostgreSQL:
    psql -h /opt/apigee/var/run/apigee-postgresql -U apigee apigee
    
  3. 請在 Postgres 資料庫中使用下列 SQL 查詢,確認您的 org-env 是否已有資料表:
    \d analytics."orgname.envname.fact"
    
  4. 使用下列 SQL 查詢,檢查 Postgres 資料庫中是否有最新資料:
    select max(client_received_start_timestamp) from analytics."orgname.envname.fact";
    
  5. 如果最新的時間戳記過舊 (或空值),表示 Postgres 資料庫中沒有資料。導致這個問題的原因可能是資料未從 Qpid 伺服器推送至 Postgres 資料庫。前往「Analytics (分析) 資料未推送至 Postgres 資料庫」部分。
  6. 如果主要節點的 Postgres 資料庫中有可用的最新資料,請按照下列步驟診斷資料未顯示在 Edge UI 中的原因。

診斷

  1. 在 Chrome 瀏覽器中啟用開發人員工具,然後按照下列步驟,透過任一數據分析資訊主頁取得目前使用的 API:
    1. 選取「開發人員工具」中的「聯播網」分頁標籤。
    2. 開始錄製。
    3. 重新載入數據分析資訊主頁。
    4. 在開發人員工具的左側面板中,選取含有 "apiproxy?_optimized...".
    5. 在「開發人員工具」的右側面板中,選取「標頭」分頁標籤,然後記下「要求網址」。
  2. 以下是開發人員工具的輸出範例:

    輸出範例,顯示「Proxy 效能資訊主頁」的「網路」分頁使用的 API 用於「Proxy 效能」資訊主頁

  3. 請直接執行 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"
    
  4. 如果系統顯示成功的回應,但沒有任何資料,表示管理伺服器因網路連線問題而無法從 Postgres 伺服器擷取資料。
  5. 檢查是否能從管理伺服器連線至 Postgres 伺服器:
    telnet Postgres_server_IP_address 5432
    
  6. 如果您無法連線到 Postgres 伺服器,請檢查通訊埠 5432 是否受到防火牆限制。
  7. 如果設有防火牆限制,可能是管理伺服器無法從 Postgres 伺服器提取資料的原因。

解析度

  1. 如果設有防火牆限制,請將其移除,讓管理伺服器能與 Postgres 伺服器通訊。
  2. 如果沒有防火牆限制,則可能是網路故障造成問題。
  3. 如果管理伺服器發生網路故障,重新啟動或許就能解決問題。
  4. 使用下列指令,逐一重新啟動所有管理伺服器:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    
  5. 檢查是否能在 Edge UI 中查看分析資料。

如果依然找不到資料,請與 Apigee Edge 支援團隊聯絡。

數據分析資料未推送至 Postgres 資料庫

診斷

如果資料未從 Qpid 伺服器推送至 Postgres 資料庫 (依 Postgres 資料庫中可用的資料,但未顯示在 UI 中的資料) 而定,請執行下列步驟:

  1. 請執行下列指令,確認每個 Qpid 伺服器是否都已啟動且正在執行:
    /opt/apigee/bin/apigee-service edge-qpid-server status
    
  2. 如果任何 Qpid 伺服器當機,請重新啟動。如果只有一部裝置,請跳至步驟 5。
    /opt/apigee/bin/apigee-service edge-qpid-server restart
    
  3. 請稍候片刻,然後再次檢查 Postgres 資料庫是否提供最新資料。
    1. 登入 PostgreSQL:
      psql -h /opt/apigee/var/run/apigee-postgresql -U apigee apigee
      
    2. 執行下列 SQL 查詢,查看是否有最新資料:
      select max(client_received_start_timestamp) from analytics."orgname.envname.fact";
      
  4. 如果有可用的最新資料,請略過下列步驟,繼續前往「解決方案」一節中的最後一個步驟。如果沒有最新資料,請按照下列步驟操作。
  5. 檢查 Qpid 伺服器佇列中的訊息是否推送至 Postgres 資料庫。
    1. 執行 qpid-stat -q command 並查看 msgInmsgOut 資料欄的值。
    2. 以下是 msgIn 和 msgOut 不等於的輸出範例。這表示訊息並未從 Qpid 伺服器推送至 Postgres 資料庫。

  6. 如果 msgInmsgOut 資料欄之間有不相符,請檢查 Qpid 伺服器記錄 /opt/apigee/var/log/edge-qpid-server/system.log,確認是否有任何錯誤。
  7. 您可能會看到「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 伺服器,就可能發生這種情況。

解析度

  1. 重新啟動 Postgres 伺服器和 PostgreSQL,如下所示:
    /opt/apigee/bin/apigee-service edge-postgres-server restart
    
    /opt/apigee/bin/apigee-service apigee-postgresql restart
    
  2. 重新啟動可確保先前的所有 SQL 查詢都停止,且應允許連至 Postgres 資料庫。
  3. 重新載入 Analytics (分析) 資訊主頁,確認 Analytics (分析) 資料是否正常顯示。

如果問題持續發生,請與 Apigee Edge 支援團隊聯絡。

Analytics (分析) 部署作業不正確

診斷

  1. 使用以下 API 呼叫取得數據分析部署狀態:
    curl -u user_email:password http://management_server_host:port
    /v1/organizations/orgname/environments/envname/provisioning/axstatus
    
  2. 從 API 呼叫的結果檢查 Qpid 和 Postgres 伺服器的狀態。
    1. 如果 Qpid 和 Postgres 伺服器的狀態顯示為「成功」,就表示數據分析伺服器已正確連接。前往過時的數據分析伺服器 UUID
    2. 如果 Qpid/Postgres 伺服器的狀態顯示為「不明」或「失敗」,表示對應伺服器發生問題。

      舉例來說,以下情境會將 Postgres 伺服器的狀態顯示為「UNKNOWN」:

      如果在數據分析新手上路流程過程中失敗,就有可能發生這種情況。此錯誤會導致管理伺服器的訊息無法送達 Postgres 伺服器。

解析度

通常只要重新啟動顯示「FAILURE」或「UNKNOWN」的伺服器,通常就能解決這個問題。

  1. 使用下列指令,重新啟動分析線路狀態顯示為「失敗」或「不明」的每個伺服器:
    /opt/apigee/apigee-service/bin/apigee-service component restart
    
  2. 例如:
    1. 如果您在 Qpid 伺服器上看到這個問題,請重新啟動 Qpid 伺服器:
      /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
      
    2. 如果您在 Postgres 伺服器中發現問題,請重新啟動 Master 和 Slave Postgres 伺服器節點:
      /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
      
  3. 在上例中,Postgres 伺服器顯示了「UNKNOWN」訊息,因此您需要重新啟動 Master 和 Slave Postgres 伺服器:
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
    

過時的數據分析伺服器 UUID

診斷

  1. 使用下列 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" : {
      }
    } ]
    
  2. 確認輸出中的下列資訊正確無誤:
    1. 「範圍」元素中列出的 org-env 名稱
    2. Postgres 伺服器和 Qpid 伺服器的 UUID。
      • 在每個 Postgres 伺服器節點中執行下列指令,以取得 Postgres 伺服器 UUID:
        curl 0:8084/v1/servers/self/uuid
        
      • 在每個 Qpid 伺服器節點中執行下列指令,以取得 Qpid 伺服器 UUID:
        curl 0:8083/v1/servers/self/uuid
        
  3. 如果所有資訊正確無誤,請繼續執行未推送至 Postgres 資料庫的 Analytics (分析) 資料
  4. 如果 Postgres 和/或 Qpid 伺服器的 UUID 不正確,那麼管理伺服器有可能會參照過時的 UUID。

解析度

如要移除過時的 UUID,並為伺服器新增正確的 UUID,請與 Apigee Edge 支援團隊聯絡。