Como monitorar

Edge para nuvem privada v4.18.01

Neste documento, descrevemos as técnicas de monitoramento de componentes compatíveis com uma implantação local do Apigee Edge.

Como ativar o JMX

O JMX é ativado por padrão para o Cassandra e desativado por padrão para todos os outros componentes do Edge. Portanto, você precisa ativar o JMX individualmente para cada componente.

Cada componente oferece suporte ao JMX em uma porta diferente. A tabela a seguir lista a porta JMX e o arquivo que você modifica para ativar o JMX nessa porta:

Componente Porta JMX Arquivo
Servidor de gerenciamento 1099 /opt/apigee/edge-management-server/bin/start
Roteador 1100 /opt/apigee/edge-router/bin/start
processador de mensagens 1101 /opt/apigee/edge-message-processor/bin/start
Qpid 1102 /opt/apigee/edge-qpid-server/bin/start
Postgres 1103 /opt/apigee/edge-postgres-server/bin/start

Por exemplo, para ativar o JMX no servidor de gerenciamento, abra /opt/apigee/edge-management-server/bin/start em um editor. Você verá a linha a seguir usada para iniciar o servidor de gerenciamento:

exec $JAVA -classpath "$classpath" -Xms$min_mem -Xmx$max_mem $xx_opts -Djava.security.auth.login.config=$conf_path/jaas.config 
-Dinstallation.dir=$install_dir $sys_props -Dconf.dir=$conf_path 
-Ddata.dir=$data_dir $* $debug_options com.apigee.kernel.MicroKernel

Edite essa linha para adicionar o seguinte:

-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 
-Dcom.sun.management.jmxremote.local.only=false  
-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false 

Essa linha especifica o número da porta JMX como 1099 para o servidor de gerenciamento. Defina o número da porta de cada componente conforme a tabela acima. Exemplo:

exec $JAVA -classpath "$classpath" -Xms$min_mem -Xmx$max_mem $xx_opts 
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 
-Dcom.sun.management.jmxremote.local.only=false  
-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false 
-Djava.security.auth.login.config=$conf_path/jaas.config 
-Dinstallation.dir=$install_dir $sys_props -Dconf.dir=$conf_path -Ddata.dir=$data_dir $* $debug_options com.apigee.kernel.MicroKernel

Salve o arquivo e reinicie o componente. Por exemplo, para reiniciar o servidor de gerenciamento:

> /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart

Ativar a autenticação JMX e definir a senha JMX

O processo de monitoramento do servidor de gerenciamento, do processador de mensagens, do Qpid e do Postgres usam JMX. O JMX está ativado por padrão e o acesso remoto ao JMX não requer uma senha.

Para ativar a autenticação JMX, cada componente tem uma ação change_jmx_auth que é usada para ativar/desativar a autenticação e definir as credenciais do JMX.

Para ativar a autenticação JMX, use o seguinte comando:

>  /opt/apigee/apigee-service/bin/apigee-service comp change_jmx_auth optionsOrConfigFile

onde:

  • comp é edge-management-server, Edge-message-processor, Edge-qpid-server ou Edge-postgres-server.
  • As opções são:
    • -u: nome de usuário
    • -p: senha
    • -e: y (ativar) ou n (dsiable)
  • O arquivo de configuração inclui:
    • JMX_USERNAME=nome de usuário
    • JMX_ATIVADO=y/n
    • JMX_PASSWORD=password (se não definida ou não for transmitida com -p, você será solicitado)

Por exemplo, para usar as opções na linha de comando:

> /opt/apigee/apigee-service/bin/apigee-service edge-management-server change_jmx_auth -u foo -p bar -e y

Se você tiver um arquivo de configuração:

> /opt/apigee/apigee-service/bin/apigee-service edge-management-server change_jmx_auth -f configFile

Se você estiver executando o Edge em vários nós, execute este comando em todos os nós, especificando o mesmo nome de usuário e senha.

Para desativar posteriormente a autenticação do JMX, use o comando:

> /opt/apigee/apigee-service/bin/apigee-service edge-management-server change_jmx_auth -e n

Servidor de gerenciamento

Uso do JConsole para monitorar a verificação de integridade do sistema e informações do processo

Use o JConsole (uma ferramenta compatível com JMX) para gerenciar e monitorar a verificação de integridade e as estatísticas do processo. Com o JConsole, é possível consumir as estatísticas do JMX expostas pelo servidor de gerenciamento (ou qualquer servidor) e exibi-las em uma interface gráfica. Para mais informações sobre o uso do JConsole, consulte http://docs.oracle.com/javase/8/docs/technotes/guides/management/jconsole.html.

Use o JConsole e o URL de serviço a seguir para monitorar os atributos do JMX (MBeans) oferecidos pelo JMX.

service:jmx:rmi:///jndi/rmi://<ip address>:<port>/jmxrmi

em que <ip address> é o endereço IP do servidor de gerenciamento (ou do respectivo servidor). Por padrão, a porta do servidor de gerenciamento é a 1099.

A tabela a seguir mostra as estatísticas genéricas do JMX:

JMX MBeans (em inglês)

Atributos JMX

Memória

HeapMemoryUsage

NonHeapMemoryUsage

Uso

Observação:os valores dos atributos serão exibidos em quatro valores: contínuo, init, max e usado.

Como usar as verificações da API Edge Application

É possível executar a verificação de API no servidor de gerenciamento (ou em qualquer servidor) invocando o seguinte comando CURL:

curl http://<host>:8080/v1/servers/self/up -H "Accept: application/json"

Em que <host> é o endereço IP do servidor de gerenciamento. Você pode especificar o tipo Accept como application/json ou application/xml.

Essa chamada retorna os valores "verdadeiro" e "falso". Se verdadeiro, significa que o nó está ativo e o serviço Java está em execução.

Se você não receber uma resposta HTTP 200 (OK), o Edge não poderá responder às solicitações da porta 8080.

Solução de problemas

  1. Faça login no servidor e execute este comando:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server status
  2. Se o serviço não estiver em execução, inicie o serviço:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server start

Como usar o aplicativo de borda: verificações de usuários, organização e implantação

O servidor de gerenciamento desempenha um papel vital na manutenção de todos os outros pacotes em cada instalação no local. Você pode verificar o status do usuário, da organização e da implantação no servidor de gerenciamento emitindo os seguintes comandos:

curl -u userEmail:password http://localhost:8080/v1/users
curl -u userEmail:password http://localhost:8080/v1/organizations
curl -u userEmail:password http://localhost:8080/v1/organizations/orgname/deployments

O sistema deve exibir o status "implantado" para todas as chamadas. Se elas falharem, faça o seguinte:

  1. Verifique se há erros nos registros do servidor de gerenciamento (em opt/apigee/var/log/edge-management-server).
  2. Faça uma chamada no Servidor de gerenciamento para verificar se ele está funcionando corretamente.
  3. Remova o servidor do ELB e reinicie o servidor de gerenciamento.
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart

Roteador

Faça a verificação da API no roteador (ou em qualquer servidor) invocando o seguinte comando CURL:

curl http://<host>:8081/v1/servers/self/up

Em que host é o endereço IP do roteador.

Essa chamada retorna os valores "verdadeiro" e "falso". Se verdadeiro, isso significa que o nó está ativo e o serviço Roteador está em execução.

Se você não receber uma resposta HTTP 200 (OK), o Edge não poderá responder às solicitações da porta 8081.

Solução de problemas

  1. Faça login no servidor e execute estes comandos:
    /<inst_root>/apigee/apigee-service/bin/apigee-service status do Edge-router (em inglês)
  2. Se o serviço não estiver em execução, inicie o serviço
    /<inst_root>/apigee/apigee-service/bin/apigee-service Edge-router start
  3. Após a reinicialização, verifique se ela está funcionando
    curl -v http://localhost:port/v1/servers/self/up

    Em que porta é 8081 para o roteador e 8082 para o processador de mensagens.

Uso do JConsole para monitorar a verificação de integridade do sistema e informações do processo

Siga as etapas descritas acima para o servidor de gerenciamento.

Observação: use a porta 1100.

processador de mensagens

Uso do JConsole para monitorar a verificação de integridade do sistema e informações do processo

Siga as etapas descritas acima para o servidor de gerenciamento.

Observação: use a porta 1101.

Como usar as verificações da API Edge Application

Siga o procedimento descrito acima para o roteador.

Observação: use a porta 8082.

Como usar as verificações de fluxo de mensagens JMX

Siga as etapas descritas acima para o servidor de gerenciamento.

Observação: use a porta 1101.

Servidor Qpid

Como usar o JConsole para monitorar a verificação de integridade do sistema e as informações do processo

Siga as etapas descritas acima para o servidor de gerenciamento.

Observação: use a porta 1102.

Como usar as verificações da API Edge Application

Siga as etapas descritas acima para o servidor de gerenciamento.

Observação: use a porta 8083. O seguinte comando CURL também é compatível com o Qpid Server:

curl http://<qpid_IP>:8083/v1/servers/self

Servidor Postgres

Uso do JConsole para monitorar a verificação de integridade do sistema e informações do processo

Siga as etapas descritas acima para o servidor de gerenciamento.

Observação: use a porta 1103.

Como usar as verificações da API Edge Application

Siga as etapas descritas acima para o servidor de gerenciamento.

Observação: use a porta 8084. O comando CURL a seguir também é compatível com o servidor Postgres:

curl http://<postgres_IP>:8084/v1/servers/self

Como usar verificações de ambiente e organização de aplicativos de borda

É possível verificar o nome da organização e do ambiente que estão integrados no servidor Postgres emitindo os seguintes comandos CURL:

curl http:// <postgres_IP>:8084/v1/servers/self/organizations

Observação: use a porta 8084.

O sistema vai exibir o nome da organização e do ambiente.

Como usar a verificação de status axstatus do aplicativo Edge

Você pode verificar o status dos servidores de análise emitindo o seguinte comando CURL.

curl -u userEmail:password http://<host>:<port>/v1/organizations/<orgname>/environments/<envname>/provisioning/axstatus

O sistema mostrará o status SUCCESS para todos os servidores de análise. A saída do comando CURL acima é mostrada abaixo:

{
  "environments" : [ {
    "components" : [ {
      "message" : "success at Thu Feb 28 10:27:38 CET 2013",
      "name" : "pg",
      "status" : "SUCCESS",
      "uuid" : "[c678d16c-7990-4a5a-ae19-a99f925fcb93]"
     }, {
      "message" : "success at Thu Feb 28 10:29:03 CET 2013",
      "name" : "qs",
      "status" : "SUCCESS",
      "uuid" : "[ee9f0db7-a9d3-4d21-96c5-1a15b0bf0adf]"
     } ],
    "message" : "",
    "name" : "prod"
   } ],
  "organization" : "acme",
  "status" : "SUCCESS"
}

Banco de dados PostgreSQL

Usando o script check_postgres.pl

Para monitorar o banco de dados PostgreSQL, use um script de monitoramento padrão, check_postgres.pl, disponível em http://bucardo.org/wiki/Check_postgres.

Observação: o script check_postgres.pl precisa estar instalado em cada nó do Postgres.

Antes de executar o script:

  1. Verifique se você instalou perl-Time-HiRes.x86_64, um módulo Perl que implementa timers de alarme, suspensão, gettimeofday e intervalo de alta resolução. Por exemplo, você pode instalá-lo usando o seguinte comando:
    yum install perl-Time-HiRes.x86_64

A saída padrão das chamadas de API que usam o script check_postgres.pl é compatível com Nagios. Depois de instalar o script, faça as seguintes verificações:

  1. Tamanho do banco de dados – verifique o tamanho do banco de dados:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -include=apigee -action database_size --warning='800 GB' --Critical='900 GB'
  2. Conexão de entrada com o banco de dados: verifica o número de conexões de entrada no banco de dados e compara com o máximo de conexões permitidas:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action back-ends
  3. Disponibilidade e desempenho do banco de dados – verifica se o banco de dados está em execução e disponível:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action connection
  4. Espaço do disco – verifica o espaço no disco:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action disk_space --warning='80%' --Critical='90%'
  5. Organizações/ambientes integrados: verifica o número de organizações e ambientes integrados em um nó do Postgres:
    check_postgres.pl -H 10.176.218.202 -db apigee -u apigee -dbpass postgres -action=apigee_query="select count=count" e

Observação: consulte http://bucardo.org/check_postgres/check_postgres.pl.html (em inglês) caso precise de ajuda para usar os comandos acima.

Verificações do banco de dados

Você pode verificar se as tabelas corretas foram criadas no banco de dados PostgreSQL. Faça login no banco de dados PostgreSQL usando:

psql -h /opt/apigee/var/run/apigee-postgresql/  -U apigee -d apigee

Depois execute o comando:

\d analytics."<org>.<env>.fact"

Verificar o status de integridade do processo postgres

Você pode executar a verificação de API na máquina postgres invocando o seguinte comando CURL:

http://<postgres_IP>:8084/v1/servers/self/health/

Observação: use a porta 8084.

Ele retorna o status "ACTIVE" quando o processo postgres está ativo. Se o processo postgres não estiver em execução, ele retornará o status INACTIVE.

Recursos do Postgres

Apache Cassandra

Como usar o JConsole: monitore as estatísticas de tarefas

Use o JConsole e o URL de serviço a seguir para monitorar os atributos do JMX (MBeans) oferecidos pelo JMX.

service:jmx:rmi:///jndi/rmi://<ip address>:7199/jmxrmi

em que <ip address> é o IP do servidor do Cassandra.

O JMX é ativado por padrão para o Cassandra, e o acesso remoto do JMX ao Cassandra não exige uma senha.

Para ativar a autenticação JMX e adicionar uma senha:

  1. Edite /opt/apigee/customer/application/cassandra.properties. Se o arquivo não existir, crie-o.
  2. Adicione o seguinte ao arquivo:
    conf_cassandra-env_com.sun.management.jmxremote.authenticate=true
  3. Salve o arquivo.
  4. Copie o seguinte arquivo do diretório $JAVA_HOME para /opt/apigee/data/apigee-cassandra/:
    cp ${JAVA_HOME}/lib/management/jmxremote.password.template $APIGEE_ROOT/data/apigee-cassandra/jmxremote.password
  5. Edite jmxremote.password e adicione o nome de usuário e a senha ao arquivo:
    cassandra password

    em que password é a senha do JMX.
  6. Edite ${JAVA_HOME}/lib/management/jmxremote.access e adicione o seguinte papel:
    cassandra readwrite
  7. Verifique se os arquivos são de propriedade da "apigee" e se o modo do arquivo é 400:
    > chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.*
    > chmod 400 /opt/apigee/data/apigee-cassandra/jmxremote.*
  8. Crie um arquivo no seguinte local, se ele não existir:
    /opt/apigee/customer/application/jmx_auth.sh
  9. Adicione as seguintes linhas ao arquivo jmx_auth.sh que você acabou de criar:
    export CASS_JMX_USERNAME=JMX_USERNAME
    export CASS_JMX_PASSWORD=JMX_PASSWORD
  10. Execute este comando:
    source /opt/apigee/customer/application/jmx_auth.sh
  11. Execute configure no Cassandra:
    > /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
  12. Reinicie o Cassandra:
    > /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
  13. Repita esse processo em todos os outros nós do Cassandra.

Para desativar a autenticação posteriormente:

  1. Edite /opt/apigee/customer/application/cassandra.properties.
  2. Remova a seguinte linha do arquivo:
    conf_cassandra-env_com.sun.management.jmxremote.authenticate=true
  3. Execute a configuração no Cassandra:
    > /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
  4. Reinicie o Cassandra:
    > /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
  5. Repita esse processo em todos os outros nós do Cassandra.

Estatísticas do Cassandra JMX

JMX MBeans (em inglês)

Atributos JMX

ColumnFamilies/apprepo/environments

ColumnFamilies/apprepo/organizations

ColumnFamilies/apprepo/apiproxy_revisions

ColumnFamilies/apprepo/apiproxies

ColumnFamilies/auditoria/auditorias

ColumnFamilies/audit/audits_ref

PendingTasks

MemtableColumnsCount

MemtableDataSize

ReadCount

RecentReadLatencyMicros

TotalReadLatencyMicros

WriteCount

RecentWriteLatencyMicros

TotalWriteLatencyMicros

TotalDiskSpaceUsed

LiveDiskSpaceUsed

LiveSSTableCount

BloomFilterFalsePositives

RecentBloomFilterFalseRatio

BloomFilterFalseRatio

Como usar o utilitário nodetool para gerenciar nós do cluster

O utilitário nodetool, que é uma interface de linha de comando do Cassandra, é usado para gerenciar os nós do cluster. O utilitário pode ser encontrado em /opt/apigee/apigee-cassandra/bin.

Para mais informações sobre o utilitário nodetool, consulte http://www.datastax.com/docs/1.0/references/nodetool.

É possível fazer as seguintes chamadas em todos os nós do cluster do Cassandra:

  1. Informações gerais de toque (também possíveis para um único nó do Cassandra): procure "Para cima" e "Normal" em todos os nós.
    [host]# nodetool -u username -p password -h localhost ring

    A saída do comando acima tem esta aparência:
    Address DC Rack Status State Load Owns Token
    192.168.124.201 dc1 ra1 Up Normal 1.67 MB 33.33% Normal 33.33% Normal 1.67 MB 33.33

  2. Informações gerais sobre nós (chamada por nó)
    nodetool -u username -p password -h localhost info

    A saída do comando acima tem a aparência mostrada abaixo:
    Token : 0
    Gossip ativo : true
    Carregamento: 1,67 MB
    Geração No : 1361968765: tempo de atividade: 1361968765
    Memória: 7 MB




  3. Status do servidor thrift (API de exibição do cliente)
    host]# nodetool -u username -p password -h localhost statusthrift

    A saída do comando acima mostra o status como "running".
  4. Status das operações de streaming de dados: observe o tráfego de nós cassandra
    nodetool -u username -p password -h localhost netstats 192.168.124.203

    A saída do comando acima tem a seguinte aparência:
    Mode: NORMAL
    Nothing /192.168.



Cassandra Monitoring (IU)

Consulte o URL do Datatax opscenter: http://www.datastax.com/products/opscenter.

Recurso do Cassandra

Consulte o seguinte URL: http://www.datastax.com/docs/1.0/operations/monitoring.

Apache ZooKeeper

Como verificar o status do ZooKeeper

  1. Verifique se o processo do ZooKeeper está em execução. O ZooKeeper grava um arquivo PID em opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid.
  2. Teste as portas do ZooKeeper para garantir que é possível estabelecer uma conexão TCP com as portas 2181 e 3888 em cada servidor do ZooKeeper.
  3. Certifique-se de que você possa ler valores do banco de dados do ZooKeeper. Conecte-se usando uma biblioteca de cliente do ZooKeeper (ou /opt/apigee/apigee-zookeeper/bin/zkCli.sh) e leia um valor do banco de dados.
  4. Verifique o status:
    > /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper

Como usar palavras de quatro letras do ZooKeeper

O ZooKeeper pode ser monitorado por meio de um pequeno conjunto de comandos (palavras de quatro letras) que são enviados à porta 2181 usando netcat (nc) ou telnet.

Para mais informações sobre os comandos do ZooKeeper, consulte: http://zookeeper.apache.org/doc/r3.1.2/zookeeperAdmin.html#sc_zkCommands (em inglês).

Exemplo:

  • srvr: lista todos os detalhes do servidor.
  • stat: lista breves detalhes do servidor e dos clientes conectados.

Os comandos a seguir podem ser emitidos para a porta do ZooKeeper:

  1. Execute o comando ruok de quatro letras para testar se o servidor está sendo executado em um estado sem erro. Uma resposta bem-sucedida retorna "imok".
    echo ruok | nc <host> 2181

    Retorna:
    imok
  2. Execute o comando de quatro letras, stat, para listar o desempenho do servidor e as estatísticas dos clientes conectados.
    echo stat | nc <host> 2181

    Return:
    Zookeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT
    Clientes:
    /0:0:0:0:0:0:0:1:
    Zookeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT
    Clients:
    /0:0:0:0:0:0:0:1:








  3. Se o netcat (nc) não estiver disponível, use o Python como alternativa. Crie um arquivo chamado zookeeper.py que contenha o seguinte:
    import time, socket,
    sys c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    c.connect((sys.argv[1], 2181))
    c.send(sys.arg4)






OpenLDAP

Teste de nível LDAP

Monitore o OpenLDAP para ver se as solicitações específicas estão sendo atendidas corretamente. Em outras palavras, procure uma pesquisa específica que retorne o resultado certo.

  1. Use ldapsearch (yum install openldap-clients) para consultar a entrada do administrador do sistema. Essa entrada é usada para autenticar todas as chamadas de API.
    ldapsearch -b "uid=admin,ou=users,ou=global,dc=apigee,dc=com" -x -W -D "cn=manager,dc=apigee,dc=com" -H ldap://localhost:10389 -LLL

    Você receberá uma solicitação para a senha de administrador LDAP, apigee,dc=com" -x -W -D "cn=manager,dc=apigee,dc=com" -H ldap://localhost:10389 -LLL

    Você receberá uma solicitação para digitar o objeto LDAP,











  2. Verifique se o Servidor de gerenciamento ainda está conectado ao problema LDAP:
    curl -u <userEMail>:<password> http://localhost:8080/v1/users/<ADMIN>

    Retorna:
    {
    "emailId" : <ADMIN>,
    "firstName" : "admin",
    "lastName" : "admin"
    }

Também é possível monitorar os caches do OpenLDAP, o que ajuda a reduzir o número de acessos ao disco e, assim, melhorar o desempenho do sistema. Monitorar e ajustar o tamanho do cache no servidor OpenLDAP pode afetar muito o desempenho do servidor de diretório. É possível ver os arquivos de registro (opt/apigee/var/log) para receber informações sobre o cache.