日志是排查 Apigee 混合安装问题的很好方法。如需了解详情,请参阅日志记录。
您可以使用kubectl logs
命令查看 Apigee 同步器日志。例如:kubectl logs -n apigee apigee-synchronizer-apigee-example-test
同步器日志条目
下表介绍了您将在同步器日志文件中看到的字段。
字段 | 含义 |
---|---|
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
数据驻留
curl https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/org/environments/env/contracts/1.0 -u username