1. Home /
  2. Configurando /
  3. OpMon /
  4. Configurações /
  5. Usando jmxlist.groovy para identificar os objetos monitoráveis do JMX

Usando jmxlist.groovy para identificar os objetos monitoráveis do JMX

Objetivo

Monitorar os objetos de uma aplicação, como JBoos, Tomcat ou outro baseado em JMX.

Onde encontrar

A partir da versão 5.1 do OpMon o pacote já virá instalado e configurado no diretório /usr/local/opmon/libexec/appserver-monitor/scripts.
Dentro deste diretório existe um arquivo README>/strong> com as instruções sobre como rodar o mesmo.

Principais dependências

O jmxlist.groovy depende de alguns pacotes extras, pacotes estes que serão, a partir da versão 5.1, instalados automaticamente, são eles:

  • jdk

Pacote de desenvolvimento do java que contém os binários jconsole e javac, utilizados para teste de conexão e compilação de scripts groovy pela jvm respectivamente.

  • groovy

esta dependência é fornecida junto ao pacote do appserver-monitor até a versão 5.0, a partir da 5.1 será um pacote separado

  • jboss-client.jar

este é um arquivo que faz parte do JBOSS e fornece as diretivas para conexão

Primeiros passos

Acessar o diretório e exportar a variável de ambiente.

[root@~]# cd /usr/local/opmon/libexec/appserver-monitor/scripts/
[root@scripts]# export CLASSPATH="../daemons/:/usr/local/opmon/libexec/appserver-monitor/daemons/jboss-client.jar"

Para versões 7 ou superior, usar a string de conexão abaixo

[root@scripts]# ./jmxlist.groovy -U service:jmx:remoting-jmx://10.10.31.16:8588

Para versões 7 ou inferior, usar a string de conexão abaixo

[root@scripts]# ./jmxlist.groovy -U service:jmx:rmi:///jndi/rmi://10.10.31.16:8588/jmxrmi

Os contadores
O resultado esperado será uma lista de contadores, conforme o exemplo abaixo.

''''''''''''''''''''''''''''''''''''''''''''''''''''''
start
''''''''''''''''''''''''''''''''''''''''''''''''''''''
Catalina:j2eeType=Servlet,name=jsp,WebModule=//localhost/probe,J2EEApplication=none,J2EEServer=none
Catalina:j2eeType=Servlet,name=probe,WebModule=//localhost/probe,J2EEApplication=none,J2EEServer=none
Catalina:j2eeType=Servlet,name=default,WebModule=//localhost/,J2EEApplication=none,J2EEServer=none
Catalina:type=DataSource,path=/probe,host=localhost,class=javax.sql.DataSource,name="jdbc/global/hcpa/usu_iap/OracleDataSource"
Catalina:j2eeType=Servlet,name=uptime,WebModule=//localhost/probe,J2EEApplication=none,J2EEServer=none
Catalina:type=NamingResources,resourcetype=Context,path=/,host=localhost
Catalina:type=NamingResources,resourcetype=Context,path=/iap,host=localhost
Catalina:type=JspMonitor,name=jsp,WebModule=//localhost/,J2EEApplication=none,J2EEServer=none
Catalina:j2eeType=WebModule,name=//localhost/iap,J2EEApplication=none,J2EEServer=none
Catalina:type=Loader,path=/iap,host=localhost
java.lang:type=MemoryPool,name=Code Cache
Users:type=Role,rolename=probeuser,database=UserDatabase
...
''''''''''''''''''''''''''''''''''''''''''''''''''''''
end
''''''''''''''''''''''''''''''''''''''''''''''''''''''

Descobrindo o atributo

Após listados todos contadores, é hora de definir os atributos, para isto, escolhemos um contador específico, neste caso (java.lang:type=ClassLoading) e usamos o comando abaixo para listar as opções.

[root@scripts]# ./jmxlist.groovy -U service:jmx:rmi:///jndi/rmi://10.10.31.16:8588/jmxrmi -q java.lang:type=ClassLoading

''''''''''''''''''''''''''''''''''''''''''''''''''''''
start
''''''''''''''''''''''''''''''''''''''''''''''''''''''
java.lang:type=ClassLoading
LoadedClassCount : 3965
UnloadedClassCount : 0
TotalLoadedClassCount : 3965
Verbose : false
''''''''''''''''''''''''''''''''''''''''''''''''''''''
end
''''''''''''''''''''''''''''''''''''''''''''''''''''''

Listando todos os atributos de todos os objetos

[root@scripts]# ./jmxlist.groovy -U service:jmx:rmi:///jndi/rmi://10.10.31.16:8588/jmxrmi -a 

Executando a checagem

Agora que temos os contadores, descobrimos o atributo dele, usamos o check_jmx para efetuar a checagem, que posteriormente será colocado no OpMon.

[root@scripts]# ./check_jmx -U service:jmx:rmi:///jndi/rmi://10.10.31.16:8588/jmxrmi -O java.lang:type=ClassLoading -A LoadedClassCount
JMX OK - LoadedClassCount = 3965 | 'LoadedClassCount'=3965;;;;

Outras opções

Podemos ainda definir a unidade de medida, alerta e critico, de acordo com as opções abaixo do plugin.

[root@scripts]# ./check_jmx -h
Options are:
-h
Help page, this page.
-U
JMX URL; for example: "service:jmx:rmi://:/jndi/rmi://:/jmxrmi"
-O
Object name to be checked, for example, "java.lang:type=Memory"
-A
Attribute name
-K
Attribute key; use when attribute is a composite
-v
verbose
-w
Warning threshold value/range. Has to correspond to type of object retrieved, but
can be a regular expression for String return values.
-c
Critical threshold value/range. Has to correspond to type of object retrieved, but
can be a regular expression for String return values.
-o
Operation to invoke on MBean after querying value. Useful to
reset any statistics or counter.
-u
Units. One of B, KB, MB, TB, s, us, ms, or c for a continuous counter.
--username
Username, if JMX access is restricted; for example "monitorRole"
--password
Password

ATENÇÃO
A partir da versão 7 do Jboss não é possível realizar a checagem a partir do plugin check_jmx, deve-se utilizar o plugin jmx.sh.

[root@scripts]# ./jmx.sh -U service:jmx:remoting-jmx://10.20.10.13:9999 -q java.lang:type=ClassLoading -A LoadedClassCount
LoadedClassCount = 17360
Updated on 31/08/2021

Esse artigo foi útil para você?

Ficou com alguma dúvida?

Perguntas & Respostas

Participe da nossa comunidade e tire dúvidas ou compartilhe respostas e ideias.

Participar

Professional Support

Não encontrou a resposta que procura? Não se preocupe, estamos aqui para ajudar!

Abrir chamado

Treinamento Online

Através da plataforma Udemy, você encontra todos os treinamentos das nossas soluções.

Inscreva-se