Java Agent 2.2.0
배포일: 2022-11-01
Feature
virtual 애플리케이션에서 logsink 데이터를 생성하도록 기능 추가
Feature
logsink의 stdout 로그도 txid 정보를 연결할 수 있도록 기능 추가
Feature
2초 데이터 수집 기능 추가
* 수집 데이터
경과시간
액티브 트랜잭션
gc 정보: gc건수, gc경과시간, old generation gc건수, old generation gc경과시간
OS 정보
fast_perf_enabled=false
fast_perf_interval=2000
fast_perf_gc_enabled=true
fast_perf_os_enabled=true
debug_fast_perf_enabled=false
Feature
액티브 트랜잭션 건수에 따라 알림을 보내도록 기능 추가
-
액티브 트랜잭션 기준 건수는 `too_many_actx_alert_count >= (too_many_actx_alert_over_time / 5000)`으로 결정
-
액티브 트랜잭션 기준 건수와 같거나 초과하는 경우
too_many_actx_alert_msg_url_count
만큼의 url 정보를 알림 메시지에 추가해 알림 전송
# 액티브 트랜잭션 알림 설정 여부
too_many_actx_alert_enabled=false
# 액티브 트랜잭션 알림 무시 시간 (ms)
too_many_actx_alert_silent_time=30000
# 액티브 트랜잭션 알림 기준 건수
too_many_actx_alert_count=50
# 액티브 트랜잭션 알림 메시지 표시 건수
too_many_actx_alert_msg_url_count=5
# 액티브 트랜잭션 알림 기준 시간
too_many_actx_alert_over_time=30000
Feature
디버그 대상 패턴을 등록한 경우 프로파일과 에이전트 로그에서 스텍을 확인할 수 있는 기능 추가
hook_method_debug_enabled=true
hook_method_debug_patterns=
Feature
플러그인 활용 클래스 추가
-
{AGENT_HOME}/plugin/{…}.x 파일에서 활용하도록 HashTable 클래스 추가
-
`whatap.agent.api.Ref.h`를 이용하면 HashTable 활용 가능
Class hashTable = (Class) whatap.agent.api.Ref.h;
Feature
TTA BMT를 위한 전용 클래스들 추가
# map
bmt.m.MyMap
# datasource
bmt.ds.MyDataSource
bmt.ds.MyConnection
# jdbc
bmt.jdbc.Config
bmt.jdbc.FakeBlob
bmt.jdbc.FakeClob
bmt.jdbc.FakeConnection
bmt.jdbc.FakeDatabaseMetaData
bmt.jdbc.FakeDriver
bmt.jdbc.FakeCallableStatement
bmt.jdbc.FakePreparedStatement
bmt.jdbc.FakeResultSet
bmt.jdbc.FakeStatement
bmt.jdbc.FakeSocket
bmt.jdbc.Lock
# Connection Pool 추적
# ConnectionPoolASM
target.put("bmt/ds/MyDataSource", MyDataSource.className);
# Connection Pool 추적
# DBConCountCollectorThread
add(new MyDataSource());
# JDBC Connection 추적
# JDBCConnectionOpenASM
AsmUtil.add(reserved, "bmt/ds/MyDataSource", "getConnection()Ljava/sql/Connection;");
# JDBC Statement 추적
# JDBCStatementASM
target.add("bmt/jdbc/FakeStatement");
# JDBC PreparedStatement 추적
# JDBCPreparedStatementASM
target.add("bmt/jdbc/FakePreparedStatement");
# JDBC ResultSet 추적
# JDBCResultSetASM
target.add("bmt/jdbc/FakeResultSet");
Feature
프로파일에 에러 스텝을 추가하는 기능 추가 + 설정 추가해 프로파일에 에러 관련 정보 표시 스텝 추가
profile_error_step_enabled=false
Feature
임의의 jmx 정보를 추가 조회 기능 추가
perfx_tomcat_enabled=false
perfx_jmx_value_limit=100
perfx_jmx_tag_from_objectname_enabled=false
perfx_jmx_enabled=true
perfx_jmx@test1=Catalina:type=Connector,*
perfx_jmx@test2=java.lang:type=GarbageCollector,*
perfx_jmx_ignore@test2=LastGcInfo
# perfx_debug_enabled=true
# perfx_jmx_tag_from_objectname_enabled=false
Feature
oshi 라이브러리 활용, 프로세스의 rss 데이터를 추적하는 기능 추가
oshi_proc_mem_enabled=false
Feature
`org.edb.jdbc.PgCallableStatement`를 jdbc statement 추적 기능 추가
Feature
오라클 프로시저에서 SQL 파라미터를 추적하는 기능 추가 + CallableStatement에서 SQL 파라미터를 추적하는 기능 추가
Feature
Weblogic에서 `HttpURLConnection`으로 http 호출을 하는 경우 `weblogic.net.http.HttpURLConnection`을 사용하는 것을 추적하는 기능 추가
HttpURLConnection_weblogic=true
Feature
sigar 라이브러리를 활용, 프로세스의 네이티브 메모리 데이터(proc_mem_rss)를 수집하는 기능 추가
Feature
기존 30초 평균으로 수집한 tps 데이터를 5초 평균으로 수집하는 기능 추가
service_metrics_spike_enabled=false
Feature
프로파일 데이터 압축 전송 기능 추가
-
프로파일 데이터가
profile_zip_max_buffer_size
크기를 넘는 경우 프로파일 데이터를 전송 -
큐에 데이터가 쌓인지
profile_zip_max_wait_time
값을 넘은 경우 프로파일 데이터를 전송 -
프로파일 데이터를 전송할 때 큐에 있는 프로파일 데이터가
profile_zip_min_size
크기 미만인 경우를 제외하고는 프로파일 데이터를 압축 전송
# 프로파일 데이터 압축 여부
profile_zip_enabled=true
# 프로파일 데이터들을 가지고 있을 큐 사이즈
# ZipProfileThread.java가 사용하는 RequestQueue 사이즈를 결정
profile_zip_queue_size=1000
# 프로파일 데이터를 보내는 대기 시간
# 1000ms 지난 경우 프로파일 데이터 전송
profile_zip_max_wait_time=1000
# 프로파일 데이터 버퍼 사이즈
# 프로파일 데이터가 1MB가 넘는 경우 데이터를 전송
profile_zip_max_buffer_size=1024*1024
# 프로파일 데이터 압축 여부 결정 최소 사이즈
# 프로파일 데이터가 100byte 미만인 경우 압축하지 않음
profile_zip_min_size=100
# 프로파일 데이터 압축 디버그 여부
# 프로파일 데이터 전송 관련 정보(ZipPack의 status, recordCount, buffer 사이즈, 프로파일 데이터 큐 사이즈)를 에이전트 로그에 출력
debug_profile_zip_enabled=false
# 프로파일 데이터 압축 디버그 로그 출력 간격
# 프로피알 데이터 압축 디버그 옵션이 켜져 있는 경우 5000ms 간격으로 프로파일 데이터 전송 관련 정보를 에이전트 로그에 출력
debug_profile_zip_interval=5000
Change
logsink 데이터 전송 주기인 `max_wait_time`을 `logsink_max_wait_time`으로 옵션 이름 수정
Change
플러그인에서 수집하는 CustomCounter 기능을 기존 CustomCounterTask 대신에 CustomTaskLoader로 대체
custom_task_enabled=true
custom_task_jarfile={full_path}
Change
에이전트-proxy간 서버시간 차이가 10초 이상인 경우 로그를 출력하도록 기능 추가
Change
트랜잭션과 프로파일 경과시간 측정 시 시스템 시간이 아닌 JVM 시간을 사용하도록 수정 + 경과시간을 측정하는 경우 기존 `System.currentTimeMillis()`에서 `System.nanoTime()`을 사용하도록 수정
Change
에이전트-proxy의 서버시간 차이가 있는 경우 에이전트 로그에 서버간 시간 차이를 표시하도록 수정
# 30초 이상 차이가 나는 경우
"fatal warning time-reverse (시간 차이) ms"
# 30초 미만 차이가 나는 경우
"warning time-reverse (시간 차이) ms"
Change
사용자 카운팅을 위한 옵션들을 wclient_xxx 형태로 수정, 이전 옵션 이름도 사용할 수 있지만, v2.2.0부터는 새로운 옵션 이름 사용 권장
# 교체
trace_user_method=IP
wclient_trace_type=IP
# 교체
trace_user_jsession_key=JSESSIONID
wclient_jsession_key=JSESSIONID
# 교체
trace_user_header_key=token
wclient_header_key=token
# 교체
trace_user_cookie_limit=4000
wclient_cookie_limit=4000
# 교체
trace_user_cookie_domain=
wclient_cookie_domain=
# 교체
realtime_user_thinktime_max=300000
wclient_thinktime_max=300000
# 교체
trace_user_using_ip=true
wclient_using_ip=true
# 교체
user_header_ticket=
wclient_header_ticket=
# 추가
wclient_max_count=70000
Change
사용자 수 관련 카운팅 설정 반영해 내장 weaving 컴포넌트 재컴파일
Change
CounterPack 경과시간 계산에 `System.nanoTime()`을 사용하도록 수정
Change
로그 출력 로고에 릴리즈 버전 포함
Change
자바에이전트의 통계 수집 기본값을 기존 5000에서 10000으로 수정, 통계 데이터 전송 시 2초마다 체크
stat_tx_max_count=10000
Change
성능지표를 수집하는 oshi 라이브러리 버전을 기존 oshi-core-5.4.1에서 oshi-core-6.1.6으로 업데이트
Change
성능지표를 수집하는 {AGENT_HOME}의 라이브러리 폴더 이름 변경
* sigar 라이브러리 폴더 이름 변경 : lib → lib3
* oshi 라이브러리 폴더 이름 변경 : lib2 → lib4
Fixed
자바에이전트의 내장 플러그인 Webflux 위빙플러그인의 read-only인 HttpHeaders 항목에 멀티트랜잭션 관련 헤더(header)를 추가하는 경우 발생하는 에러 수정 + webflux-5.1, webflux-5.2, webflux-5.3 버전에 전부 적용하였습니다.
Fixed
트랜잭션과 스텝의 경과시간이 0보다 작은 경우 발생하는 버그 수정
Fixed
트랜잭션과 스텝의 경과시간이 0보다 작은 경우 경과시간을 0으로 표시하는 버그 수정.
Fixed
blocking_detect_count
건수 처리 버그 수정