Edge para nuvem privada v. 4.16.09
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 |
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 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:
> /<inst_root>/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:
> /<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 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:
> /<inst_root>/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>/platform
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
Em que <host> é o endereço IP do servidor de gerenciamento.
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
- Faça login no servidor e execute este 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 serviço:
/<inst_root>/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:
- Verifique se há erros nos registros do Servidor de gerenciamento (em <inst_root>/apigee/var/log/edge-management-server).
- Faça uma chamada no Servidor de gerenciamento para verificar se ele está funcionando corretamente.
- Remova o servidor do ELB e reinicie o servidor de gerenciamento.
/<inst_root>/apigee/apigee-service/bin/apigee-service reinicialização do servidor de gerenciamento de borda (edge-management-server)
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
- Faça login no servidor e execute estes comandos:
/<inst_root>/apigee/apigee-service/bin/apigee-service status do Edge-router (em inglês) - 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 - 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.
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:
- 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:
- 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 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 - 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 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%' - 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
- 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: 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:
- 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/jremote.password
access/mxdatamanagement/remote.password
acesso/cpdata/remote-home - 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 são de propriedade da "apigee" e se o modo do 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 posteriormente:
- 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
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 <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.
É possível fazer as seguintes chamadas em todos os nós do cluster do Cassandra:
- 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 -h localhost ring
A saída do comando acima tem a seguinte aparência:
Address DC Status State Load Owns Token
192.168.124.201 dc1 ra1 Up Normal 1.67 MB 33,33%2.4 - Informações gerais sobre nós (chamada por nó)
nodetool -h localhost info
A saída do comando acima tem a seguinte aparência:
Token : 0
Gossip ativo : true
Carregamento: 1,67 MB
No de geração: 1361968765
Memória (tempo de atividade: 10 segundos) 8 - Status do servidor thrift (API de exibição do cliente)
host]# nodetool -h localhost statusthrift
A saída do comando acima mostra o status como "em execução". - Status das operações de streaming de dados: observe o tráfego de nós cassandra
nodetool -h localhost netstats 192.168.124.203
A saída do comando acima tem a seguinte aparência:
Mode: NORMAL
Nothing streaming to /192.168.124.124.203
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
- 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 é possível estabelecer uma conexão TCP com as portas 2181 e 3888 em cada servidor do ZooKeeper.
- Certifique-se de que você possa 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
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:
- 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 - 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: - 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.arg8 time.python.rec9
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.
- 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 o objeto LDAP, ou seja, - 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 (<inst_root>/apigee/var/log) para receber informações sobre o cache.