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 comandokubectl 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