Analytics (分析) 自訂報表不會顯示自訂變數

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

問題

使用 StatisticsCollector 政策是 不會顯示在 Edge UI 的 Analytics 自訂報表的「自訂維度」下方。

錯誤訊息

沒有發現任何錯誤。

可能原因

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

原因 適用於
自訂變數未遵循標準規範 邊緣私人與公有雲使用者
API Proxy 上沒有導入 StatisticsCollector 政策的 API Proxy 邊緣私人與公有雲使用者
未推送至 Postgres 伺服器的自訂變數 Edge Private Cloud 使用者

按一下表格中的連結,查看可能的解決方式。

自訂變數不符合標準規範

診斷

如果 StatisticsCollector 政策中使用的自訂變數名稱沒有 遵守標準指南 (請參閱 解析度),因此不會顯示在「自訂報表」中。

下方的程式碼片段顯示變數名稱「product id」具有空格 因此不會顯示在「自訂報表」的「自訂維度」下方

  <StatisticsCollector name="publishPurchaseDetails">
    <Statistics>
      <Statistic name="productID" ref="product id" type="string">999999</Statistic>
    </Statistics>
  </StatisticsCollector>

解析度

API 中 StatisticsCollector 政策中使用的自訂變數名稱 Proxy 應遵循下列指南:

  • 名稱可包含 [a-z][0-9] 和「_」。
  • 名稱不得包含空格。例如,在上述程式碼範例中,變數名稱 應改為「product_id」。
  • 會忽略大小寫。
  • 列於以下連結表格中的保留關鍵字不屬於 。例如「user」不符合條件。若需更多資訊,請參閲 SQL 關鍵字詞

如果問題持續發生,請繼續 API Proxy 上沒有導入 StatisticsCollector 政策的 API Proxy

實作 StatisticsCollector 政策的 API Proxy 沒有任何流量

診斷

如果導入 StatsCollector 的 API Proxy 上沒有任何流量 政策,自訂變數就不會出現在「自訂報表」中。

解析度

呼叫實作 StatsCollector 的 API Proxy 政策。

請等候一段時間,然後檢查自訂變數是否出現在 自訂報表。

如果問題仍未解決,請接著前往「系統不會將自訂變數推送至」 Postgres 伺服器

自訂變數未推送至 Postgres 伺服器

診斷

在 API Proxy 中建立自訂變數並發出 API 呼叫後, 變數會先儲存在訊息中,再儲存於訊息處理器中訊息 接著,處理者會將新變數的相關資訊傳送至 ZooKeeper 並傳送到 Postgres 伺服器,在 Postgres 中新增為資料欄 資料庫

有時候,網路的緣故,ZooKeeper 傳送的通知可能無法連到 Postgres 伺服器 以負載平衡機制分配流量 即可降低應用程式發生效能問題的風險受這項錯誤影響,自訂變數可能不會顯示在 自訂報表。

如何找出自訂變數缺漏的位置:

  1. 使用下列指令產生 ZooKeeper 樹狀結構:
    /opt/apigee/apigee-zookeeper/contrib/zk-tree.sh > zktree-output.txt
  2. 在 ZooKeeper 樹狀結構輸出內容中搜尋自訂變數。
  3. 如果自訂變數位於 ZooKeeper 樹狀結構中,則執行 請輸入下列指令,檢查自訂變數是否已新增至 Postgres 資料庫:
    1. 在 Postgres 節點上登入 PostgreSQL:
      psql -h /opt/apigee/var/run/apigee-postgresql -U apigee apigee
    2. 執行下列 SQL 查詢:
      select column_name, data_type, character_maximum_length from INFORMATION_SCHEMA.COLUMNS
        where table_name = 'orgname.envname.fact';
  4. 您很有可能在 這項資訊不會顯示在自訂維度中。

解析度

解決方案 #1:重新啟動 Postgres 伺服器

  1. 重新啟動 Postgres 伺服器,強制要求伺服器讀取所有 Zookeeper 提供的數據分析:
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart

    如果問題持續發生,請採用解決方案 #2。

解決方案 #2:啟用屬性強制啟用板

按照下列步驟啟用 forceonboard 屬性:

  1. 在以下位置建立 /opt/apigee/customer/application/postgres-server.properties 個檔案: 建立 Postgres 伺服器機器 (如果尚未存在)。
  2. 在這個檔案中新增下列程式碼:
    conf_pg-agent_forceonboard=true
  3. 使用下列指令,確保這個檔案的擁有者為 Apigee:
    chown apigee:apigee /opt/apigee/customer/application/postgres-server.properties
  4. 重新啟動 Postgres 伺服器:
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
  5. 如果您有多個 Postgres 伺服器,請在所有 Postgres 伺服器。
  6. 取消部署及部署使用 StatsCollector 的 API Proxy 政策。
  7. 執行 API 呼叫。
  8. 檢查自訂變數是否顯示在「自訂」自訂維度中 檢舉。

如果問題仍未解決,請與 Apigee Edge 支援團隊聯絡。