Os registros são uma boa maneira de resolver problemas com a instalação híbrida da Apigee. Consulte Geração de registros para mais detalhes.
É possível visualizar os registros de sincronização da Apigee usando o comandokubectl logs. Exemplo:
kubectl logs -n apigee apigee-synchronizer-apigee-example-test
Entradas de registro do Synchronizer
A tabela a seguir descreve os campos que você verá nos arquivos de registro do Synchronizer.
| Campo | Indica | 
|---|---|
| org: | Nome da organização | 
| env: | Nome do ambiente | 
| target: | Caminho da entidade que representa a entrada de registro | 
| action: | Ação de sincronização SYNC=Upstream Ação REPLICATE=Replicate/download | 
| context-id: | A versão do contrato quando aplicável | 
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
Noções básicas sobre registros do Synchronizer
Se você precisar resolver um problema com o Synchronizer, observe os arquivos de registro. A tabela a seguir pode ajudar a solucionar erros que podem aparecer nos registros do Synchronizer. Consulte também Geração de registros.
| Entrada de registro | O que isso 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 | A pesquisa de upstream foi iniciada para a organização e o ambiente e recebeu o URL do plano de gerenciamento. | 
| 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 | 
| 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 | Uma versão do contrato foi recebida | 
| 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 MDC indicam os detalhes sobre o que está sendo 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 MDC indicam os detalhes sobre o que está sendo 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 fornece 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 um contrato mais recente não estava disponí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 0 | Indica que o plano de gerenciamento não foi 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 gerenciamento retornou 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 que está sendo pesquisado não está ativado para 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 | As credenciais fornecidas têm alguns problemas | 
Solução de problemas de erros
Os registros são uma boa maneira de solucionar problemas com a instalação. Consulte Geração de registros para mais detalhes.
Falha ao iniciar o Synchronizer
Veja a seguir alguns erros e as respectivas correções. Cada uma dessas mensagens de erro começa com um ErrorCode do tipo sync.xxxxx. Veja abaixo os possíveis códigos dos erros
sync.NullOrEmptyConfig
Mensagem: configuração nula ou vazia fornecida por com.apigee.sync.config
Motivo: você verá essa mensagem de erro quando as propriedades de configuração do Synchronizer não forem fornecidas corretamente.
Ação corretiva: verifique se todas as propriedades de configuração estão preenchidas com valores apropriados.
sync.ConfigFileNotFound
Motivo: o Synchronizer foi configurado para ler as propriedades de configuração de um arquivo, mas não foi possível carregar o arquivo.
Ação corretiva: verifique se o arquivo está disponível e acessível durante a inicialização do Synchronizer
sync.IncorrectSettings
Motivo: uma ou mais propriedades de configuração necessárias estão ausentes na configuração do Synchronizer ou os valores que estão fora do intervalo esperado. O erro precisa ter mais detalhes sobre a propriedade exata que está causando o problema. Esses erros são incorporados ao analisador para garantir que os erros de configuração sejam capturados antes da inicialização do serviço.
A tabela a seguir lista alguns possíveis erros de IncorrectSettings:
| Erro | Qual é o problema? | 
|---|---|
| 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 para o campo de novas tentativas na seção controlPlane excedeu o limite 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 para o campo connectionTimeout na seção controlPlane é menor que o permitido | 
| configuration.json.IncorrectSettings:
[com.apigee.sync.config.json] Error:/controlPlane object has
missing required properties
([\"contractProvider\"]) | 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 provedor de 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 | A matriz de ambientes precisa 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 pesquisa abaixo do limite permitido de 60 | 
Ação corretiva: corrija a configuração para incluir o bloqueio necessário
sync.ReplicationRootDoesNotExist
Motivo: o Synchronizer foi fornecido com uma raiz de replicação que não existe.
Ação corretiva: verifique se a pasta raiz fornecida existe e pode ser gravada.
sync.ReadOnlyReplicationRoot
Motivo: o Synchronizer foi fornecido com uma raiz de replicação que não tem permissões de gravação
Ação corretiva: verifique se a pasta raiz fornecida existe e pode ser gravada.
sync.ReplicationRootNotADir
Motivo: o Synchronizer foi fornecido com uma raiz de replicação que pode ser um arquivo
Ação corretiva: verifique se a pasta raiz fornecida existe e pode ser gravada.
sync.InvalidControlPlaneURL
Motivo: o Synchronizer foi fornecido com um URL de configuração vazio
Ação corretiva: verifique se a pasta raiz fornecida existe e pode ser gravada.
sync.InvalidControlPlaneSubscriptionURL
Motivo: o Synchronizer foi fornecido com um URL de configuração incorreto, incompleto ou vazio para criação de assinatura.
Ação corretiva: corrija o URL para um URL de configuração válido para a criação da assinatura do Pub/Sub para lidar com sinais do plano de controle.
sync.InvalidControlPlaneUnsubscriptionURL
Motivo: o Synchronizer foi fornecido com um URL de configuração incorreto, incompleto ou vazio para a exclusão da assinatura.
Ação corretiva: corrija o URL para um URL de configuração válido para a exclusão da assinatura do Pub/Sub para manipular sinais do plano de controle.
sync.CannotCreateEnvironmentFolder
Motivo: o Synchronizer tentou criar uma pasta para replicar o ambiente de controle de qualidade, mas não conseguiu criar a pasta necessária
Ação corretiva: verifique se a raiz da replicação não tem um caminho conflitante com o mesmo nome, que é somente leitura de um arquivo
sync.DuplicateEnvironmentEntries
Motivo: o mesmo ambiente foi adicionado várias vezes à configuração.
Ação corretiva: cada ambiente pode ser especificado apenas uma vez.
sync.DiskExceedsAllowedCapacity
Motivo: o disco de armazenamento fornecido já tem a capacidade limite fornecida por meio das propriedades de configuração.
Ação corretiva: verifique se há espaço em disco suficiente ou verifique se as configurações de armazenamento podem ser ajustadas para permitir mais espaço em disco.
sync.OwnershipClaimFailed
Motivo: o Synchronizer tentou reivindicar a propriedade na pasta do ambiente, mas falhou.
Ação corretiva: primeiro cada Synchronizer tentará garantir que ele seja um único gravador no sistema de arquivos. O erro indica o caminho e o motivo da falha. Resolver a causa raiz
Erros do Synchronizer durante o ambiente de execução
Os seguintes erros de Synchronizer podem ocorrer durante o ambiente de execução.
sync.replicators.PollReturnedError
A mensagem associada incluirá o status upstream. Veja abaixo os status de erro
status 0
Motivo: indica um problema de conectividade. O plano de gerenciamento não estava acessível
Ação corretiva: verifique se os detalhes do plano de gerenciamento estão corretos e se a API de contratos está acessível
status 404
Motivo: é mais provável que o nome da organização/ambiente não seja encontrado no servidor.
Ação corretiva: verifique se os detalhes do plano de gerenciamento estão corretos e se a API de contratos está acessível
status 401
Motivo: as credenciais mais prováveis fornecidas não têm os privilégios de administrador da organização.
Ação corretiva: verifique se as credenciais do plano de gerenciamento estão corretas e se a API de contratos está acessível.
status 403
Motivo: indica o ambiente que está sendo pesquisado não é configurado como ambiente híbrido.
Ação corretiva: verifique se a organização tem a sinalização necessária "features.hybrid.enabled=true".
sync.OwnershipClaimedByOther
Motivo: durante a operação, Synchronizer descobriu que a raiz do arquivo está sendo acessada por outra instância do Synchronizer. Isso pode acontecer quando um sistema de arquivos é compartilhado entre Synchronizers.
Ação corretiva: resolva o problema da raiz para garantir que não haja duas instâncias Synchronizer compartilhadas no mesmo sistema de arquivos. O Synchronizer teria se marcado e ficaria em uma posição irrecuperável aqui. Ele também garante que o outro Synchronizer, que acessa a mesma raiz de arquivo, seja notificado sobre ele por meio dos arquivos de propriedade.
sync.DiskExceedsAllowedCapacity
Motivo: durante a operação do Synchronizer, o número de ocupação do disco foi excedido.
Ação corretiva: neste momento, o Synchronizer abortaria todos os downloads e tentaria uma operação de limpeza de arquivo desatualizada. No entanto, isso pode se tornar uma condição recorrente e a única maneira de se recuperar completamente é garantir que o Synchronizer tenha memória de disco suficiente para funcionar.
Diagnóstico de falhas no download do contrato
Se você vir "pesquisa de contrato upstream" em uma mensagem de erro, tente chamar a API do contrato e verifique os detalhes, em que o nome de usuário é seu nome de usuário da Apigee (seu endereço de e-mail). O contrato representa toda a coleção de dados que o Synchronizer faz o download do plano de gerenciamento.
curl https://apigee.googleapis.com/v1/organizations/org/environments/env/contracts/1.0 -u username