JMX Management Tools

5,845 views
5,628 views

Published on

Tools for monitoring and controlling remote JMX servers.

Published in: Technology
0 Comments
12 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,845
On SlideShare
0
From Embeds
0
Number of Embeds
66
Actions
Shares
0
Downloads
0
Comments
0
Likes
12
Embeds 0
No embeds

No notes for slide




  • 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.
  • Desenvolva seus próprios plugins.









  • 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

    ×