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

查看 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 流量

診斷

  1. 檢查特定機構環境的 API Proxy 流量, 您想查看 Analytics 資料的確切時間長度,請使用下列其中一個方法 方法:
    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 要求),數據分析資料就會 無法使用。您會看見「所選日期範圍內沒有流量」訊息。在 Analytics 中 儀表板中指定這項設定。

解析度

  1. 在特定機構環境中呼叫一或多個 API Proxy。
  2. 請稍候片刻,然後前往「小時」分頁查看數據分析資訊主頁,看看有無 資料就會出現
  3. 如果問題仍未解決,請繼續前往 Postgres 中提供的資料 資料庫,但不在 UI 中顯示。

Postgres 資料庫中有可用資料,但並未顯示在使用者介面中

問題

首先,請判斷 Postgres 資料庫中最新的數據分析資料可用性。

如要檢查 Postgres Master 中是否有最新的 Analytics 資料 節點:

  1. 登入每個 Postgres 伺服器,執行下列指令以驗證 請在主要 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. 啟用開發人員工具 並在其中一個數據分析資訊主頁中使用 步驟如下:
    1. 在「開發人員工具」中選取「聯播網」分頁標籤。
    2. 開始錄製。
    3. 重新載入 Analytics 資訊主頁。
    4. 在「開發人員工具」的左側面板中,選取 「apiproxy?_optimized...」
    5. 在開發人員工具的右側面板中,選取 [Headers]並記下 「要求網址」。
  2. 以下是開發人員工具的輸出內容範例:

    輸出內容範例,顯示「Network」分頁的 Proxy 效能資訊主頁使用的 API Proxy 效能資訊主頁的開發人員工具

  3. 直接執行 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"
    
  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 支援團隊聯絡。

Analytics 資料未推送至 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. 如果有最新資料,請略過下列步驟,直接繼續完成 「解決方法」區段。如果無法取得最新資料,請繼續採取以下行動 100 萬步的訓練
  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. 您可能會看到下列錯誤訊息,例如「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 伺服器。

解析度

  1. 重新啟動 Postgres Server 和 PostgreSQL,如下所示:
    /opt/apigee/bin/apigee-service edge-postgres-server restart
    
    /opt/apigee/bin/apigee-service apigee-postgresql restart
    
  2. 這個重新啟動作業可確保先前的所有 SQL 查詢皆已停止,且應允許新的 提供快速連結
  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 伺服器的狀態顯示為「成功」,則表示 數據分析伺服器已經正確連接。前往「過時」部分 Analytics 伺服器 UUID
    2. 如果 Qpid/Postgres 伺服器的狀態顯示為「UNKNOWN」(不明)或「失敗」,則 表示對應伺服器發生問題。

      例如,在下列情境中,Postgres 伺服器的狀態為 「UNKNOWN」:

      如果在數據分析的新手上路流程中發生錯誤,就可能發生這種情況。失敗 防止來自管理伺服器的訊息送達 Postgres 伺服器。

解析度

通常只要重新啟動顯示「失敗」訊息的伺服器,即可解決這個問題或 「UNKNOWN」。

  1. 重新啟動每個分析接線狀態顯示「失敗」的伺服器。或「UNKNOWN」 使用以下指令:
    /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 伺服器發生問題,請重新啟動主從主機和從屬伺服器 Postgres 伺服器節點:
      /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
      
  3. 在上述範例中,「UNKNOWN」訊息,因此您需要輸入 以重新啟動主和從出的 Postgres 伺服器:
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
    

Analytics 伺服器 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 伺服器節點:
        curl 0:8084/v1/servers/self/uuid
        
      • 在每個 Qpid 上執行下列指令,取得 Qpid 伺服器 UUID 伺服器節點:
        curl 0:8083/v1/servers/self/uuid
        
  3. 如果所有資訊都正確無誤,請繼續前往 Analytics 資料 未推送至 Postgres 資料庫
  4. 如果 Postgres 和/或 Qpid 伺服器的 UUID 不正確, 管理伺服器所參照的 UUID 過舊。

解析度

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