공부/Java
JavaAgnet
ironk.im
2021. 5. 9. 11:43
반응형
JavaAgent란?
Java 프로그램이 시작할 때 JVM에 의해 클래스로딩이 수행되는 시점에 자바 바이트 코드를 변조를 할 수 있도록 해주는 프로그램이다
이를 통해 별도의 메인 프로그램의 코드를 변경하지 않고도 프로그램에 대한 모니터링 등을 수행 할 수 있다
프로그램의 원본 코드를 수정하지 않아도 모니터링을 할 수 있기 때문에 APM툴에서 많이 사용되고 있다
JavaAgent 실행 방법
JavaAgent는 JVM 옵션을 통해 실행할 JavaAgent를 지정하여 실행할 수 있다
-javaagnet:jarpath[=options]
**ex)**
-javaagent: /home/monitoring/monitoring.jar
JavaAgent 동작 원리
- Java 애플리케이션 실행을 위해 JVM이 실행 되면서 JavaAgent의 Premain 함수 수행
- ClassFileTransformer 구현체 로딩
- Class Loader에 의해 Java 애플리케이션 Class File 로딩 시 Class 파일 ClassFileTransformer에 의해 바이트 코드 변경
- 변경된 바이트 코드 로딩
반응형