scouter
scouter copied to clipboard
java.agent plugin 이용 시 hook 안되는 이슈
spring
resttemplate을 이용하여 통신하는데 tls 버전 이슈가 있어,
sun.security.ssl.SSLSocketImpl를 capture.plug 이용하여 profile를 남기려고 하는데 hook 이 안되는 거 같네요
설정은 아래와 같이 하였습니다.
<capture.plug> [args] // void capArgs(WrContext $ctx, HookArgs $hook) { $ctx.profile("[capArgs] class name : " + $hook.getThis().getClass().getName()); ...
<scouter.conf> hook_args_patterns=sun.security.ssl.SSLSocketImpl.*
참고로 sun.security.ssl.SSLSocketImpl 클래스에 메소드 호출은 profile_socket_open_fullstack_enable=true로 확인 하였습니다.
scouter.util.ThreadUtil.getThreadStack(ThreadUtil.java:109)
scouter.agent.trace.TraceApiCall.endSocket(TraceApiCall.java:259)
java.net.Socket.connect(Socket.java:621)
sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:666)
sun.net.NetworkClient.doConnect(NetworkClient.java:175)
sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
sun.net.www.protocol.https.HttpsClient.
hook_ 로 시작하는 설정 변경시에 재기동 필요합니다. agent가 설정된 jvm 재기동 후에 한번 확인해 보세요.
그게 원인이 아니라면 Socket 클래스가 bci 작동 이전에 preload 되어서 그럴 수 있습니다. 이 이슈라면 해결이 쉽지 않을 수 있으니 sun.net.NetworkClient.doConnect
나 더 하위 stack의 method에 걸어보세요.