Como monitorar

Edge para nuvem privada v. 4.17.01

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

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, é necessário ativar o JMX individualmente para cada componente.

Cada componente é compatível com 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
processador de mensagens 1101 /opt/apigee/edge-mesage-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 Management Server, abra /opt/apigee/edge-management-server/bin/start em um editor. A seguinte linha será usada para iniciar o Management Server:

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 

Observe que essa linha especifica o número da porta JMX como 1099 para o Management Server. Defina o número da porta para cada componente, conforme definido na 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 usa JMX. O JMX é ativado por padrão, e o acesso remoto ao JMX não exige senha.

Para ativar a autenticação JMX, cada componente tem uma ação change_jmx_auth que você usa para ativar/desativar a autenticação e definir as credenciais JMX.

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

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

em que:

  • 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 (desativar)
  • O arquivo de configuração inclui:
    • JMX_USERNAME=username
    • JMX_ENABLED=y/n
    • JMX_PASSWORD=password (se não for definido ou transmitido com -p, você receberá uma solicitação)

Por exemplo, para usar 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 esse comando em todos os nós, especificando o mesmo nome de usuário e senha.

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

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

Servidor de gerenciamento

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

Use o JConsole (uma ferramenta compatível com JMX) para gerenciar e monitorar a verificação de integridade e as estatísticas de processo. Com o JConsole, é possível consumir estatísticas de JMX expostas pelo Management Server (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 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 respectivo servidor). Por padrão, a porta é 1099 para o servidor de gerenciamento.

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

MBeans JMX

Atributos JMX

Memória

HeapMemoryUsage

NonHeapMemoryUsage

Uso

Observação:os valores do atributo serão exibidos em quatro valores: confirmado, inicial, máximo e usado.

Como usar as verificações da API Edge Application

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

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

Em que <host> é o endereço IP do servidor de gerenciamento.

Essa chamada retorna "true" e "false". Se for 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 o seguinte 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:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server start

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

O servidor de gerenciamento desempenha um papel fundamental na união de todas as outras parcelas em cada instalação no local. Para verificar o status do usuário, da organização e da implantação no servidor de gerenciamento, emita 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 vai mostrar o status "implantado" para todas as chamadas. Se isso falhar, 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 para o servidor de gerenciamento para verificar se ele está funcionando corretamente.
  3. Remova o servidor do ELB e reinicie o Management Server.
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart

Roteador

É possível realizar 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 "true" e "false". Se for verdadeiro, significa que o nó está ativo e o serviço do 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 os seguintes comandos:
    /<inst_root>/apigee/apigee-service/bin/apigee-service edge-router status
  2. Se o serviço não estiver em execução, inicie-o:
    /<inst_root>/apigee/apigee-service/bin/apigee-service edge-router start
  3. Após a reinicialização, verifique se ele está funcionando
    curl -v http://localhost:port/v1/servers/self/up

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

processador de mensagens

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

Siga as mesmas instruções descritas acima para o servidor de gerenciamento.

Observação: use a porta 1101.

Como usar as verificações da API Edge Application

Siga as mesmas instruções descritas acima para o roteador.

Observação: use a porta 8082.

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

Siga as mesmas instruções 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 processar informações

Siga as mesmas instruções descritas acima para o servidor de gerenciamento.

Observação: use a porta 1102.

Como usar as verificações da API Edge Application

Siga as mesmas instruções descritas acima para o servidor de gerenciamento.

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

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

Servidor Postgres

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

Siga as mesmas instruções descritas acima para o servidor de gerenciamento.

Observação: use a porta 1103.

Como usar as verificações da API Edge Application

Siga as mesmas instruções 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 as verificações de organização e ambiente do aplicativo do Edge

Para verificar o nome da organização e do ambiente que estão integrados ao servidor do Postgres, emita os seguintes comandos CURL:

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

Observação: use a porta 8084.

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

Como usar a verificação axstatus do aplicativo de borda

Verifique 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 vai 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

Como usar 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 ser instalado em cada nó do Postgres.

Antes de executar o script:

  1. Verifique se você instalou o perl-Time-HiRes.x86_64, um módulo Perl que implementa timers de alarme, suspensão, gettimeofday e timer com marcação de intervalos de alta resolução. Por exemplo, é possível 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 o 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 com o 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 backends
  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 em disco: verifica o espaço em 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=custom_query --query="select count(*) as result from pg_tables where schemaname='analytics' and tablename like '%fact'" --warning='80' --critical='90' --valtype=integer

Observação: consulte http://bucardo.org/check_postgres/check_postgres.pl.html se precisar de ajuda para usar os comandos acima.

Verificações de banco de dados

Verifique se as tabelas adequadas foram criadas no banco de dados PostgreSQL. Faça login no banco de dados do PostgreSQL usando:

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

e execute:

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

Verificar o status de integridade do processo postgres

Para realizar a verificação da API na máquina do Postgres, invoque 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 do Postgres está ativo. Se o processo do postgres não estiver em execução, ele vai retornar o status "INACTIVE".

Recursos do Postgres

Apache Cassandra

Como usar o JConsole: monitorar estatísticas de tarefas

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

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

em que <endereço IP> é o endereç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 requer 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 os seguintes arquivos 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

    cp ${JAVA_HOME}/lib/management/jmxremote.access $APIGEE_ROOT/data/apigee-cassandra/jmxremote.access
  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 jmxremote.access e adicione o seguinte papel:
    cassandra readwrite
  7. Verifique se os arquivos pertencem à "apigee" e se o modo de arquivo é 400:
    > chown apigee:apigee /opt/apigee/data/apigee-cassandra/jmxremote.*
    > chmod 400 /opt/apigee/data/apigee-cassandra/jmxremote.*
  8. Execute configure no Cassandra:
    > /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
  9. Reinicie o Cassandra:
    > /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart

Para desativar a autenticação mais tarde:

  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

Estatísticas do Cassandra JMX

MBeans JMX

Atributos JMX

ColumnFamilies/apprepo/environments

ColumnFamilies/apprepo/organizations

ColumnFamilies/apprepo/apiproxy_revisions

ColumnFamilies/apprepo/apiproxies

ColumnFamilies/audit/audits

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 de cluster

O utilitário nodetool, que é uma interface de linha de comando para o Cassandra, é usado para gerenciar nós de 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.

As seguintes chamadas podem ser feitas em todos os nós do cluster do Cassandra:

  1. Informações gerais do anel (também possível para um único nó do Cassandra): procure por "Up" e "Normal" em todos os nós.
    [host]# nodetool -h localhost ring

    A saída do comando acima é mostrada abaixo:
    Address DC Rack Status State Load Owns Token
    192.168.124.201 dc1 ra1 Up Normal 1.67 MB 33,33% 0
    192.168.124.202 dc1 ra1 Up Normal 1.68 MB 33,33% 56713727820156410577229101238628035242
    192.168.124.203 dc1 ra1 Up Normal 1.67 MB 33,33% 113427455640312821154458202477256070484
  2. Informações gerais sobre nós (chamada por nó)
    nodetool -h localhost info

    A saída do comando acima é mostrada abaixo:
    Token : 0
    Gossip active : true
    Load : 1.67 MB
    Generation No : 1361968765
    Uptime (seconds) : 78108
    Heap Memory (MB) : 46,80 / 772,00
    Data Center : dc1
    Rack : ra1
    Exceptions : 0
  3. Status do servidor Thrift (exibindo a API do cliente)
    host]# nodetool -h localhost statusthrift

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

    A saída do comando acima é mostrada abaixo:
    Mode: NORMAL
    Nothing streaming to /192.168.124.203
    Nothing streaming from /192.168.124.203
    Pool Name Active Pending Completed
    Commands n/a 0 1688
    Responses n/a 0 292277

Monitoramento do Cassandra (interface)

Consulte o URL do datastax 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 seja possível estabelecer uma conexão TCP com as portas 2181 e 3888 em cada servidor do ZooKeeper.
  3. Verifique se é possível 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 status

Como usar as palavras de quatro letras do ZooKeeper

O ZooKeeper pode ser monitorado por um pequeno conjunto de comandos (palavras de quatro letras) que são enviados para a 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.

Exemplo:

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

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

  1. Execute o comando de quatro letras ruok para testar se o servidor está em execução em um estado sem erros. 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 de clientes conectados.
    echo stat | nc <host> 2181

    Retorna:
    Zookeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT
    Clients:
    /0:0:0:0:0:0:0:1:33467[0](queued=0,recved=1,sent=0)
    /192.168.124.201:42388[1](queued=0,recved=8433,sent=8433)
    /192.168.124.202:42185[1](queued=0,recved=1339,sent=1347)
    /192.168.124.204:39296[1](queued=0,recved=7688,sent=7692)
    Latency min/avg/max: 0/0/128
    Received: 26144
    Sent: 26160
    Connections: 4
    Outstanding: 0
    Zxid: 0x2000002c2
    Mode: follower
    Node count: 283

    Observação: às vezes, é importante ver se um ZooKeeper está no modo: líder, seguidor ou observador.
  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.argv[2])
    time.sleep(0.1)
    print c.recv(512)


    Agora execute as seguintes linhas do Python:
    python zookeeper.py 192.168.124.201 ruok
    python zookeeper.py 192.168.124.201 stat

OpenLDAP

Teste de nível de LD

É possível monitorar o OpenLDAP para ver se as solicitações específicas são atendidas corretamente. Em outras palavras, verifique se uma pesquisa específica retorna 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

    Em seguida, será solicitada a senha de administrador do LDAP:
    Enter LDAP Password:

    Depois de inserir a senha, você verá uma resposta no formulário:
    dn: uid=admin,ou=users,ou=global,dc=apigee,dc=com
    objectClass: organizationalPerson
    objectClass: person
    objectClass: inetOrgPerson
    objectClass: top
    uid: admin
    cn: admin
    sn: admin
    userPassword:: e1NTSEF9bS9xbS9RbVNXSFFtUWVsU1F0c3BGL3BQMkhObFp2eDFKUytmZVE9PQ=
    =
    mail: opdk@google.com
  2. Verifique se o servidor de gerenciamento ainda está conectado ao problema do 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, que ajudam a reduzir o número de acessos ao disco e, portanto, melhoram o desempenho do sistema. Monitorar e ajustar o tamanho do cache no servidor OpenLDAP pode afetar muito o desempenho do servidor do diretório. É possível visualizar os arquivos de registro (opt/apigee/var/log) para receber informações sobre o cache.