Synchronizer のログ

ログは、Apigee ハイブリッド環境で発生した問題のトラブルシューティングに役立ちます。詳しくは、ロギングをご覧ください。

Apigee Synchronizer のログを表示するには、kubectl logs コマンドを使用します。たとえば、次のような点が改善されています。
kubectl logs -n APIGEE_NAMESPACE apigee-synchronizer-apigee-example-test

Synchronizer ログエントリ

次の表に、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://apigee.googleapis.com

Synchronizer ログについて

Synchronizer の問題を解決するには、ログファイルを確認します。次の表に、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 組織と環境のアップストリーム ポーリングが開始しました。管理プレーンの 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 複製が開始しています。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 提供された認証情報に問題があります。

エラーのトラブルシューティング

ログは、インストールに関する問題のトラブルシューティングに役立ちます。ロギングをご覧ください。

Synchronizer が起動しない

以下に、いくつかのエラーとその解決方法を示します。エラー メッセージは、sync.xxxxx タイプの ErrorCode で始まります。可能なエラーコードは次のとおりです。

sync.NullOrEmptyConfig

メッセージ: com.apigee.sync.config 経由で提供された構成が null か空です。

理由: Synchronizer の構成プロパティが正しく指定されていないと、このエラー メッセージが表示されます。

対策: すべての構成プロパティに適切な値が設定されていることを確認します。

sync.ConfigFileNotFound

理由: ファイルから構成プロパティを読み込むように Synchronizer が設定されていますが、ファイルの読み込みに失敗しました。

対策: Synchronizer の起動時にファイルが使用可能で、アクセス可能であることを確認します。

sync.IncorrectSettings

理由: Synchronizer の構成で、1 つ以上の必須の構成プロパティが指定されていないか、想定外の範囲の値が指定されています。エラー メッセージには、問題の原因となっているプロパティの詳細情報が含まれています。サービスの開始前にも設定エラーが検出されるように、これらのエラーはパーサーに組み込まれています。

次の表に、考えられる 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 が有効な 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 環境配列には少なくとも 1 つの環境が必要です。
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

理由: 存在しない複製ルートが Synchronizer に指定されました。

対策: ルートフォルダが存在し、書き込み可能であることを確認します。

sync.ReadOnlyReplicationRoot

理由: 書き込み権限のない複製ルートが Synchronizer に指定されました。

対策: ルートフォルダが存在し、書き込み可能であることを確認します。

sync.ReplicationRootNotADir

理由: ファイルの可能性がある複製ルートが Synchronizer に指定されています。

対策: ルートフォルダが存在し、書き込み可能であることを確認します。

sync.InvalidControlPlaneURL

理由: Synchronizer に空の構成 URL が指定されています。

対策: ルートフォルダが存在し、書き込み可能であることを確認します。

sync.InvalidControlPlaneSubscriptionURL

理由: Synchronizer に指定されたサブスクリプション作成の構成 URL が正しくないか、不完全です。あるいは、空になっています。

対策: コントロール プレーンからの信号を処理する pub/sub サブスクリプション作成に有効な構成 URL を指定します。

sync.InvalidControlPlaneUnsubscriptionURL

理由: Synchronizer に指定されたサブスクリプション削除の構成 URL が正しくないか、不完全です。あるいは、空になっています。

対策: コントロール プレーンからの信号を処理する pub/sub サブスクリプション削除に有効な構成 URL を指定します。

sync.CannotCreateEnvironmentFolder

理由: Synchronizer が環境 qa を複製するフォルダを作成しようとしましたが、必要なフォルダを作成できませんでした。

対策: 複製ルートに、読み取り専用ファイルと同じ名前の競合パスが含まれないようにします。

sync.DuplicateEnvironmentEntries

理由: 構成に同じ環境が複数回追加されました。

対策: 1 つの環境につき、指定できるのは 1 回のみです。

sync.DiskExceedsAllowedCapacity

理由: 指定されたストレージ ディスクが、構成プロパティで指定されているしきい値に達しています。

対策: 十分なディスク容量があることを確認します。あるいは、ストレージの設定を調整して、空き容量を増やします。

sync.OwnershipClaimFailed

理由: Synchronizer が環境フォルダの所有権を取得しようとしましたが、失敗しました。

対策: まず、Synchronizer でファイル システムに書き込みをしているのは、Synchronizer のみであることを確認します。エラー メッセージに問題のパスと理由が示されます。根本原因を解決します。

Synchronizer のランタイム エラー

Synchronizer の実行時に次のランタイム エラーが発生する可能性があります。

sync.replicators.PollReturnedError

関連するメッセージに、アップストリームのステータスが示されます。エラーのステータスは次のとおりです。

status 0

理由: 接続の問題が発生しています。管理プレーンに到達できませんでした。

対策: 管理プレーンの詳細が正しいこと、Contracts API が到達可能であることを確認します。

status 404

理由: ほとんどの場合、組織名または環境名がサーバーにありません。

対策: 管理プレーンの詳細が正しいこと、Contracts API が到達可能であることを確認します。

status 401

理由: 指定された認証情報に組織の管理者権限がない可能性があります。

解決策: 管理プレーンの認証情報が正しく、Contracts API が到達可能であることを確認します。

status 403

理由: ポーリング対象の環境がハイブリッド環境として設定されていません。

対策: 組織に必須フラグ "features.hybrid.enabled=true" が設定されていることを確認します。

sync.OwnershipClaimedByOther

理由: 処理中に、Synchronizer の別のインスタンスがファイルのルートにアクセスしています。これは、Synchronizer 間でファイル システムが共有されている場合に発生します。

対策: 根本的な問題を解決します。2 つの Synchronizer インスタンスが同じファイル システムを共有していないことを確認します。Synchronizer 自体が停止し、回復不能な状態になっている可能性があります。また、同じファイルのルートにアクセスしている他の Synchronizer が所有権ファイルを介して通知を受信している可能性もあります。

sync.DiskExceedsAllowedCapacity

理由: 処理中に、Synchronizer がディスク占有量が上限を超えていることを認識しました。

対策: この時点で、Synchronizer はダウンロードを中止し、古いファイルのクリーンアップを試行します。ただし、これは繰り返し発生する可能性があります。完全に復旧するには、Synchronizer に十分なディスクメモリがあることを確認します。

契約のダウンロード エラーを診断する

エラー メッセージに「upstream contract poll」が表示されている場合は、Contract API を呼び出して詳細を確認してください。ここで、username は Apigee のユーザー名(メールアドレス)です。契約は、Synchronizer が管理プレーンからダウンロードしたすべてのデータを表します。

データ所在地を使用しない場合

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