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>"

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.