Você está lendo a documentação do Apigee Edge.
Acesse a
documentação da Apigee X. info
Sintoma
A variável personalizada criada usando a política Statistics Collector não aparece em "Dimensões personalizadas" nos Relatórios personalizados de análise na interface do Edge.
Mensagem de erro
O registro do sistema edge-postgres-server terá o seguinte erro após uma reinicialização para cada combinação de organização/ambiente em que o caminho estiver ausente:
KeeperErrorCode = NoNode for /organizations/<ORG>/environments/<ENV>/properties 2018-03-29 16:14:48,980 pool-10-thread-2 ERROR ZOOKEEPER - ZooKeeperServiceImpl.getData() : Could not get data for path: /organizations//environments/ /properties, reason: KeeperErrorCode = NoNode for /organizations/ /environments/ /properties
Causas possíveis
| Causa | Descrição | Instruções de solução de problemas aplicáveis para |
|---|---|---|
| O caminho das propriedades do Zookeeper está ausente para a combinação de organização e ambiente. | Quando o caminho do ZooKeeper /organizations/
está ausente, não é possível criar dimensões personalizadas. |
Usuários da nuvem privada do Edge |
Causa: o caminho das propriedades do ZooKeeper está ausente para a combinação de organização e ambiente
Diagnóstico
A análise é ativada para uma combinação de organização e ambiente pela
API Enable analytics, que preenche o /organizations/
na árvore do ZooKeeper. Quando essa API falha, o componente edge-postgres-server não pode criar dimensões personalizadas, e o seguinte erro aparece no system.log:
KeeperErrorCode = NoNode for /organizations/example/environments/prod/properties 2018-03-29 16:14:48,980 pool-10-thread-2 ERROR ZOOKEEPER - ZooKeeperServiceImpl.getData() : Could not get data for path: /organizations/example/environments/prod/properties, reason: KeeperErrorCode = NoNode for /organizations/digi/environments/sandbox/properties
Normalmente, isso acontece quando uma organização é integrada em um momento em que há mais de um grupo de análise que usa os mesmos UUIDs do postgres-server. Para verificar quantos grupos de análise existem, execute a seguinte chamada de API:
curl -u username:password "http://management-server-host:8080/v1/analytics/groups/ax"
Se essa API retornar vários grupos, é muito provável que seja a causa do problema. No exemplo a seguir, observe que existem dois grupos, diferenciados apenas por um hífen: axgroup-001 e axgroup001
[ {
"name" : "axgroup-001",
"properties" : {
},
"scopes" : [ "VALIDATE~test" ],
"uuids" : {
"qpid-server" : [ "94c96375-1ca7-412d-9eee-80fda94f6e07" ],
"postgres-server" : [ "8ee86b70-5b33-44b6-b2f8-1b0ec0ec8d77" ]
},
"consumer-groups" : [ {
"name" : "consumer-group-001",
"consumers" : [ "94c96375-1ca7-412d-9eee-80fda94f6e07" ],
"datastores" : [ "8ee86b70-5b33-44b6-b2f8-1b0ec0ec8d77" ],
"properties" : {
}
} ],
"data-processors" : {
}
}, {
"name" : "axgroup001",
"properties" : {
},
"scopes" : [ "example~prod" ],
"uuids" : {
"qpid-server" : [ "94c96375-1ca7-412d-9eee-80fda94f6e07" ],
"postgres-server" : [ "8ee86b70-5b33-44b6-b2f8-1b0ec0ec8d77" ]
},
"consumer-groups" : [ {
"name" : "consumer-group-001",
"consumers" : [ "94c96375-1ca7-412d-9eee-80fda94f6e07" ],
"datastores" : [ "8ee86b70-5b33-44b6-b2f8-1b0ec0ec8d77" ],
"properties" : {
}
} ],
"data-processors" : {
}Especificamente, o problema ocorre se o UUID do postgres-server configurado para cada axgroup for o mesmo. Uma maneira rápida de determinar isso é executar o seguinte:
curl -u username:password "http://management-server-host:8080/v1/analytics/groups/ax"|grep -B7 "postgres-server"
A saída de amostra a seguir compara rapidamente os UUIDs do postgres-server para determinar se eles são os mesmos:
{ "name" : "axgroup-001", "properties" : { }, "scopes" : [ "VALIDATE~test" ],
"uuids" : { "qpid-server" : [ "94c96375-1ca7-412d-9eee-80fda94f6e07" ],
"postgres-server" : [ "8ee86b70-5b33-44b6-b2f8-1b0ec0ec8d77" ]--
"name" : "axgroup001", "properties" : { }, "scopes" : [ "myorg~prod" ],
"uuids" : { "qpid-server" : [ "94c96375-1ca7-412d-9eee-80fda94f6e07" ],
"aries-datastore" : [ ], "postgres-server" : [ "8ee86b70-5b33-44b6-b2f8-1b0ec0ec8d77" ],Resolução
O mesmo conjunto de servidores PostgreSQL não pode ser atribuído a dois axgroups. A maneira mais rápida de resolver o problema é excluir as informações do servidor postgres de um axgroup e atribuir todos os escopos (combinações de organização e ambiente) ao outro grupo. Para fazer isso, siga estas etapas:
- Remova os componentes do servidor postgres de um dos dois axgroups usando as instruções em Adicionar e excluir componentes de análise em grupos de análise. Se você estiver enfrentando problemas apenas com escopos de não produção, escolha o axgroup que NÃO tem nenhum escopo de produção para este exercício. Caso contrário, escolha o axgroup com o menor número de escopos.
- Remova todos os escopos do axgroup que não tem mais servidores postgres e aqueles
para os quais você está vendo o problema de dimensão personalizada do axgroup. Supondo
axgroup-001do exemplo acima seja o grupo que você quer usar, você teria que usar o seguinte para remover o escopo da organização myorg, e do ambiente prod:curl -u username:password -X DELETE 'http://management-server-host:8080/v1/analytics/groups/ax/axgroup001/scopes?org=myorg&env=prod'
- Ative a análise usando a API Enable analytics.
- Reinicie o componente edge-postgres-server no nó mestre do postgres e todos os
componentes edge-qpid-server que você instalou usando os seguintes comandos:
/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
/opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
- Verifique se o erro fornecido na seção Mensagem de erro acima
não ocorre mais no arquivo de registro do servidor Postgres
/opt/apigee/var/log/edge-postgres-server/logs/system.log. - Confirme se as dimensões personalizadas aparecem na interface do Edge.
Se o problema persistir, acesse Precisa de informações de diagnóstico.
É necessário coletar informações de diagnóstico
Se o problema persistir mesmo depois de seguir as instruções anteriores, colete as seguintes informações de diagnóstico. Entre em contato e compartilhe-as com o suporte do Apigee Edge:
- O edge-postgres-server
/opt/apigee/var/log/edge-postgres-server/logs/system.logdo momento da reinicialização mais recente. - A saída da seguinte chamada da API Management:
curl -u username:password "http://management-server-host:8080/v1/analytics/groups/ax"
- A saída da árvore do ZooKeeper obtida usando o seguinte comando:
/opt/apigee/apigee-zookeeper/contrib/zk-tree.sh > zktree-output.txt