Monitoração da JVM via JMX e SNMP

Este post apresenta de forma sucinta os passos necessários para configuração dos agentes JMX e SNMP na Máquina Virtual Java (JVM) assim como exemplos de utilização das ferramentas jconsole e snmpwalk para monitoração. Esse conteúdo é baseado na documentação de gerenciamento da JDK Sun/Oracle.

A instalação padrão da JRE/JDK possui um modelo dos arquivos management.properties e snmp.acl com todas as configurações disponíveis (ambos em $JAVA_HOME/jre/lib/management/). Para facilitar a leitura e manutenção recomendo criar estes arquivos na estrutura de diretórios da sua aplicação, principalmente porque isso será necessário caso queira monitorar mais de uma JVM na mesma máquina (ver exemplo do Tomcat abaixo).

snmp.acl

Crie o arquivo snmp.acl no local desejado com as linhas abaixo. Tenha em mente que o dono desse arquivo deve ser o mesmo do processo da JVM, a não ser que esteja executando com root que não é recomendável, diga-se de passagem:

acl = {
  {
    communities = public, private
    access = read-only
    managers = 0.0.0.0/0
  }
}

altere as permissões do mesmo para 600 (leitura e escrita apenas para o dono):

chmod 600 <CAMINHO_ARQUIVO_SNMP_ACL>

management.properties

Crie o arquivo management.properties no local desejado e insira as linha a seguir. Neste exemplo utilizamos as portas 9998 e 9999 para os agentes SNMP e JMX consecutivamente. Não esqueça de substituir <CAMINHO_ARQUIVO_SNMP_ACL> pelo caminho absoluto do arquivo snmp.acl:

com.sun.management.jmxremote.port=9999
com.sun.management.jmxremote.authenticate=false
com.sun.management.jmxremote.ssl=false
com.sun.management.snmp.port=9998
com.sun.management.snmp.interface=0.0.0.0
com.sun.management.snmp.acl.file=<CAMINHO_ARQUIVO_SNMP_ACL>

Inicialização da JVM

Adicione o seguinte parâmetro na inicialização da JVM:

-Dcom.sun.management.config.file=<CAMINHO_ARQUIVO_MANAGEMENT_PROPERTIES>

 

Tomcat

Sugiro o seguinte padrão para a configuração dos agentes no Tomcat:

  • Crie os arquivos management.properties e snmp.acl no diretório $CATALINA_BASE/conf.
  • Crie ou edite o arquivo $CATALINA_HOME/bin/setenv.sh e adicione a linha a seguir. O script catalina.sh carrega esse arquivo na inicialização caso exista:
    CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.config.file=<CAMINHO_MANAGEMENT_PROPERTIES>"

IP Communications 2008

Esse post está uns 3 meses atrasado, mas como diz o ditado “antes tarde do que nunca”.

Nos dias 4 e 5 de Dezembro de 2008 a Voice Technology esteve presente na IPCommunications 2008 ministrando duas palestras sobre VoIP. Foi nossa primeira experiência como palestrantes em um evento desse porte e com certeza o ponta pé inicial para tentar criar essa cultura dentro da empresa.

Trabalhamos a mais de 4 anos com o desenvolvimento de produtos e serviços VoIP mas até então não havíamos trabalhado para expor e compartilhar esse conhecimento com o mercado e principalmente com a comunidade de Software Livre e Código Aberto, visto que utilizamos vários sistemas, ferramentas e frameworks opensource em nosso dia-a-dia e sabemos que é nosso dever devolver algo para a comunidade, seja através de software ou passando esse conhecimento adiante. Essa troca é um fator fundamental para o bom funcionamento desse ecossistema e com certeza é o que nós e a Voice queremos que aconteça.

Nosso colega André Pantalião escreveu dois posts no blog Ensinar (outra iniciativa para compartilhar nosso conhecimento) sobre o evento: IPComm 2008 – Palestra do Hack e Noel e IPComm 2008 – Palestra do Antonio e do Sakuma

E a seguir estão os slides das duas apresentações. Fiquem a vontade para entrar em contato se tiverem críticas, dúvidas, sugestões ou interesse em mais detalhes sobre as apresentações:

OpenSER em Cluster utilizando IPVS e Keepalived
Por Marcos Hack e Noel Rocha

Testes de performance em plataformas SIP utilizando SIPP
Por Antônio Anderson e Daniel Sakuma

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.