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

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

問題

使用 StatisticsCollector 政策建立的自訂變數不會顯示在 Edge UI 的 Analytics (分析) 自訂報表的「自訂維度」下方。

錯誤訊息

未偵測到任何錯誤。

可能原因

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

原因 適用於
自訂變數不符合標準規範 邊緣私有雲和公有雲使用者
實施 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 Proxy 的 StatisticsCollector 政策中,使用自訂變數名稱應遵循下列規範:

  • 名稱可包含 [a-z][0-9] 和「_」。
  • 名稱不得包含空格。舉例來說,在上述程式碼範例中,變數名稱應變更為「product_id」。
  • 系統會忽略大小寫。
  • 禁止使用以下連結所列的保留關鍵字。舉例來說,不得使用「user」。詳情請參閱 SQL 重要字詞

如果問題持續發生,請繼續參閱「實作 StatisticsCollector 政策的 API Proxy 沒有流量」一節。

導入 StatisticsCollector 政策的 API Proxy 上沒有任何流量

診斷

如果導入 StatisticsCollector 政策的 API Proxy 中沒有任何流量,自訂變數就不會顯示在自訂報表中。

解析度

對實作 StatisticsCollector 政策的 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 讀取所有與 Analytics (分析) 相關的資訊:
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart

    如果問題仍未解決,請採用解決方案 #2。

解決方案 #2:啟用資源強制部署功能

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

  1. 如果 Postgres 伺服器機器上還沒有 /opt/apigee/customer/application/postgres-server.properties 檔案,請在該部電腦上建立檔案。
  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. 取消部署及部署使用 StatisticsCollector 政策的 API Proxy。
  7. 執行 API 呼叫。
  8. 確認自訂變數是否出現在「自訂報表」的自訂維度中。

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