同步器日志

日志是排查 Apigee 混合安装问题的很好方法。如需了解详情,请参阅日志记录

同步器日志条目

下表介绍了您将在同步器日志文件中看到的字段。

字段 表示
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://apigee.googleapis.com

了解同步器日志

如果您需要排查同步器的相关问题,请查看日志文件。下表可帮助您排查同步器日志中可能发生的错误。另请参阅日志记录

日志条目 这意味着什么
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 表示正在轮询的环境未启用 Hybrid
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 提供的凭据存在一些问题

错误问题排查

日志是安装问题排查的很好方法。如需了解详情,请参阅日志记录

同步器无法启动

以下是一些错误及其解决方法。每个错误消息都以 sync.xxxxx 类型的 ErrorCode 开始。以下是可能的错误代码

sync.NullOrEmptyConfig

消息:通过 com.apigee.sync.config 提供的 Null 或空配置

原因:未正确提供同步器的配置属性时,您会看到此错误消息。

补救:确保所有配置属性都使用正确的值进行填充。

sync.ConfigFileNotFound

原因:同步器设为从文件读取其配置属性,但无法加载文件

补救:确保文件在同步器启动期间能够访问

sync.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 部分中重试字段的值超出了允许的限额
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 不是有效的 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

原因:同步器提供没有写入权限的复制根

补救:确保提供的根文件夹存在且可写

sync.ReplicationRootNotADir

原因:同步器附带的是复制根目录,该副本可能是文件

补救:确保提供的根文件夹存在且可写

sync.InvalidControlPlaneURL

原因:为同步器提供的配置网址为空

补救:确保提供的根文件夹存在且可写

sync.InvalidControlPlaneSubscriptionURL

原因:为同步器提供用于订阅创建的错误的、不完整或空配置网址。

补救:将网址更正为 pub/Sub 订阅创建的有效配置网址,以处理来自控制平面的信号。

sync.InvalidControlPlaneUnsubscriptionURL

原因:为同步器提供用于订阅删除的错误的、不完整或空配置网址。

补救:将网址更正为 pub/Sub 订阅删除的有效配置网址,以处理来自控制平面的信号。

sync.CannotCreateEnvironmentFolder

原因:同步器尝试创建一个文件夹来复制环境 qa,但无法创建所需的文件夹

补救:确保复制根与只读文件同名没有冲突路径。

sync.DuplicateEnvironmentEntries

原因:同一环境在设置中多次添加。

补救:每个环境只能指定一次。

sync.DiskExceedsAllowedCapacity

原因:提供的存储磁盘已达到通过配置属性提供的阈值容量。

补救:确保有足够的磁盘空间,或检查存储空间设置是否可以调整以允许更多磁盘空间。

sync.OwnershipClaimFailed

原因:同步器尝试对环境文件夹声明所有权,但失败

补救:每个同步器将首先尝试确保它是文件系统的专属写入者。错误指示路径以及故障的原因。解决根本原因

运行时出现同步器错误

运行期间可能会发生以下同步器错误。

sync.replicators.PollReturnedError

关联的消息将包含上游状态。以下是错误状态

状态 0

原因:表示连接问题。无法到达管理平面

补救:确保管理平面的详细信息准确无误,并且可访问 Contracts API

状态 404

原因:很可能未在服务器上找到组织/环境名称

补救:确保管理平面的详细信息准确无误,并且可访问 Contracts API

状态 401

原因:很可能提供的凭据没有组织管理员权限。

补救:确保管理平面凭据正确无误,并且可访问 Contracts API

状态 403

原因:当前轮询的环境未设置为 Hybrid 环境

补救:确保组织拥有所需的标记 "features.hybrid.enabled=true"

sync.OwnershipClaimedByOther

原因:在操作同步器发现,同步器的另一个实例正在访问文件根目录。(当同步器共享文件系统,则可能会发生这种情况。)

补救:解决根本问题,以确保没有两个同步器实例共享同一文件系统。同步器将标记为其自身,并位于一个不可恢复的位置。此外,这还能确保访问相同文件根目录的其他同步器通过其所有权文件收到通知

sync.DiskExceedsAllowedCapacity

原因:在操作同步器意识到磁盘占用量超出了允许的限额。

补救:此时,同步器会取消任何下载并尝试过时的文件清理操作。但是,这可能会成为周期性条件,完全恢复的唯一方法是确保同步器有足够的磁盘内存来运行。

诊断合同下载故障

如果您在错误消息中看到“上游合同轮询”,请尝试调用 Contract API 并查看详细信息,其中用户名是您的 Apigee 用户名(您的电子邮件地址)。该合同代表同步器从管理层面下载的完整数据集合。

curl https://apigee.googleapis.com/v1/organizations/org/environments/env/contracts/1.0 -u username