로그는 Apigee Hybrid 설치 문제를 해결하는 좋은 방법입니다. 자세한 내용은 로깅을 참조하세요.
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 |
조직 및 환경에 대한 업스트림 폴링이 시작되었으며 관리 영역 URL이 제공됨 |
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 |
복제 시작을 나타냄. MDB 필드는 복제되는 항목에 대한 세부정보를 나타냅니다. |
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 |
복제가 완료되었음을 나타냄. MDB 필드는 복제되는 항목에 대한 세부정보를 나타냅니다. |
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 |
제공된 사용자 인증 정보에 문제가 있음 |
오류 문제 해결
로그는 설치 문제 해결에 좋은 방법입니다. 자세한 내용은 로깅을 참조하세요.
동기화 담당자 시작 실패
다음은 몇 가지 오류와 해결 방법입니다. 이러한 각 오류 메시지는 sync.xxxxx 형식의 ErrorCode로 시작합니다. 가능한 오류 코드는 다음과 같습니다.
sync.NullOrEmptyConfig
메시지: com.apigee.sync.config를 통해 제공된 Null 또는 빈 구성
이유: 동기화 담당자의 구성 속성이 제대로 제공되지 않으면 이 오류 메시지가 표시됩니다.
해결 방법: 모든 구성 속성이 적절한 값으로 채워졌는지 확인합니다.
sync.ConfigFileNotFound
이유: 동기화 담당자가 파일에서 구성 속성을 읽도록 설정되었지만 파일을 로드할 수 없습니다.
해결 방법: 동기화 담당자 부팅 중 파일을 사용할 수 있고 액세스할 수 있는지 확인합니다.
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 섹션의 재시도 필드에 제공된 값이 허용된 값을 초과합니다. |
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
이유: 동기화 담당자에 비어 있는 구성 URL이 제공되었습니다.
해결 방법: 제공된 루트 폴더가 있고 쓰기 가능한지 확인합니다.
sync.InvalidControlPlaneSubscriptionURL
이유: 동기화 담당자에 구독 생성에 대한 잘못되거나 불완전하거나 빈 구성 URL이 제공되었습니다.
해결 방법: 제어 영역의 신호를 처리하기 위해 Pub/Sub 구독 생성에 대한 유효한 구성 URL로 URL을 수정합니다.
sync.InvalidControlPlaneUnsubscriptionURL
이유: 동기화 담당자에 구독 삭제에 대한 잘못되거나 불완전하거나 빈 구성 URL이 제공되었습니다.
해결 방법: 제어 영역의 신호를 처리하기 위해 Pub/Sub 구독 삭제에 대한 유효한 구성 URL로 URL을 수정합니다.
sync.CannotCreateEnvironmentFolder
이유: 동기화 담당자가 환경 qa를 복제하기 위한 폴더를 만들려고 했지만 필수 폴더를 만들 수 없습니다.
해결 방법: 복제 루트에 파일의 읽기 전용인 이름이 동일한 충돌하는 경로가 없는지 확인합니다.
sync.DuplicateEnvironmentEntries
이유: 동일한 환경이 구성에 여러 번 추가되었습니다.
해결 방법: 모든 환경은 한 번만 지정할 수 있습니다.
sync.DiskExceedsAllowedCapacity
이유: 제공된 스토리지 디스크는 구성 속성을 통해 제공된 기준점 용량에 이미 도달했습니다.
해결 방법: 디스크 공간이 충분한지 확인하거나 스토리지 설정을 조정하여 디스크 공간을 늘릴 수 있는지 확인합니다.
sync.OwnershipClaimFailed
이유: 동기화 담당자가 환경 폴더에 대한 소유권을 주장하려 했지만 실패했습니다.
해결 방법: 모든 동기화 담당자는 먼저 파일 시스템에 대한 유일한 작성자인지 확인합니다. 이 오류는 실패 경로와 이유를 나타냅니다. 근본 원인을 해결합니다.
런타임 중 동기화 담당자 오류
다음 동기화 담당자 오류는 런타임 중에 발생할 수 있습니다.
sync.replicators.PollReturnedError
연결된 메시지에 업스트림 상태가 포함됩니다. 다음은 오류 상태입니다.
status 0
이유: 연결 문제를 나타냅니다. 관리 영역에 연결할 수 없습니다.
해결 방법: 관리 영역 세부정보가 올바르고 contracts API에 연결할 수 있는지 확인합니다.
status 404
이유: 서버에서 조직/환경 이름을 찾을 수 없을 가능성이 높습니다.
해결 방법: 관리 영역 세부정보가 올바르고 contracts API에 연결할 수 있는지 확인합니다.
status 401
이유: 제공된 사용자 인증 정보에 조직 관리자 권한이 없을 가능성이 높습니다.
해결 방법: 관리 영역 사용자 인증 정보가 올바르고 contracts API에 연결할 수 있는지 확인합니다.
status 403
이유: 폴링되는 환경이 하이브리드 환경으로 설정되지 않았음을 나타냅니다.
해결 방법: 조직에 필요한 플래그('features.hybrid.enabled=true')가 있는지 확인합니다.
sync.OwnershipClaimedByOther
이유: 작업이 수행되는 동안 동기화 담당자는 동기화 담당자의 다른 인스턴스에서 파일 루트에 액세스하고 있음을 확인했습니다. (파일 시스템이 동기화 담당자 사이에서 공유될 때 발생할 수 있습니다.)
해결 방법: 루트 문제를 해결하여 두 동기화 담당자 인스턴스가 동일한 파일 시스템을 공유하지 않도록 합니다. 동기화 담당자는 자체적으로 중단되었다고 표시되고 여기에서는 복구할 수 없는 위치에 있게 됩니다. 또한 소유권 파일을 통해 동일한 파일 루트에 액세스하는 다른 동기화 담당자가 이에 대한 알림을 확실히 받도록 합니다.
sync.DiskExceedsAllowedCapacity
이유: 작업을 수행하는 동안 동기화 담당자는 디스크 점유가 허용 한도를 초과했음을 알게 되었습니다.
해결 방법: 이 시점에서 동기화 담당자는 모든 다운로드를 중단하고 오래된 파일 정리 작업을 시도합니다. 하지만 이 방법은 반복 상태가 될 수 있으며, 완전히 복구하는 유일한 방법은 동기화 담당자가 작동할 수 있는 충분한 디스크 메모리가 있는지 확인하는 것입니다.
계약 다운로드 실패 진단
오류 메시지에 '업스트림 계약 폴링'이 표시되면 계약 API를 호출하고 사용자 이름이 Apigee 사용자 이름(이메일 주소)인 세부정보를 확인합니다. 계약은 동기화 담당자가 관리 영역에서 다운로드하는 전체 데이터 수집을 나타냅니다.
curl https://apigee.googleapis.com/v1/organizations/org/environments/env/contracts/1.0 -u username