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

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//environments//properties 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//environments//properties 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:

  1. 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.
  2. 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-001 do 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'
    
  3. Ative a análise usando a API Enable analytics.
  4. 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
    
  5. 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.
  6. 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:

  1. O edge-postgres-server /opt/apigee/var/log/edge-postgres-server/logs/system.log 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 obtida usando o seguinte comando:
    /opt/apigee/apigee-zookeeper/contrib/zk-tree.sh > zktree-output.txt