O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
JMX Tools
Ferramentas de Monitoração
2
Java Management
              eXtension




‟
    The JMX technology provides the tools for
   building distributed, Web-b...
Simple Network
Management Protocol




‟
 Simple Network Management Protocol
       (SNMP) is used in network
    manageme...
JMX    Java
SNMP   Rede


              5
SNMP
                    monitoração
                   gerenciamento




Dispositivo SNMP                   Console SNMP
...
JMX
                  monitoração
                 gerenciamento




Aplicação JMX                    Console JMX

       ...
Console SNMP
  - Nagios -




               8
Console JMX
  - MC4J -




              9
Managed Beans
        mbean




mbean           mbean




        mbean

                        10
Microkernel
                    mbean




mbean                                    mbean




                    mbean



...
JBoss




http://www.jboss.org/file-access/default/members/jbossas/freezone/docs/Server_Configuration_Guide/4/html/The_JBoss...
13
Desafio
mbean   mbean   mbean   mbean   mbean   mbean   mbean   mbean   mbean




mbean   mbean   mbean   mbean   mbean   m...
Console JMX
    nativo do
      JBoss




mbean




                 15
MBeans têm atributos




                   16
MBeans têm operações




                       17
Resultado de uma
    operação




                   18
Outros
Consoles JMX



               19
twiddle
                                                  CLI do JBoss




app/jboss-4.2.2.GA/bin$ ls
classpath.sh        ...
get             atributo


twiddle            mbean

          invoke           operação   parâmetros




                ...
./run.sh
jboss-4.2.2.GA/bin$ ./twiddle.sh get jboss.system:type=ServerInfo HostAddress
10:54:35,761 ERROR [Twiddle] Exec f...
$ ./twiddle.sh get jboss.system:type=ServerInfo HostAddress
HostAddress=192.168.1.17

$ ./twiddle.sh get jboss.system:type...
$ ./twiddle.sh invoke jboss.system:type=ServerInfo listThreadCpuUtilization
<table><tr><th>Thread Name</th><th>CPU (millis...
JConsole




http://java.sun.com/j2se/1.5.0/docs/guide/management/jconsole.html   25
JConsole
pré-requisitos




           Java5+


                    26
JConsole
                  execução




Nenhuma VM foi
encontrada para
 monitoração
                             27
JBoss AS




            JBoss não está
           preparado para o
               JConsole
                              ...
Parâmetro para
      habilitar monitoração
        via JMX console




...
                              29
Agora sim. VM do JBoss
   automaticamente
detectada pelo JConsole
                          30
Resumo de tudo




                 31
GC




As diversas regiões de memória da JVM
                                        32
33
34
MBeans da JVM
 Cadê os do JBoss?



                     35
Por padrão, o JBoss não usa
o MBean Server da VM, mas
uma implementação própria,
    chamada JBossMX




                 ...
Agora sim!




             37
Na vida real,
servidores são
  acessados
remotamente.
                 38
Arquivo de senhas
                        para acesso JMX
                            remoto




  Configuração do
arquivo ...
JConsole
               mais infos




http://java.sun.com/j2se/1.5.0/docs/guide/
   management/agent.html#jmxagent




  ...
Usar o JConsole para monitoração das mesmas
informações monitoradas pela linha de comando nos
              exercícios ant...
MC4J




http://mc4j.org   42
Parou no tempo




                 43
VisualVM




https://visualvm.dev.java.net/   44
45
java-6-sun-1.6.0.13/bin$ ls
appletviewer   javac          jinfo        native2ascii   tnameserv
apt            javadoc    ...
VisualVM
pré-requisitos




                 47
VisualVM
                    pré-requisitos
          todas são configurações no servidor remoto




Servidor RMI para     ...
Endereço do
servidor remoto




                  49
Endereço do
 agente JMX




              50
JVMs
monitoráveis no
servidor remoto




                  51
Resumo da
monitoração do
    JBoss




                 52
Monitoração do
    JBoss




                 53
Monitoração do
próprio VisualVM


   Dump da
   memória




                   54
Resumo do dump
  de memória




                 55
Memória consumida
 por cada tipo de
      objeto




                    56
Instâncias de uma
 classe específica




                    57
Threads do   Snapshot das
 servidor      threads




                            58
59
A graça do
VisualVM está em
   seus plugins

                   60
61
62
63
MBeans do JBoss



                  64
65
Troubleshooting
porque os problemas virão




                            66
Conexão estabelecida,
 mas nada acontece.




                          Inicialize o ‘jstatd’ no
                        s...
Problema de conexão com o
   agente JMX da JVM remota.
     Configure o parâmetro
java.rmi.server.hostname
 no run.conf do ...
VisualVM 1.1
tem problemas
 com JDK6u12


http://blogs.sun.com/nbprofiler/entry/visualvm_fixed_to_correctly_recognize   69
Plugin para resolver a
incompatibilidade do
  VisualVM 1.1 com
      JDK6u12




                         70
$ jstatd
Could not create remote object
access denied (java.util.PropertyPermission java.rmi.server.ignoreSubClasses write...
eclipse-jmx




http://code.google.com/p/eclipse-jmx/
                                        72
Pelo VisualVM,
acompanhar métricas
de memória, threads
  e processamento
durante os testes de
       carga.




          ...
P&R
Próximos SlideShares
Carregando em…5
×

JMX Management Tools

Tools for monitoring and controlling remote JMX servers.

  • Seja o primeiro a comentar

JMX Management Tools

  1. 1. JMX Tools Ferramentas de Monitoração
  2. 2. 2
  3. 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. 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
  5. 5. JMX Java SNMP Rede 5
  6. 6. SNMP monitoração gerenciamento Dispositivo SNMP Console SNMP 6
  7. 7. JMX monitoração gerenciamento Aplicação JMX Console JMX 7
  8. 8. Console SNMP - Nagios - 8
  9. 9. Console JMX - MC4J - 9
  10. 10. Managed Beans mbean mbean mbean mbean 10
  11. 11. Microkernel mbean mbean mbean mbean http://www.jboss.org/community/docs/DOC-10671 http://www.jboss.org/community/docs/DOC-10543 11
  12. 12. JBoss http://www.jboss.org/file-access/default/members/jbossas/freezone/docs/Server_Configuration_Guide/4/html/The_JBoss_JMX_Microkernel-An_Introduction_to_JMX.html 12
  13. 13. 13
  14. 14. Desafio mbean mbean mbean mbean mbean mbean mbean mbean mbean mbean mbean mbean mbean mbean mbean mbean mbean mbean 14
  15. 15. Console JMX nativo do JBoss mbean 15
  16. 16. MBeans têm atributos 16
  17. 17. MBeans têm operações 17
  18. 18. Resultado de uma operação 18
  19. 19. Outros Consoles JMX 19
  20. 20. twiddle CLI do JBoss app/jboss-4.2.2.GA/bin$ ls classpath.sh probe.sh twiddle.sh javassist.jar run.bat wsconsume.bat jboss-profiler-plugins.jar run.conf wsconsume.sh jboss-profiler.jar run.jar wsprovide.bat jboss-profiler.properties run.sh wsprovide.sh jboss_init_hpux.sh shutdown.bat wsrunclient.bat jboss_init_redhat.sh shutdown.jar wsrunclient.sh jboss_init_suse.sh shutdown.sh wstools.bat jmxremote.password twiddle.bat wstools.sh jmxremote.password.template twiddle.jar probe.bat twiddle.log 20
  21. 21. get atributo twiddle mbean invoke operação parâmetros 21
  22. 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. 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
  24. 24. $ ./twiddle.sh invoke jboss.system:type=ServerInfo listThreadCpuUtilization <table><tr><th>Thread Name</th><th>CPU (milliseconds)</th></tr><tr><td>DefaultQuartzScheduler_QuartzSchedulerThread</ td><td>2347</td></tr><tr><td>ScannerThread</td><td>1326</td></tr><tr><td>http-0.0.0.0-8080-1</td><td>814</td></ tr><tr><td>DestroyJavaVM</td><td>782</td></tr>(...) $ ./twiddle.sh invoke jboss.system:type=ServerInfo listMemoryPools true <b>Total Memory Pools:</b> 5<blockquote><b>Pool: Code Cache</b> (Non-heap memory)<blockquote>Peak Usage : init: 163840, used:4691136, committed:4947968, max:33554432<br>Current Usage : init:163840, used:4683776, committed:4947968, max:33554432<blockquote><br>|---------| committed:4.72Mb<br> +---------------------------------------------------------------------+<br>|/////////| | max:32Mb<br>+---------------------------------------------------------------------+<br>|--------| used:4.47Mb</ blockquote></blockquote><br><b>Pool: Eden Space</b> (Heap memory)(...) 24
  25. 25. JConsole http://java.sun.com/j2se/1.5.0/docs/guide/management/jconsole.html 25
  26. 26. JConsole pré-requisitos Java5+ 26
  27. 27. JConsole execução Nenhuma VM foi encontrada para monitoração 27
  28. 28. JBoss AS JBoss não está preparado para o JConsole 28
  29. 29. Parâmetro para habilitar monitoração via JMX console ... 29
  30. 30. Agora sim. VM do JBoss automaticamente detectada pelo JConsole 30
  31. 31. Resumo de tudo 31
  32. 32. GC As diversas regiões de memória da JVM 32
  33. 33. 33
  34. 34. 34
  35. 35. MBeans da JVM Cadê os do JBoss? 35
  36. 36. Por padrão, o JBoss não usa o MBean Server da VM, mas uma implementação própria, chamada JBossMX 36
  37. 37. Agora sim! 37
  38. 38. Na vida real, servidores são acessados remotamente. 38
  39. 39. Arquivo de senhas para acesso JMX remoto Configuração do arquivo de senhas no run.conf do JBoss 39
  40. 40. JConsole mais infos http://java.sun.com/j2se/1.5.0/docs/guide/ management/agent.html#jmxagent 40
  41. 41. Usar o JConsole para monitoração das mesmas informações monitoradas pela linha de comando nos exercícios anteriores. 41
  42. 42. MC4J http://mc4j.org 42
  43. 43. Parou no tempo 43
  44. 44. VisualVM https://visualvm.dev.java.net/ 44
  45. 45. 45
  46. 46. java-6-sun-1.6.0.13/bin$ ls appletviewer javac jinfo native2ascii tnameserv apt javadoc jmap orbd tools.policy ControlPanel javah jps pack200 unpack200 extcheck javap jrunscript policytool wsgen HtmlConverter java-rmi.cgi jsadebugd rmic wsimport i386 javaws jstack rmid xjc idlj jconsole jstat rmiregistry jar jcontrol jstatd schemagen jarsigner jdb jvisualvm serialver java jhat keytool servertool 46
  47. 47. VisualVM pré-requisitos 47
  48. 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
  49. 49. Endereço do servidor remoto 49
  50. 50. Endereço do agente JMX 50
  51. 51. JVMs monitoráveis no servidor remoto 51
  52. 52. Resumo da monitoração do JBoss 52
  53. 53. Monitoração do JBoss 53
  54. 54. Monitoração do próprio VisualVM Dump da memória 54
  55. 55. Resumo do dump de memória 55
  56. 56. Memória consumida por cada tipo de objeto 56
  57. 57. Instâncias de uma classe específica 57
  58. 58. Threads do Snapshot das servidor threads 58
  59. 59. 59
  60. 60. A graça do VisualVM está em seus plugins 60
  61. 61. 61
  62. 62. 62
  63. 63. 63
  64. 64. MBeans do JBoss 64
  65. 65. 65
  66. 66. Troubleshooting porque os problemas virão 66
  67. 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. 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. 69. VisualVM 1.1 tem problemas com JDK6u12 http://blogs.sun.com/nbprofiler/entry/visualvm_fixed_to_correctly_recognize 69
  70. 70. Plugin para resolver a incompatibilidade do VisualVM 1.1 com JDK6u12 70
  71. 71. $ jstatd Could not create remote object access denied (java.util.PropertyPermission java.rmi.server.ignoreSubClasses write) java.security.AccessControlException: access denied (java.util.PropertyPermission java.rmi.server.ignoreSubClasses write) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323) at java.security.AccessController.checkPermission(AccessController.java:546) at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) at java.lang.System.setProperty(System.java:727) at sun.tools.jstatd.Jstatd.main(Jstatd.java:122) grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission; }; $JAVA_HOME/bin/tools.policy $sudo jstatd -J-Djava.security.policy=$JAVA_HOME/bin/tools.policy 71
  72. 72. eclipse-jmx http://code.google.com/p/eclipse-jmx/ 72
  73. 73. Pelo VisualVM, acompanhar métricas de memória, threads e processamento durante os testes de carga. 73
  74. 74. P&R

×