您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。 info
問題
使用 StatisticsCollector 政策建立的自訂變數,不會顯示在 Edge UI 的 Analytics 自訂報表中的「自訂維度」下方。
錯誤訊息
未觀察到任何錯誤。
可能原因
下表列出這個問題的可能原因:
| 原因 | 適用於 |
|---|---|
| 自訂變數不符合標準規範 | Edge 私有和公有雲使用者 |
| 實作 StatisticsCollector 政策的 API Proxy 沒有流量 | Edge 私有和公有雲使用者 |
| 自訂變數未推送至 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 關鍵字」。
如果問題持續發生,請參閱「API Proxy 導入 StatisticsCollector 政策時沒有流量」。
實作 StatisticsCollector 政策的 API Proxy 沒有任何流量
診斷
如果實作 StatisticsCollector 政策的 API Proxy 沒有任何流量,自訂變數就不會顯示在自訂報表中。
解析度
對實作 StatisticsCollector 政策的 API Proxy 發出一些呼叫。
稍待片刻,然後檢查自訂報表的自訂維度中是否顯示自訂變數。
如果問題仍未解決,請參閱「自訂變數未推送至 Postgres 伺服器」一文。
自訂變數未推送至 Postgres 伺服器
診斷
在 API Proxy 中建立自訂變數並發出 API 呼叫時,變數會先儲存在訊息處理器的記憶體中。接著,MessageProcessor 會將新變數的相關資訊傳送至 ZooKeeper,而 ZooKeeper 會將資訊傳送至 Postgres 伺服器,在 Postgres 資料庫中新增資料欄。
有時,由於網路問題,ZooKeeper 的通知可能無法傳送至 Postgres 伺服器。由於發生這項錯誤,自訂變數可能不會顯示在自訂報表中。
如要找出缺少自訂變數的位置,請按照下列步驟操作:
- 使用下列指令產生 ZooKeeper 樹狀結構:
/opt/apigee/apigee-zookeeper/contrib/zk-tree.sh > zktree-output.txt
- 在 ZooKeeper 樹狀結構輸出中搜尋自訂變數。
- 如果自訂變數存在於 ZooKeeper 樹狀結構中,請執行下列指令,檢查自訂變數是否已新增至 Postgres 資料庫:
- 在 Postgres 節點上登入 PostgreSQL:
psql -h /opt/apigee/var/run/apigee-postgresql -U apigee apigee
- 執行下列 SQL 查詢:
select column_name, data_type, character_maximum_length from INFORMATION_SCHEMA.COLUMNS where table_name = 'orgname.envname.fact';
- 在 Postgres 節點上登入 PostgreSQL:
- 您很可能會發現事實資料表中缺少自訂變數欄,這也是自訂維度未顯示的原因。
解析度
解決方案 1:重新啟動 Postgres 伺服器
- 重新啟動 Postgres 伺服器,強制從 Zookeeper 讀取所有與 Analytics 相關的資訊:
/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
如果問題仍未解決,請採用解決方法 2。
解決方法 2:啟用資源 forceonboard
請按照下列步驟啟用 forceonboard 屬性:
- 如果 Postgres 伺服器電腦上沒有
/opt/apigee/customer/application/postgres-server.properties檔案,請建立該檔案。 - 在這個檔案中新增下列程式碼:
conf_pg-agent_forceonboard=true
- 使用下列指令,確保這個檔案歸 Apigee 所有:
chown apigee:apigee /opt/apigee/customer/application/postgres-server.properties
- 重新啟動 Postgres 伺服器:
/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
- 如果您有多個 Postgres 伺服器,請在所有 Postgres 伺服器上重複上述步驟。
- 取消部署並重新部署使用 StatisticsCollector 政策的 API Proxy。
- 執行 API 呼叫。
- 檢查自訂變數是否顯示在自訂報表的自訂維度中。
如果問題仍未解決,請與 Apigee Edge 支援團隊聯絡。