As dimensões personalizadas não aparecem quando vários axgroups foram configurados

Você está vendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
informações

Sintoma

A variável personalizada criada com a política do coletor de estatísticas não fica visível em "Dimensões personalizadas" nos relatórios personalizados do Analytics na interface do usuário 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 está 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 a
O caminho das propriedades do Zookeeper está ausente para a combinação de organização e ambiente. Quando o caminho /organizations//environments//properties do ZooKeeper está ausente, não é possível criar dimensões personalizadas. Usuários da nuvem privada de borda

Causa: o caminho das propriedades do ZooKeeper está ausente para a combinação de organização e ambiente

Diagnóstico

O Analytics é ativado para uma combinação de ambiente de organização com a opção Ativar API Analytics, que preenche /organizations//environments//properties na árvore do ZooKeeper. Quando essa API falha, o componente Edge-postgres-server não consegue criar dimensões personalizadas, e o erro a seguir aparecerá 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 foi integrada quando havia mais de um grupo de análise que usava os mesmos UUIDs do servidor postgres. 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, é provável que essa seja a causa do problema. No exemplo a seguir, observe que existem dois grupos, diferenciados por apenas 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 quando o UUID do servidor postgres configurado para cada axgroup é 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"

O exemplo de saída a seguir compara rapidamente os UUIDs do postgres-server para determinar que eles são iguais:

{  "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 é 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:

  1. Remova os componentes do servidor postgres de um dos dois axgroups usando as instruções em Como adicionar e excluir componentes de análise em grupos de análise. Se você está tendo problemas somente com escopos que não são de 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.
  2. Remova do axgroup todos os escopos que não tenham mais servidores postgres e aqueles que tiveram problemas de dimensão personalizada. Supondo que axgroup-001 do exemplo acima seja o grupo que você quer usar, você precisaria 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'
    
  3. Ative o Analytics usando a API Analytics.
  4. Reinicie o componente Edge-postgres-server no nó mestre do postgres e todos os componentes Edge-qpid-server que você possa ter instalado 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
    
  5. Verifique se o erro fornecido na seção Error Message acima não ocorre mais no arquivo de registros /opt/apigee/var/log/edge-postgres-server/logs/system.log do servidor Postgres.
  6. Confirme se as dimensões personalizadas aparecem na interface do Edge.

Se o problema persistir, acesse Precisa coletar 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 informações de diagnóstico abaixo. Entre em contato e compartilhe com o suporte do Apigee Edge:

  1. O Edge-postgres-server /opt/apigee/var/log/edge-postgres-server/logs/system.log a partir do momento da reinicialização mais recente.
  2. A saída da seguinte chamada da API Management:
    curl -u username:password "http://management-server-host:8080/v1/analytics/groups/ax"
    
  3. A saída da árvore do ZooKeeper foi recebida usando o seguinte comando:
    /opt/apigee/apigee-zookeeper/contrib/zk-tree.sh > zktree-output.txt