Registros del sincronizador

Los registros son una buena manera de solucionar problemas de la instalación híbrida de Apigee. Consulta Registros para obtener más detalles.

Puedes ver los registros del sincronizador de Apigee con el comando kubectl logs. Por ejemplo:
kubectl logs -n apigee apigee-synchronizer-apigee-example-test

Entradas de registro de Synchronizer

En la siguiente tabla, se describen los campos que verás en los archivos de registro del sincronizador.

Campo Qué indica
org: Nombre de la organización
env: Nombre del entorno
target: Ruta de la entidad a la que representa la entrada de registro
action: Acción SYNC= acción de sincronización ascendente

REPLICATE= acción de replicación y descarga

context-id: La versión del contrato siempre que corresponda

Por ejemplo:

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

Información sobre los registros de Synchronizer

Si necesitas solucionar un problema de Synchronizer, consulta los archivos de registro. La siguiente tabla puede ayudarte a solucionar problemas que pueden aparecer en los registros de Synchronizer. Consulta también Registros.

Entrada de registros ¿Qué significa?
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 Se inició el sondeo ascendente para la organización y el entorno, y se proporcionó la URL del plano de administración
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 El contrato se recibió correctamente
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 Se recibió una versión del contrato
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 Indica el inicio de la replicación. Los campos de MDC indican los detalles sobre lo que se replica
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 Indica que la replicación finalizó. Los campos de MDC indican los detalles sobre lo que se replica
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 Indica un error de replicación.
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 Indica el final del ciclo de sincronización y el tiempo que tomará
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 Indica que no hay un contrato más reciente disponible.
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 Indica que no se pudo acceder al plano de administración
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 Indica que el plano de administración mostró una respuesta 404 para el contrato
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 Indica que el entorno en el que se realiza el sondeo no está habilitado para uso híbrido
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 Las credenciales proporcionadas tienen algunos problemas.

Solución de errores

Los registros son una buena forma de solucionar problemas de la instalación. Consulta Registros para obtener más detalles.

El inicio de Synchronizer falla

A continuación, se explican algunos errores y su solución. Cada uno de estos errores comienza con un ErrorCode del tipo sync.xxxxx. A continuación, se indican los códigos de error posibles:

sync.NullOrEmptyConfig

Mensaje: Archivo de configuración vacío o nulo proporcionado a través de com.apigee.sync.config

Motivo: verás este mensaje de error cuando las propiedades de configuración de Synchronizer no se hayan proporcionado correctamente.

Solución: Asegúrate de que todas las propiedades de configuración estén propagadas con valores adecuados.

sync.ConfigFileNotFound

Motivo: Synchronizer se configuró para leer sus propiedades de configuración desde un archivo, pero el archivo no se pudo cargar.

Solución: Asegúrate de que el archivo esté disponible y que se pueda acceder al mismo durante el inicio de Synchronizer.

sync.IncorrectSettings

Motivo: Faltan una o más de las propiedades de configuración requeridas de la configuración del sincronizador, o tienen valores que están fuera del rango esperado. En el error, se deben incluir más detalles sobre la propiedad exacta que causa el problema. Estos errores están integrados en el analizador para garantizar que se detecten los errores de configuración, incluso antes de que se inicie el servicio.

En la siguiente tabla, se enumeran algunos errores posibles de IncorrectSettings:

Error ¿Cuál es el problema?
configuration.json.IncorrectSettings: [com.apigee.sync.config.json] Error:/controlPlane/retries numeric instance is greater than the required maximum (maximum: 3, found: 20) El valor proporcionado al campo de reintentos en la sección controlPlane superó el permitido
configuration.json.IncorrectSettings: [com.apigee.sync.config.json] Error:/controlPlane/connectionTimeout numeric instance is lower than the required minimum (minimum: 10, found: 1) El valor proporcionado al campo connectionTimeout en la sección controlPlane es menor que el permitido
configuration.json.IncorrectSettings: [com.apigee.sync.config.json] Error:/controlPlane object has missing required properties ([\"contractProvider\"]) A la sección controlPlane le falta el campo obligatorio contractProvider
configuration.json.IncorrectSettings: [com.apigee.sync.config.json] Error:/controlPlane/contractProvider string \"http://\\uapi.apigee.com\" is not a valid URI El URI del proveedor del contrato no es válido.
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 El arreglo de entornos debe tener al menos un entorno
configuration.json.IncorrectSettings: [com.apigee.sync.config.json] Error:/environments/0 object has missing required properties ([\"environmentName\"]) Al entorno en el índice 0 le falta el campo obligatorio environmentName
configuration.json.IncorrectSettings: [com.apigee.sync.config.json] Error:/environments/0 object has missing required properties ([\"organizationName\"]) Al entorno en el índice 0 le falta el campo obligatorio 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) El entorno en el índice 0 tiene un intervalo de sondeo que se encuentra por debajo del límite permitido de 60.

Solución: Corrige la configuración para incluir el bloque requerido.

sync.ReplicationRootDoesNotExist

Motivo: A Synchronizer se le proporcionó una raíz de replicación que no existe

Solución: Asegúrate de que la carpeta raíz proporcionada exista y que se pueda escribir en ella

sync.ReadOnlyReplicationRoot

Motivo: A Synchronizer se le proporcionó una raíz de replicación que no tiene permisos de escritura

Solución: Asegúrate de que la carpeta raíz proporcionada exista y que se pueda escribir en ella

sync.ReplicationRootNotADir

Motivo: A Synchronizer se le proporcionó una raíz de replicación que posiblemente sea un archivo

Solución: Asegúrate de que la carpeta raíz proporcionada exista y que se pueda escribir en ella

sync.InvalidControlPlaneURL

Motivo: A Synchronizer se le proporcionó una URL de configuración que está vacía

Solución: Asegúrate de que la carpeta raíz proporcionada exista y que se pueda escribir en ella

sync.InvalidControlPlaneSubscriptionURL

Motivo: A Synchronizer se le proporcionó una URL de configuración incorrecta, incompleta o vacía para la creación de la suscripción.

Solución: Corrige la URL a una URL de configuración válida para la creación de la suscripción a Pub/Sub a fin de controlar las señales del plano de control.

sync.InvalidControlPlaneUnsubscriptionURL

Motivo: A Synchronizer se le proporcionó una URL de configuración incorrecta, incompleta o vacía para la eliminación de la suscripción.

Solución: Corrige la URL a una URL de configuración válida para la eliminación de la suscripción a Pub/Sub a fin de controlar las señales del plano de control.

sync.CannotCreateEnvironmentFolder

Motivo: Synchronizer intentó crear una carpeta para replicar el entorno qa, pero no pudo crearla

Solución: Asegúrate de que la raíz de replicación no tenga una ruta en conflicto con el mismo nombre que sea de solo lectura de un archivo.

sync.DuplicateEnvironmentEntries

Motivo: Se agregó el mismo entorno varias veces en la configuración.

Solución: Cada entorno se puede especificar solo una vez.

sync.DiskExceedsAllowedCapacity

Motivo: El disco de almacenamiento proporcionado ya está al límite de la capacidad proporcionada a través de las propiedades de configuración.

Solución: Asegúrate de que haya suficiente espacio en el disco o verifica si la configuración de almacenamiento se puede ajustar para permitir más espacio en el disco.

sync.OwnershipClaimFailed

Motivo: Synchronizer intentó reclamar la propiedad en la carpeta del entorno, pero falló

Solución: Cada sincronizador primero intentará asegurarse de que sea el único que escribe en el sistema de archivos. El error indica la ruta y el motivo de la falla. Aborda la causa raíz.

Errores de Synchronizer durante el tiempo de ejecución

Pueden producirse los siguientes errores de Synchronizer durante el tiempo de ejecución.

sync.replicators.PollReturnedError

En el mensaje asociado, se incluirá el estado ascendente. A continuación, se muestran los estados de error.

status 0

Razón: Indica un problema de conectividad. No se pudo acceder al plano de administración.

Solución: Asegúrate de que los detalles del plano de administración sean correctos y de que se pueda acceder a la API de contratos.

status 404

Motivo: Lo más probable es que no se encuentre el nombre de la organización o el entorno en el servidor

Solución: Asegúrate de que los detalles del plano de administración sean correctos y de que se pueda acceder a la API de contratos.

status 401

Motivo: La mayoría de las credenciales proporcionadas no tienen los privilegios de administrador de la organización.

Solución: Asegúrate de que las credenciales del plano de administración sean correctas y de que se pueda acceder a la API de contratos.

status 403

Motivo: Indica que el entorno en el que se realiza el sondeo no está configurado como entorno híbrido.

Solución: Asegúrate de que la organización tenga la marca necesaria "features.hybrid.enabled=true"

sync.OwnershipClaimedByOther

Motivo: Durante la operación, Synchronizer descubrió que otra instancia de Synchronizer accedió a la raíz del archivo (esto puede suceder cuando se comparte un sistema de archivos entre Synchronizers).

Solución: Aborda el problema raíz para asegurarte de que dos instancias de Synchronizer compartan el mismo sistema de archivos. Synchronizer se habría marcado a sí mismo y estaría en una posición irrecuperable. También se asegura de que el otro Synchronizer que acceda a la misma raíz de archivo reciba notificaciones a través de sus archivos de propiedad

sync.DiskExceedsAllowedCapacity

Motivo: Durante la operación, Synchronizer descubrió que la ocupación del disco superó el límite permitido.

Solución: En este punto, Synchronizer anularía cualquier descarga y probaría una operación de limpieza de archivos inactivos. Sin embargo, esto puede convertirse en una condición recurrente y la única manera de recuperarse por completo es asegurarte de que Synchronizer tenga suficiente memoria de disco para operar.

Diagnostica fallas en la descarga de contratos

Si ves “sondeo de contrato ascendente” en un mensaje de error, llama a la API de contrato y verifica los detalles, en los que el nombre de usuario es tu nombre de usuario de Apigee (tu dirección de correo electrónico). El contrato representa la colección completa de datos que descarga Synchronizer desde el plano de administración.

Sin residencia de datos

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

Residencia de los datos

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