Your SlideShare is downloading. ×
0
JBoss RHQ와 Byteman을 이용한오픈소스 자바 애플리케이션 모니터링     JBoss User Group Community           RHQ Contributor                원종석
Break the Ice • 보통 개발자의 두 가지 무기에 관한 이야기 • 비상시 유용한 오픈 소스 프로젝트 소개 • 운영 서비스 모니터링은 RHQ • 운영 중인 JVM bytecode 들여다 볼 때는 Byteman •...
About me? • 그냥 딸 바보 아빠 • 오픈 소스로 일하는 보통 자바 개발자 • 대형 SI 개발, 운영, SA • Workflow 솔루션, Big Data 플랫폼 개발 • 실시간 대용량 Event 처리 플랫폼 개발...
Agenda • RHQ 소개 • Byteman 소개 • Demo                -3-
Open Source Monitoring & Management Project                    -4-
For Instance • 내가 만든 Java Application을 모니터링하고 싶다. • 장기간 지속적으로... Chart도 필요하고... Statistics도 필요하고... • 직접 만들려고 해보면 너무 일이 커지...
완전 공짜  -6-
RHQ would be one of the Solutions!                            -7-
RHQ 4’s New Features • New Ajax Dynamic GUI • Use Java SE 6 Script Feature for RHQ CLI • REST API (under development)     ...
RHQ would be one of the Solutions!                            -9-
RHQ would be one of the Solutions!                            - 10 -
RHQ would be one of the Solutions!                            - 11 -
RHQ would be one of the Solutions!                            - 12 -
RHQ Project Home                   http://rhq-project.org               http://www.jboss.org/jopr                         ...
Conclusions in Advance Step 1. RHQ Server 와 Agent 설치 Step 2. Java Application에 JMX MBean 추가 Step 3. JMX MBean 기반 Plugin De...
RHQ by JBoss • JBoss Enterprise Management Platform • JBoss Middleware 제품의 모니터링 Platform    o   JBoss AS    o   Byteman   ...
What is RHQ? • Make technologies more manageable!! • Aims to develop a common services management platform • Java 기반의 Open...
What is RHQ? • Agent의 plugin을 통해서 모니터링 정보 수집 • 필요한 plugin만 구성해서 사용하면 적절 • 실시간 모니터링 서버는 아님 - 최소 30초 주기로 모니터링 • 장기간 모니터링에 적합...
RHQ Server & Agent Architecture                            - 18 -
RHQ Management Functionality • Inventory • Monitoring • Configuration • Events • Control                          - 19 -
RHQ Management Functionality • Inventory    o 모니터링 대상 정의/등록/관리    o Resource directory • Monitoring    o Monitoring any re...
RHQ Management Functionality • Events    o WAS의 로그 에러 트래킹과 레포트 • Control    o 원격에서 operation 실행    o Operation 스케쥴링       ...
RHQ Monitor Architecture • 모니터링 대상을 Resource 라고 통칭한다.                                    OS                               ...
RHQ Agent Plugins • 다양한 리소스를 위한 Plugin 제공 • Server Plugins: Apache, Tomcat, JBoss AS • RDBMS Plugins: MySQL, PostgreSQL, O...
RHQ Related Links                     RHQ User Documentation                RHQ Server Installation Guide                 ...
RHQ / JBoss ON Team • Red Hat building in Westford, Massachusetts                                    - 25 -
RHQ Contributions • Installer UI 한글화 작업 완료 from v4.2 • GWT UI 한글화 작업 진행 중...                                         그냥 - ...
- 27 -
http://www.jboss.org/byteman            - 28 -
보통 개발자의 또 하나의 무기 Byteman       명품 영국제 무기      Thanks Andrew :-)             - 29 -
Where to use? • Performance check • System.exit() and System.gc() check • synchronized block check • Analyze 3rd party lib...
Byte(code) man(ipulation) is • 안전하게 실행 중인 JVM 안의 bytecode 들여다 보는 도구 • 디버깅 코드를 동적으로 삽입할 수 있는 도구 • Tool that simplifies trac...
Byte(code) man(ipulation) is • Java Agent API를 기반으로 Byteman Agent 구현    o java.lang.instrument API for runtime bytecode tr...
Byteman Rule Script is • Rule based scripting language • Write code to see what code is doing • Very Java oriented (almost...
Sample Byteman Rule ScriptRULE trace main entryCLASS MyAppMainMETHOD mainAT ENTRYIF trueDOtraceln("entering main")ENDRULE ...
Sample Byteman Rule ScriptRULE trace main entry => Rule nameCLASS MyAppMainMETHOD mainAT ENTRYIF trueDOtraceln("entering m...
Sample Byteman Rule ScriptRULE trace main entryCLASS MyAppMain => Event (Trigger point)METHOD mainAT ENTRYIF trueDOtraceln...
Sample Byteman Rule ScriptRULE trace main entryCLASS MyAppMainMETHOD mainAT ENTRYIF true => ConditionDOtraceln("entering m...
Sample Byteman Rule ScriptRULE trace main entryCLASS MyAppMainMETHOD mainAT ENTRYIF trueDOtraceln("entering main") => Acti...
Event Condition Action Rules • Event    o CLASS/INTERFACE, METHOD, AT        defines trigger point(s) for rule • Binding ...
Driving Byteman • Download Byteman and unzip • Set BYTEMAN_HOME • Install as “Java agent” through java options => 서버 재구동  ...
Driving Byteman • Download Byteman and unzip • Set BYTEMAN_HOME                                - 40 -
Running JBoss AS with Byteman • run-with-byteman.sh    o 시작 스크립트에 아래 두 라인 추가    o Tomcat 또한 동일BYTEMAN_OPTS="-Dorg.jboss.by...
Quick Start - MyAppMain.javapackage org.my;public class MyAppMain {    public static void main(String[] args) {        for...
Quick Start - appmain.btmMyAppMain 클래스의 main 메소드 호출 시작시에 로그를 출력하라.RULE trace main entryCLASS MyAppMainMETHOD mainAT ENTRYI...
Load Rules at JVM Start$ java -javaagent:byteman.jar=script:appmain.btmorg.my.MyAppMain foo bar bazentering mainfoobarbaz$...
Byteman Built In Methods • Tracing    o traceOpen, traceClose, traceln, traceStack, ... • Managing Shared Rule State    o ...
Refer to Byteman Programmer’s Guide   http://tedwon.com/display/dev/Byteman                    - 46 -
Byteman Versions                   - 47 -
DEMO - 48 -
• RHQ Demo   o Dashboard   o Custom Java App   o Alert   o JBoss AS Cluster Group View• Byteman Demo   o Install byteman a...
Thanksiamtedwon@gmail.com
JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링
Upcoming SlideShare
Loading in...5
×

JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링

2,371

Published on

JBoss 커뮤니티에서 제공하는 모니터링 오픈소스 플랫폼에 관한 소개입니다.

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

No Downloads
Views
Total Views
2,371
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
36
Comments
0
Likes
12
Embeds 0
No embeds

No notes for slide

Transcript of "JBoss RHQ와 Byteman을 이용한 오픈소스 자바 애플리케이션 모니터링"

  1. 1. JBoss RHQ와 Byteman을 이용한오픈소스 자바 애플리케이션 모니터링 JBoss User Group Community RHQ Contributor 원종석
  2. 2. Break the Ice • 보통 개발자의 두 가지 무기에 관한 이야기 • 비상시 유용한 오픈 소스 프로젝트 소개 • 운영 서비스 모니터링은 RHQ • 운영 중인 JVM bytecode 들여다 볼 때는 Byteman • Thanks a lot JBoss!! • 그리고 Welcome to Korea JBoss User Group!! • 언제나 환영합니다. -1-
  3. 3. About me? • 그냥 딸 바보 아빠 • 오픈 소스로 일하는 보통 자바 개발자 • 대형 SI 개발, 운영, SA • Workflow 솔루션, Big Data 플랫폼 개발 • 실시간 대용량 Event 처리 플랫폼 개발 • JBoss User Group Community 부대표 • RHQ Contributor - 한글화 작업 • tedwon.com WIKI 운영 -2-
  4. 4. Agenda • RHQ 소개 • Byteman 소개 • Demo -3-
  5. 5. Open Source Monitoring & Management Project -4-
  6. 6. For Instance • 내가 만든 Java Application을 모니터링하고 싶다. • 장기간 지속적으로... Chart도 필요하고... Statistics도 필요하고... • 직접 만들려고 해보면 너무 일이 커지고 • 돈 주고 사기에는 너무 비싸고 • 손쉽게 공짜로 사용 할 수 있는 것 어디 없을까? • 게다가 좀 더 체계적이고 다양한 기능을 제공했으면 좋겠다. -5-
  7. 7. 완전 공짜 -6-
  8. 8. RHQ would be one of the Solutions! -7-
  9. 9. RHQ 4’s New Features • New Ajax Dynamic GUI • Use Java SE 6 Script Feature for RHQ CLI • REST API (under development) -8-
  10. 10. RHQ would be one of the Solutions! -9-
  11. 11. RHQ would be one of the Solutions! - 10 -
  12. 12. RHQ would be one of the Solutions! - 11 -
  13. 13. RHQ would be one of the Solutions! - 12 -
  14. 14. RHQ Project Home http://rhq-project.org http://www.jboss.org/jopr - 13 -
  15. 15. Conclusions in Advance Step 1. RHQ Server 와 Agent 설치 Step 2. Java Application에 JMX MBean 추가 Step 3. JMX MBean 기반 Plugin Descriptor XML 파일 정의 Step 4. 나의 Application용 JMX Plugin을 RHQ Server에 등록 Step 5. 모니터링 및 관리 시작!! - 14 -
  16. 16. RHQ by JBoss • JBoss Enterprise Management Platform • JBoss Middleware 제품의 모니터링 Platform o JBoss AS o Byteman o Hibernate o HornetQ o Infinispan o BlackTie o Mobicents o CirrAS o etc ... - 15 -
  17. 17. What is RHQ? • Make technologies more manageable!! • Aims to develop a common services management platform • Java 기반의 Open Source System Management Project • Sigar API 를 사용하여 System Information Gathering (CPU, Mem) • JMX 기술 기반으로 원격 관리 기능 제공 - JMX Plugin • OS 플랫폼에서 Server 리소스까지 전반적인 모니터링/관리 기능 제공 - 16 -
  18. 18. What is RHQ? • Agent의 plugin을 통해서 모니터링 정보 수집 • 필요한 plugin만 구성해서 사용하면 적절 • 실시간 모니터링 서버는 아님 - 최소 30초 주기로 모니터링 • 장기간 모니터링에 적합 - 17 -
  19. 19. RHQ Server & Agent Architecture - 18 -
  20. 20. RHQ Management Functionality • Inventory • Monitoring • Configuration • Events • Control - 19 -
  21. 21. RHQ Management Functionality • Inventory o 모니터링 대상 정의/등록/관리 o Resource directory • Monitoring o Monitoring any resource o Automatic discovery of resources o Monitoring for availability and performance o Complex alerting • Configuration o Configuration management o Audited, validated configuration editing and history - 20 -
  22. 22. RHQ Management Functionality • Events o WAS의 로그 에러 트래킹과 레포트 • Control o 원격에서 operation 실행 o Operation 스케쥴링 - 21 -
  23. 23. RHQ Monitor Architecture • 모니터링 대상을 Resource 라고 통칭한다. OS Process - 22 -
  24. 24. RHQ Agent Plugins • 다양한 리소스를 위한 Plugin 제공 • Server Plugins: Apache, Tomcat, JBoss AS • RDBMS Plugins: MySQL, PostgreSQL, Oracle • Java JMX Plugin • C daemon 프로세스 (Ex: Scribe Log Aggregator) • 필요에 맞는 Custom Plugin 제작 가능 • http://rhq-project.org/display/RHQ/Plugin+Community - 23 -
  25. 25. RHQ Related Links RHQ User Documentation RHQ Server Installation Guide RHQ Server Users Guide RHQ Agent Users Guide Frequently Asked Questions http://tedwon.com/display/dev/RHQ - 24 -
  26. 26. RHQ / JBoss ON Team • Red Hat building in Westford, Massachusetts - 25 -
  27. 27. RHQ Contributions • Installer UI 한글화 작업 완료 from v4.2 • GWT UI 한글화 작업 진행 중... 그냥 - Ted Won Red Hat - Heiko Rupp - 26 -
  28. 28. - 27 -
  29. 29. http://www.jboss.org/byteman - 28 -
  30. 30. 보통 개발자의 또 하나의 무기 Byteman 명품 영국제 무기 Thanks Andrew :-) - 29 -
  31. 31. Where to use? • Performance check • System.exit() and System.gc() check • synchronized block check • Analyze 3rd party library, WAS, etc - 30 -
  32. 32. Byte(code) man(ipulation) is • 안전하게 실행 중인 JVM 안의 bytecode 들여다 보는 도구 • 디버깅 코드를 동적으로 삽입할 수 있는 도구 • Tool that simplifies tracing and testing of Java programs • Bytecode Injection 방식 사용 • 재컴파일, 재구동 없이 실행 중인 애플리케이션에 bytecode inject 가능 • Works by modifying the bytecode of your application at runtime o 소스 코드 없이 동적으로 bytecode를 직접 변경 - 30 -
  33. 33. Byte(code) man(ipulation) is • Java Agent API를 기반으로 Byteman Agent 구현 o java.lang.instrument API for runtime bytecode transformation • Byteman is a Java agent program o Retransform code only after load • Injected codes are reversible o Inject된 bytecode는 다시 원복 가능 - 31 -
  34. 34. Byteman Rule Script is • Rule based scripting language • Write code to see what code is doing • Very Java oriented (almost all Java) • We inject codes through rule script files • Event Condition Action (ECA) 으로 정의하는 scripting language • Dynamically load, reload or unload rules • BTrace는 rule 대신 annotation-oriented script 정의 - 32 -
  35. 35. Sample Byteman Rule ScriptRULE trace main entryCLASS MyAppMainMETHOD mainAT ENTRYIF trueDOtraceln("entering main")ENDRULE - 33 -
  36. 36. Sample Byteman Rule ScriptRULE trace main entry => Rule nameCLASS MyAppMainMETHOD mainAT ENTRYIF trueDOtraceln("entering main")ENDRULE - 34 -
  37. 37. Sample Byteman Rule ScriptRULE trace main entryCLASS MyAppMain => Event (Trigger point)METHOD mainAT ENTRYIF trueDOtraceln("entering main")ENDRULE - 35 -
  38. 38. Sample Byteman Rule ScriptRULE trace main entryCLASS MyAppMainMETHOD mainAT ENTRYIF true => ConditionDOtraceln("entering main")ENDRULE - 36 -
  39. 39. Sample Byteman Rule ScriptRULE trace main entryCLASS MyAppMainMETHOD mainAT ENTRYIF trueDOtraceln("entering main") => ActionENDRULE - 37 -
  40. 40. Event Condition Action Rules • Event o CLASS/INTERFACE, METHOD, AT  defines trigger point(s) for rule • Binding o introduces/initializes rule variables • Condition o Java boolean expression • Action o one or more Java expressions - 38 -
  41. 41. Driving Byteman • Download Byteman and unzip • Set BYTEMAN_HOME • Install as “Java agent” through java options => 서버 재구동 -javaagent:$BYTEMAN_HOME/lib/byteman.jar=agentoptions o script:script.btm install rules from script.btm at agent startup o boot:my.jar add my.jar to bootstrap classpath o sys:my.jar add my.jar to system classpath o listener:true start up agent listener o port:999 use listener port 999 o address:192.168.0.1 use listener host 192.168.0.1 - 39 -
  42. 42. Driving Byteman • Download Byteman and unzip • Set BYTEMAN_HOME - 40 -
  43. 43. Running JBoss AS with Byteman • run-with-byteman.sh o 시작 스크립트에 아래 두 라인 추가 o Tomcat 또한 동일BYTEMAN_OPTS="-Dorg.jboss.byteman.verbose=true -Dorg.jboss.byteman.debug=true -Dorg.jboss.byteman.transform.all -javaagent:byteman.jar= script:my-byteman-rules.txt ,boot:byteman.jar ,boot:byteman-sample.jar ,sys:byteman-sample.jar ,listener:true ,port:9551 ,address:127.0.0.1"JAVA_OPTS="$BYTEMAN_OPTS -Xms1g -Xmx1g $JAVA_OPTS" - 41 -
  44. 44. Quick Start - MyAppMain.javapackage org.my;public class MyAppMain { public static void main(String[] args) { for (int i = 0; i < args.length; i++) { System.out.println(args[i]); } }}$ java org.my.MyAppMain foo bar bazfoobarbaz - 42 -
  45. 45. Quick Start - appmain.btmMyAppMain 클래스의 main 메소드 호출 시작시에 로그를 출력하라.RULE trace main entryCLASS MyAppMainMETHOD mainAT ENTRYIF trueDO traceln("entering main")ENDRULE - 43 -
  46. 46. Load Rules at JVM Start$ java -javaagent:byteman.jar=script:appmain.btmorg.my.MyAppMain foo bar bazentering mainfoobarbaz$ - 44 -
  47. 47. Byteman Built In Methods • Tracing o traceOpen, traceClose, traceln, traceStack, ... • Managing Shared Rule State o flag, clear, countDown, incrementCounter, ... • Timing o createTimer, getElapsedTime, resetTimer • Checking Caller Stack o callerEquals, callerMatches • Thread Synchronization o delay, waitFor, signalWake, rendezvous, ... • Recursive Trigger Management o setTriggering - 45 -
  48. 48. Refer to Byteman Programmer’s Guide http://tedwon.com/display/dev/Byteman - 46 -
  49. 49. Byteman Versions - 47 -
  50. 50. DEMO - 48 -
  51. 51. • RHQ Demo o Dashboard o Custom Java App o Alert o JBoss AS Cluster Group View• Byteman Demo o Install byteman agent at start up o Install byteman agent into a running jvm o Load Rule o Unload Rule• Byteman Plugin Demo o Autodiscovery Byteman Agent o Monitor Byteman Agent Availability & Rules - 49 -
  52. 52. Thanksiamtedwon@gmail.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×