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

您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。
info

問題

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

No traffic in the selected date range

錯誤訊息

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

可能原因

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

原因 適用於
組織環境沒有 API 流量 Edge for Private Cloud 使用者
Postgres 資料庫中有資料,但未顯示在新版 Edge UI 中 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. 等待幾秒鐘,然後在「Hour」(小時) 分頁中查看數據分析資訊主頁,確認資料是否顯示。
  3. 如果問題仍未解決,請參閱「Postgres 資料庫提供資料,但未顯示在 New Edge 使用者介面中」。

Postgres 資料庫中有資料,但未顯示在新版 Edge UI 中

問題

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

如要檢查 Postgres 主要節點中是否有最新的 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 資料庫中提供最新資料,請按照下列步驟診斷資料未顯示在 New Edge UI 中的原因。

診斷

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

    範例輸出內容:顯示「Proxy Performance」資訊主頁中使用的 API,來自「Proxy Performance」資訊主頁的開發人員工具「網路」分頁

  3. 直接執行 Management API 呼叫,並檢查是否收到結果。以下是 Proxy 效能資訊主頁中「Day」分頁的 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 使用者介面中查看數據分析資料。

如果還是看不到資料,請聯絡 Apigee Edge 支援團隊。

Analytics 資料未推送至 Postgres 資料庫

診斷

如果資料未從 Qpid 伺服器推送至 Postgres 資料庫 (如「Postgres 資料庫中有資料,但未顯示在新版 Edge 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,並檢查 msgIn 和 msgOut 欄值。
    2. 以下是輸出內容範例,顯示 msgIn 和 msgOut 不相等。這表示訊息未從 Qpid 伺服器推送至 Postgres 資料庫。

  6. 如果 msgIn 和 msgOut 欄不相符,請檢查 Qpid 伺服器記錄 /opt/apigee/var/log/edge-qpid-server/system.log,看看是否有任何錯誤。
  7. 您可能會看到「Probably PG is still down」或「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 呼叫,取得數據分析部署狀態:
    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」,表示分析伺服器已正確接線。前往「Stale Analytics Server UUIDs」。
    2. 如果 Qpid/Postgres 伺服器的狀態顯示為「UNKNOWN」或「FAILURE」,表示對應的伺服器發生問題。

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

      如果 Analytics 新手上路流程失敗,就可能發生這種情況。這項失敗會導致管理伺服器無法將訊息傳送至 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 伺服器發生問題,請重新啟動主要和次要 Postgres 伺服器節點:
      /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
  3. 在上述範例中,Postgres 伺服器會顯示「UNKNOWN」訊息,因此您需要重新啟動主伺服器和從屬 Postgres 伺服器:
    /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 支援團隊聯絡。