同步處理工具記錄

記錄檔是排解 Apigee Hybrid 安裝問題的好方法。詳情請參閱「記錄」。

同步處理工具記錄項目

下表說明您會在 Synchronizer 記錄檔中看到的欄位。

欄位 意義
org: 機構名稱
env: 環境名稱
target: 記錄項目代表的實體路徑
action: 動作 SYNC=上游同步動作

REPLICATE=複製/下載動作

context-id: 合約版本 (如適用)

例如:

2019-02-05 00:00:59,098 org:hybrid env:test target: action:SYNC context-id: mode: Apigee-Timer-5 INFO  CONFIG-CHANGE - SyncContext.syncUpStream() : Upstream sync started with https://api.enterprise.apigee.net

瞭解同步處理工具記錄

如要排解 Synchronizer 問題,請查看記錄檔。下表有助於排解同步器記錄中可能出現的錯誤。另請參閱「記錄」。

記錄項目 代表意義
org:test env:dev target: action:SYNC context-id: mode: Apigee-Timer-0 INFO CONFIG-CHANGE - SyncContext.syncUpStream() : Upstream sync started with http://localhost:8080 已為機構和環境啟動上游輪詢,並提供管理平面網址
2019-01-21 16:58:02,275 org:test env:qa target: action:SYNC context-id: mode: Apigee-Timer-1 INFO CONFIG-CHANGE - ManagementServerBasedReplicationContext.getContract() : Upstream contract poll returned 200 已成功收到合約
2019-01-21 16:58:02,536 org:test env:dev target: action:SYNC context-id: mode: Apigee-Timer-0 INFO CONFIG-CHANGE - ManagementServerBasedReplicationContext.getContract() : Received a new contract version 20190121.090851.339 已收到合約版本
2019-01-21 17:58:56,530 org:test env:qa target:/organizations/test/environments/qa action:REPLICATE context-id:20190121.090859.699 mode: Apigee-Timer-1 INFO CONFIG-CHANGE - ConfigReplicator.startReplication() : Replication started 指出複製作業的開始時間。MDC 欄位會指出要複製的詳細資料
2019-01-21 17:58:56,654 org:test env:qa target:/organizations/test/environments/qa/resourcefiles/js/JavaScriptCallout.js action:REPLICATE context-id:20190121.090859.699 mode: Apigee-Timer-1 INFO CONFIG-CHANGE - ConfigReplicator.startReplication() : Replication complete 指出複製作業已完成。MDC 欄位會指出要複製的詳細資料
2019-01-21 17:58:56,654 org:test env:qa target:/organizations/test/environments/qa action:REPLICATE context-id:20190121.090859.699 mode: Apigee-Timer-1 ERROR CONFIG-CHANGE - ConfigReplicator.startReplication() : Replication failed 表示複製錯誤
2019-01-21 17:59:00,246 org:test env:qa target: action:SYNC context-id: mode: Apigee-Timer-1 INFO CONFIG-CHANGE - SyncContext.syncUpStream() : Upstream sync finished in 4 seconds 指出同步週期結束,並提供同步處理所花費的時間
2019-01-21 18:00:00,249 org:test env:dev target: action:SYNC context-id: mode: Apigee-Timer-1 INFO CONFIG-CHANGE - ManagementServerBasedReplicationContext.getContract() : Upstream contract poll returned 304 表示沒有較新的合約
2019-01-21 18:21:39,128 org:test env:qa target: action:SYNC context-id: mode: Apigee-Timer-1 ERROR CONFIG-CHANGE - ManagementServerBasedReplicationContext.getContract() : Upstream contract poll returned error 0 表示無法連線至管理平面
2019-01-21 18:21:39,128 org:test env:qa target: action:SYNC context-id: mode: Apigee-Timer-1 ERROR CONFIG-CHANGE - ManagementServerBasedReplicationContext.getContract() : Upstream contract poll returned error 404 表示管理平面針對合約傳回 404 回應
2019-01-21 18:22:39,217 org:test1 env:dev target: action:SYNC context-id: mode: Apigee-Timer-2 ERROR CONFIG-CHANGE - ManagementServerBasedReplicationContext.getContract() : Upstream contract poll returned error 403 表示輪詢的環境未啟用混合式功能
2019-01-21 18:22:39,217 org:test1 env:dev target: action:SYNC context-id: mode: Apigee-Timer-2 ERROR CONFIG-CHANGE - ManagementServerBasedReplicationContext.getContract() : Upstream contract poll returned error 401 提供的憑證有些問題

排解錯誤

記錄檔有助於排解安裝問題。詳情請參閱「記錄」。

同步器無法啟動

以下說明幾個錯誤和補救措施。每個錯誤訊息開頭都是 ErrorCode,類型為 sync.xxxxx。以下是可能的錯誤代碼

sync.NullOrEmptyConfig

訊息:透過 com.apigee.sync.config 提供的設定為空值或空白

原因:如果未正確提供 Synchronizer 的設定屬性,就會看到這則錯誤訊息。

解決方法:請確保所有設定屬性都填入適當的值。

sync.ConfigFileNotFound

原因:Synchronizer 設為從檔案讀取設定屬性,但無法載入該檔案

解決方法:請確保檔案在 Synchronizer 啟動時可用且可存取

sync.IncorrectSettings

原因:同步器設定缺少一或多個必要設定屬性,或屬性值超出預期範圍。錯誤訊息應會提供更多詳細資料,說明導致問題的確切屬性。這些錯誤內建於剖析器中,可確保在服務啟動前就發現設定錯誤。

下表列出一些可能的 IncorrectSettings 錯誤:

錯誤 問題發生原因
configuration.json.IncorrectSettings: [com.apigee.sync.config.json] Error:/controlPlane/retries numeric instance is greater than the required maximum (maximum: 3, found: 20) controlPlane 區段中提供給 retries 欄位的值已超過允許的上限
configuration.json.IncorrectSettings: [com.apigee.sync.config.json] Error:/controlPlane/connectionTimeout numeric instance is lower than the required minimum (minimum: 10, found: 1) controlPlane 區段中 connectionTimeout 欄位的值低於允許值
configuration.json.IncorrectSettings: [com.apigee.sync.config.json] Error:/controlPlane object has missing required properties ([\"contractProvider\"]) controlPlane 區段缺少必填欄位 contractProvider
configuration.json.IncorrectSettings: [com.apigee.sync.config.json] Error:/controlPlane/contractProvider string \"http://\\uapi.apigee.com\" is not a valid URI 合約提供者 URI 無效
configuration.json.IncorrectSettings: [com.apigee.sync.config.json] Error:/environments array is too short: must have at least 1 elements but instance has 0 elements 環境陣列至少要有一個環境
configuration.json.IncorrectSettings: [com.apigee.sync.config.json] Error:/environments/0 object has missing required properties ([\"environmentName\"]) 索引 0 的環境缺少必填欄位「environmentName」
configuration.json.IncorrectSettings: [com.apigee.sync.config.json] Error:/environments/0 object has missing required properties ([\"organizationName\"]) 索引 0 的環境缺少必要欄位「organizationName」
configuration.json.IncorrectSettings: [com.apigee.sync.config.json] Error:/environments/0/pollInterval numeric instance is lower than the required minimum (minimum: 60, found: 6) 索引 0 的環境輪詢間隔低於允許的 60 秒上限

解決方法:修正設定,加入必要區塊

sync.ReplicationRootDoesNotExist

原因:同步器提供的複製根目錄不存在

解決方法:確認提供的根資料夾存在且可寫入

sync.ReadOnlyReplicationRoot

原因:Synchronizer 提供的複寫根目錄沒有寫入權限

解決方法:確認提供的根資料夾存在且可寫入

sync.ReplicationRootNotADir

原因:同步器收到的複製根目錄可能是檔案

解決方法:確認提供的根資料夾存在且可寫入

sync.InvalidControlPlaneURL

原因:同步器收到的設定網址為空白

解決方法:確認提供的根資料夾存在且可寫入

sync.InvalidControlPlaneSubscriptionURL

原因:建立訂閱項目時,同步器收到的設定網址有誤、不完整或留空。

解決方法:將網址修正為有效的設定網址,以便建立 Pub/Sub 訂閱項目,處理來自控制層的信號。

sync.InvalidControlPlaneUnsubscriptionURL

原因:系統提供給 Synchronizer 的訂閱項目刪除設定網址有誤、不完整或留空。

解決方法:將網址修正為有效的 Pub/Sub 訂閱項目刪除設定網址,以處理控制層的信號。

sync.CannotCreateEnvironmentFolder

原因:同步器嘗試為複製環境 qa 建立資料夾,但無法建立必要資料夾

解決方法:請確認複製根目錄沒有名稱相同的衝突路徑,且該路徑為檔案的唯讀路徑

sync.DuplicateEnvironmentEntries

原因:設定中多次新增相同環境。

解決方法:每個環境只能指定一次。

sync.DiskExceedsAllowedCapacity

原因:透過設定屬性提供的儲存磁碟已達到容量上限。

解決方法:確認磁碟空間是否足夠,或檢查是否可以調整儲存空間設定,以增加磁碟空間。

sync.OwnershipClaimFailed

原因:同步器嘗試聲明環境資料夾的所有權,但失敗

解決方法:每個同步器都會先嘗試確保自己是檔案系統的唯一寫入器。錯誤訊息會指出路徑和失敗原因。解決根本原因

執行階段的同步器錯誤

執行階段可能會發生下列 Synchronizer 錯誤。

sync.replicators.PollReturnedError

相關聯的訊息會包含上游狀態。以下是錯誤狀態

狀態 0

原因:表示連線發生問題。無法連線至管理平面

解決方法:請確認管理平面詳細資料正確無誤,且合約 API 可連線

狀態 404

原因:伺服器上可能找不到機構/環境名稱

解決方法:請確認管理平面詳細資料正確無誤,且合約 API 可連線

狀態 401

原因:提供的憑證很可能沒有機構管理員權限。

解決方法:確認管理平台憑證正確無誤,且合約 API 可連線

狀態 403

原因:表示輪詢的環境未設為混合式環境

解決方法:確認機構已設定必要旗標「features.hybrid.enabled=true」

sync.OwnershipClaimedByOther

原因:作業期間,Synchronizer 發現檔案根目錄正由另一個 Synchronizer 執行個體存取。(如果檔案系統在同步器之間共用,就可能發生這種情況)。

解決方法:找出根本問題並加以解決,確保沒有兩個 Synchronizer 執行個體共用同一個檔案系統。同步器會標示自身狀態為停機,且處於無法復原的狀態。這也會確保存取相同檔案根目錄的其他 Synchronizer 會透過其擁有權檔案收到通知

sync.DiskExceedsAllowedCapacity

原因:作業期間,同步器發現磁碟使用量已超過允許的限制。

解決方法:此時,同步器會中止所有下載作業,並嘗試清除過時的檔案。不過,這可能成為週期性狀況,確保 Synchronizer 有足夠的磁碟記憶體運作,是完全復原的唯一方法。

診斷合約下載失敗問題

如果錯誤訊息中顯示「upstream contract poll」,請嘗試呼叫合約 API 並檢查詳細資料,其中使用者名稱是您的 Apigee 使用者名稱 (電子郵件地址)。合約代表 Synchronizer 從管理平面下載的完整資料集合。

curl https://api.enterprise.apigee.net/v1/organizations/org/environments/env/contracts/1.0 -u username