3. Java Management
eXtension
‟
The JMX technology provides the tools for
building distributed, Web-based, modular and
dynamic solutions for managing and
monitoring devices, applications, and
service-driven networks.
http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement/index.jsp 3
4. Simple Network
Management Protocol
‟
Simple Network Management Protocol
(SNMP) is used in network
management systems to
monitor network-attached devices for
conditions that warrant administrative
attention.
http://en.wikipedia.org/wiki/Simple_Network_Management_Protocol 4
21. get atributo
twiddle mbean
invoke operação parâmetros
21
22. ./run.sh
jboss-4.2.2.GA/bin$ ./twiddle.sh get jboss.system:type=ServerInfo HostAddress
10:54:35,761 ERROR [Twiddle] Exec failed
org.jboss.util.NestedRuntimeException: - nested throwable: (javax.naming.CommunicationException [Root exception is
java.rmi.ConnectException: Connection refused to host: 192.168.1.17; nested exception is:
java.net.ConnectException: Connection refused])
at org.jboss.console.twiddle.Twiddle$1.getServer(Twiddle.java:143)
at org.jboss.console.twiddle.command.MBeanServerCommand.getMBeanServer(MBeanServerCommand.java:59)
at org.jboss.console.twiddle.command.GetCommand.execute(GetCommand.java:149)
at org.jboss.console.twiddle.Twiddle.main(Twiddle.java:305)
./run.sh -b 192.168.1.17
jboss-4.2.2.GA/bin$ ./twiddle.sh get jboss.system:type=ServerInfo HostAddress
11:05:41,966 ERROR [Twiddle] Exec failed
org.jboss.util.NestedRuntimeException: Could not obtain connection to any of these urls: localhost:1099 and discovery
failed with error: javax.naming.CommunicationException: Receive timed out [Root exception is
java.net.SocketTimeoutException: Receive timed out]; - nested throwable: (javax.naming.CommunicationException: Could not
obtain connection to any of these urls: localhost:1099 and discovery failed with error:
javax.naming.CommunicationException: Receive timed out [Root exception is java.net.SocketTimeoutException: Receive timed
out] [Root exception is javax.naming.CommunicationException: Failed to connect to server localhost:1099 [Root exception
is javax.naming.ServiceUnavailableException: Failed to connect to server localhost:1099 [Root exception is
java.net.ConnectException: Connection refused]]])
./run.sh -b 0.0.0.0
jboss-4.2.2.GA/bin$ ./twiddle.sh get jboss.system:type=ServerInfo HostAddress
HostAddress=192.168.1.17
22
23. $ ./twiddle.sh get jboss.system:type=ServerInfo HostAddress
HostAddress=192.168.1.17
$ ./twiddle.sh get jboss.system:type=ServerInfo OSArch
OSArch=ppc
$ ./twiddle.sh get jboss.system:type=ServerInfo JavaVersion
JavaVersion=1.5.0_16
23
48. VisualVM
pré-requisitos
todas são configurações no servidor remoto
Servidor RMI para Endereço a ser enviado ao
receber conexões VisualVM para que se conecte
remotas ao servidor remoto
48
67. Conexão estabelecida,
mas nada acontece.
Inicialize o ‘jstatd’ no
servidor remoto e todas
as aplicações
monitoráveis serão
identificadas e
apresentadas no
VisualVM
67
68. Problema de conexão com o
agente JMX da JVM remota.
Configure o parâmetro
java.rmi.server.hostname
no run.conf do servidor remoto 68
69. VisualVM 1.1
tem problemas
com JDK6u12
http://blogs.sun.com/nbprofiler/entry/visualvm_fixed_to_correctly_recognize 69
Quer dizer, JMX está para Java assim como SNMP está para dispositivos de rede.
No caso do SNMP, ele corresponde a uma interface que externaliza dados de dispositivos, que são lidos por ferramentas especializadas.
Exemplo de console SNMP
Exemplo de console JMX
A especificação JMX define MBeans como os elementos de externalização de informações de qualquer aplicação Java.
O pessoal do JBoss se aproveitou da estrutura modular definida pela especificação JMX e usou-a na composição de seu microkernel.
Cada MBean do microkernel do JBoss é responsável por algum serviço de infra-estrutura da especificação JEE.
Então, por ter seus serviços na forma de MBeans, o JBoss pode ser monitorado por qualquer Console JMX
O grande desafio para uma boa monitarção via console JXM é conhecer a fundo as dezenas de MBeans que compõem o JBoss.
A forma mais fácil de começar a se acostumar com os MBeans do JBoss é através de seu console JMX nativo.
Mas existem vários outros Consoles JMX disponíveis no mercado.
Extremamente simples. Disponível a partir do JDK 1.5.
O JConsole está incluído nas instalações do Java5 ou superior.
Para executar, chame ‘jconsole’ no terminal.
Após reinicializar o JBoss e reconectar o JConsole, seus MBeans são apresentados.
Ao habilitar o acesso remoto (com.sun.management.jmxremote.port), a segurança é obrigatória, salvo desabilitação explícita, como fizemos, apenas para demonstração.
Um template para o arquivo de senhas pode ser encontrado em JRE_HOME/lib/management/jmxremote.password.template
Um pouco mais completo que o JConsole, mas....
...está parado desde 2005. O líder do projeto, Greg Hinkle, foi pro JON.
VisualVM pode ser baixado da Internet.....
...ou aproveitado do próprio JDK.
Já vem com o Java6
Ótimo para compreender o funcionamento da memória da JVM e dos algoritmos de Garbage Collector.
Mesma informação do jmx-console e do JConsole.