Registos do sincronizador

Os registos são uma boa forma de resolver problemas com a instalação do Apigee hybrid. Consulte o artigo Registo para ver detalhes.

Pode ver os registos do sincronizador do Apigee através do comando kubectl logs. Por exemplo:
kubectl logs -n apigee apigee-synchronizer-apigee-example-test

Entradas do registo do sincronizador

A tabela seguinte descreve os campos que vê nos ficheiros de registo do sincronizador.

Campo Indica
org: Nome da entidade
env: Nome do ambiente
target: Caminho da entidade que a entrada de registo representa
action: Ação SYNC=Ação de sincronização a montante

REPLICATE=Replicate/download action

context-id: A versão do contrato, sempre que aplicável

Por exemplo:

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

Compreender os registos do sincronizador

Se precisar de resolver um problema com o sincronizador, consulte os ficheiros de registo. A tabela seguinte pode ajudar a resolver problemas de erros que pode ver nos registos do sincronizador. Veja também Registo.

Entrada do registo O que 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 Foi iniciada uma sondagem a montante para a organização e o ambiente, e foi fornecido o URL do plano de gestão
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 O contrato foi recebido com êxito
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 Foi recebida uma versão do 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 o início da replicação. Os campos de MDC indicam os detalhes sobre o que está a ser replicado
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 a replicação foi concluída. Os campos de MDC indicam os detalhes sobre o que está a ser replicado
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 um erro de replicação
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 o fim de um ciclo de sincronização e também indica o tempo necessário para sincronizar
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 não estava disponível um contrato mais recente
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 o plano de gestão não estava acessível
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 o plano de gestão devolveu uma resposta 404 para o 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 o ambiente para o qual está a ser feita a sondagem não tem a funcionalidade híbrida ativada
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 As credenciais fornecidas têm alguns problemas

Resolução de problemas de erros

Os registos são uma boa forma de resolver problemas com a sua instalação. Consulte o artigo Registo para ver detalhes.

O sincronizador não é iniciado

Seguem-se alguns erros e a respetiva correção explicada. Cada uma destas mensagens de erro começa com um ErrorCode do tipo sync.xxxxx. Seguem-se possíveis códigos de erro

sync.NullOrEmptyConfig

Mensagem: configuração nula ou vazia fornecida através de com.apigee.sync.config

Motivo: esta mensagem de erro é apresentada quando as propriedades de configuração do sincronizador não foram fornecidas corretamente.

Correção: certifique-se de que todas as propriedades de configuração estão preenchidas com valores adequados.

sync.ConfigFileNotFound

Motivo: o sincronizador foi definido para ler as respetivas propriedades de configuração a partir de um ficheiro, mas não foi possível carregar o ficheiro

Solução: certifique-se de que o ficheiro está disponível e acessível durante o arranque do sincronizador

sync.IncorrectSettings

Motivo: faltam uma ou mais propriedades de configuração necessárias na configuração do sincronizador ou os respetivos valores estão fora do intervalo esperado. O erro deve ter mais detalhes sobre a propriedade exata que está a causar o problema. Estes erros estão incorporados no analisador para garantir que os erros de definição são detetados mesmo antes de o serviço ser iniciado.

A tabela seguinte apresenta alguns possíveis erros IncorrectSettings:

Erro O que está errado
configuration.json.IncorrectSettings: [com.apigee.sync.config.json] Error:/controlPlane/retries numeric instance is greater than the required maximum (maximum: 3, found: 20) O valor fornecido ao campo de novas tentativas na secção controlPlane excedeu o valor permitido
configuration.json.IncorrectSettings: [com.apigee.sync.config.json] Error:/controlPlane/connectionTimeout numeric instance is lower than the required minimum (minimum: 10, found: 1) O valor fornecido ao campo connectionTimeout na secção controlPlane é inferior ao permitido
configuration.json.IncorrectSettings: [com.apigee.sync.config.json] Error:/controlPlane object has missing required properties ([\"contractProvider\"]) A secção controlPlane não tem o campo obrigatório contractProvider
configuration.json.IncorrectSettings: [com.apigee.sync.config.json] Error:/controlPlane/contractProvider string \"http://\\uapi.apigee.com\" is not a valid URI O URI do fornecedor do contrato não é um URI 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 O conjunto de ambientes tem de ter, pelo menos, um ambiente
configuration.json.IncorrectSettings: [com.apigee.sync.config.json] Error:/environments/0 object has missing required properties ([\"environmentName\"]) O ambiente no índice 0 não tem o campo obrigatório environmentName
configuration.json.IncorrectSettings: [com.apigee.sync.config.json] Error:/environments/0 object has missing required properties ([\"organizationName\"]) O ambiente no índice 0 não tem o campo obrigatório 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) O ambiente no índice 0 tem um intervalo de sondagem inferior ao limite permitido de 60

Solução: corrija a definição para incluir o bloco necessário

sync.ReplicationRootDoesNotExist

Motivo: o sincronizador foi fornecido com uma raiz de replicação que não existe

Correção: certifique-se de que a pasta raiz fornecida existe e é gravável

sync.ReadOnlyReplicationRoot

Motivo: o sincronizador foi fornecido com uma raiz de replicação que não tem autorizações de escrita

Correção: certifique-se de que a pasta raiz fornecida existe e é gravável

sync.ReplicationRootNotADir

Motivo: o sincronizador foi fornecido com uma raiz de replicação que é possivelmente um ficheiro

Correção: certifique-se de que a pasta raiz fornecida existe e é gravável

sync.InvalidControlPlaneURL

Motivo: o sincronizador foi fornecido com um URL de configuração vazio

Correção: certifique-se de que a pasta raiz fornecida existe e é gravável

sync.InvalidControlPlaneSubscriptionURL

Motivo: o sincronizador foi fornecido com um URL de configuração incorreto, incompleto ou vazio para a criação de subscrições.

Correção: corrija o URL para um URL de configuração válido para a criação de subscrições do Pub/Sub para processar sinais do plano de controlo.

sync.InvalidControlPlaneUnsubscriptionURL

Motivo: o sincronizador foi fornecido com um URL de configuração incorreto, incompleto ou vazio para a eliminação da subscrição.

Correção: corrija o URL para um URL de configuração válido para a eliminação da subscrição de publicação/subscrição para processar sinais do plano de controlo.

sync.CannotCreateEnvironmentFolder

Motivo: o sincronizador tentou criar uma pasta para replicar o ambiente de controlo de qualidade, mas não conseguiu criar a pasta necessária

Solução: certifique-se de que a raiz de replicação não tem um caminho em conflito com o mesmo nome que seja apenas de leitura de um ficheiro

sync.DuplicateEnvironmentEntries

Motivo: o mesmo ambiente foi adicionado várias vezes na configuração.

Correção: cada ambiente só pode ser especificado uma vez.

sync.DiskExceedsAllowedCapacity

Motivo: o disco de armazenamento fornecido já atingiu a capacidade limite fornecida através das propriedades de configuração.

Solução: certifique-se de que existe espaço suficiente no disco ou verifique se é possível ajustar as definições de armazenamento para permitir mais espaço no disco.

sync.OwnershipClaimFailed

Motivo: o sincronizador tentou reivindicar a propriedade da pasta do ambiente, mas falhou

Correção: cada sincronizador tenta primeiro certificar-se de que é o único a escrever no sistema de ficheiros. O erro indica o caminho e o motivo da falha. Resolva a causa principal

Erros do sincronizador durante o tempo de execução

Os seguintes erros do sincronizador podem ocorrer durante o tempo de execução.

sync.replicators.PollReturnedError

A mensagem associada inclui o estado a montante. Seguem-se os estados de erro

status 0

Motivo: indica um problema de conetividade. O plano de gestão não estava acessível

Correção: certifique-se de que os detalhes do plano de gestão estão corretos e que a API Contracts está acessível

status 404

Motivo: é muito provável que o nome da organização/ambiente não seja encontrado no servidor

Correção: certifique-se de que os detalhes do plano de gestão estão corretos e que a API Contracts está acessível

status 401

Motivo: muito provavelmente, as credenciais fornecidas não têm os privilégios de administrador da organização.

Solução: certifique-se de que as credenciais do plano de gestão estão corretas e que a API Contracts está acessível

status 403

Motivo: indica que o ambiente que está a ser sondado não está configurado como ambiente híbrido

Correção: certifique-se de que a organização tem a flag necessária "features.hybrid.enabled=true"

sync.OwnershipClaimedByOther

Motivo: durante a operação, o sincronizador detetou que outra instância do sincronizador está a aceder à raiz do ficheiro. (Isto pode acontecer quando um sistema de ficheiros é partilhado entre sincronizadores.)

Solução: resolva o problema principal para garantir que não existem duas instâncias do sincronizador a partilhar o mesmo sistema de ficheiros. O sincronizador teria marcado a si próprio como em baixo desempenho e estaria numa posição irrecuperável. Também garante que o outro sincronizador que está a aceder à mesma raiz de ficheiros é notificado sobre isso através dos respetivos ficheiros de propriedade

sync.DiskExceedsAllowedCapacity

Motivo: durante a operação, o sincronizador apercebeu-se de que a ocupação do disco excedeu o limite permitido.

Solução: neste ponto, o sincronizador anula quaisquer transferências e tenta uma operação de limpeza de ficheiros desatualizados. No entanto, esta situação pode tornar-se recorrente e a única forma de recuperar completamente é garantir que o sincronizador tem memória no disco suficiente para funcionar.

Diagnostique falhas na transferência de contratos

Se vir "upstream contract poll" numa mensagem de erro, experimente chamar a API Contract e verifique os detalhes, onde o nome de utilizador é o seu nome de utilizador do Apigee (o seu endereço de email). O contrato representa a coleção completa de dados que o sincronizador transfere do plano de gestão.

Sem residência de dados

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

Residência dos dados

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