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

您目前查看的是 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 流量

診斷

  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 資料庫中提供資料,但未顯示在使用者介面中」。

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

問題

首先,請判斷 Postgres 資料庫中是否有最新的 Analytics 資料。

如要檢查 Postgres Master 節點是否提供最新的 Analytics 資料,請按照下列步驟操作:

  1. 登入每個 Postgres 伺服器,然後執行下列指令,驗證您是否位於主要 Postgres 節點:
    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master
  2. 在主要 Postgres 節點上登入 PostgreSQL:
    psql -h /opt/apigee/var/run/apigee-postgresql -U apigee apigee
  3. 在 Postgres 資料庫中,使用下列 SQL 查詢檢查機構環境是否有資料表:
    \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 瀏覽器中啟用開發人員工具,然後按照下列步驟,從任一 Analytics 資訊主頁取得使用的 API:
    1. 在開發人員工具中選取「網路」分頁標籤。
    2. 開始錄製。
    3. 重新載入 Analytics 資訊主頁。
    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 支援團隊聯絡。

Analytics 資料未推送至 Postgres 資料庫

診斷

如果資料未從 Qpid 伺服器推送至 Postgres 資料庫 (如「Postgres 資料庫中的資料可用,但未顯示在 UI 中」一節所述),請執行下列步驟:

  1. 執行下列指令,檢查每個 Qpid 伺服器是否已啟動並正常運作:
    /opt/apigee/apigee-service/bin edge-qpid-server status
  2. 如果任何 Qpid 伺服器停止運作,請重新啟動。如果沒有,請跳至步驟 5。
    /opt/apigee/apigee-service/bin 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. 您可能會看到「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 伺服器。

解析度

  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 呼叫取得 Analytics 部署狀態:
    curl -u user_email:password http://management_server_host:port
    /v1/organizations/orgname/environments/envname/provisioning/axstatus
  2. 從 API 呼叫結果檢查 Qpid 和 Postgres 伺服器的狀態。
    1. 如果 Qpid 和 Postgres 伺服器的狀態顯示為「SUCCESS」,表示分析伺服器已正確連線。前往「過時的 Analytics 伺服器 UUID」
    2. 如果 Qpid/Postgres 伺服器的狀態顯示為「UNKNOWN」或「FAILURE」,表示對應的伺服器有問題。

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

      如果分析上線期間發生錯誤,就可能發生這種情況。這項失敗會導致訊息無法從管理伺服器傳送到 Postgres 伺服器。

解析度

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

  1. 使用下列指令,重新啟動分析資料連線狀態為「FAILURE」或「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. 在上述範例中,Postgres 伺服器會顯示「UNKNOWN」訊息,因此您需要重新啟動主伺服器和從屬伺服器:
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart

過時的 Analytics 伺服器 UUID

診斷

  1. 使用下列 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" : {
      }
    } ]
  2. 確認輸出內容中的下列資訊正確無誤:
    1. 「scopes」元素中列出的 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. 如果所有資訊都正確無誤,請繼續參閱「Analytics 資料未推送至 Postgres 資料庫」。
  4. 如果 Postgres 和/或 Qpid 伺服器的 UUID 不正確,管理伺服器可能參照的是過時的 UUID。

解析度

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