Edge para nuvem privada v. 4.16.09
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:
> /<inst_root>/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:
> /<inst_root>/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:
> /<inst_root>/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:
> /<inst_root>/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>/platform
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
- Faça login no servidor e execute o seguinte comando:
/<inst_root>/apigee/apigee-service/bin/apigee-service edge-management-server status - Se o serviço não estiver em execução, inicie-o:
/<inst_root>/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:
- Verifique se há erros nos registros do servidor de gerenciamento (em <inst_root>/apigee/var/log/edge-management-server).
- Faça uma chamada para o servidor de gerenciamento para verificar se ele está funcionando corretamente.
- Remova o servidor do ELB e reinicie o Management Server.
/<inst_root>/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
- Faça login no servidor e execute os seguintes comandos:
/<inst_root>/apigee/apigee-service/bin/apigee-service edge-router status - Se o serviço não estiver em execução, inicie-o:
/<inst_root>/apigee/apigee-service/bin/apigee-service edge-router start - 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:
- 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:
- 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' - 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 - 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 - 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%' - 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
- http://www.postgresql.org/docs/9.0/static/monitoring.html
- http://www.postgresql.org/docs/9.0/static/diskusage.html
- http://bucardo.org/check_postgres/check_postgres.pl.html
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 pelo 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:
- Edite /<inst_root>/apigee/customer/application/cassandra.properties. Se o arquivo não existir, crie-o.
- Adicione o seguinte ao arquivo:
conf_cassandra-env_com.sun.management.jmxremote.authenticate=true - Salve o arquivo.
- Copie os seguintes arquivos do diretório $JAVA_HOME para
/<inst_root>/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 - Edite jmxremote.password e
adicione o nome de usuário e a senha ao arquivo:
cassandra password
em que password é a senha do JMX. - Edite jmxremote.access e
adicione o seguinte papel:
cassandra readwrite - Verifique se os arquivos pertencem a "apigee" e se o modo de arquivo é 400:
> chown apigee:apigee /<inst_root>/apigee/data/apigee-cassandra/jmxremote.*
> chmod 400 /<inst_root>/apigee/data/apigee-cassandra/jmxremote.* - Execute configure no
Cassandra:
> /<inst_root>/apigee/apigee-service/bin/apigee-service apigee-cassandra configure - Reinicie o Cassandra:
> /<inst_root>/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
Para desativar a autenticação mais tarde:
- Edite /<inst_root>/apigee/customer/application/cassandra.properties.
- Remova a seguinte linha do arquivo:
conf_cassandra-env_com.sun.management.jmxremote.authenticate=true - Execute a configuração no Cassandra:
> /<inst_root>/apigee/apigee-service/bin/apigee-service apigee-cassandra configure - Reinicie o Cassandra:
> /<inst_root>/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 <inst_root>/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:
- 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 - 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 - 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". - 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
- Verifique se o processo do ZooKeeper está em execução. O ZooKeeper grava um arquivo PID em <inst_root>/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid.
- 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.
- Verifique se é possível ler valores do banco de dados do ZooKeeper. Conecte-se usando uma biblioteca de cliente do ZooKeeper (ou /<inst_root>/apigee/apigee-zookeeper/bin/zkCli.sh) e leia um valor do banco de dados.
- Verifique o status:
> /<inst_root>/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:
- 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 - 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. - 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.
- 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@apigee.com - 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 (<inst_root>/apigee/var/log) para receber informações sobre o cache.