Java Agent v2.0
v2.0_55
2021-08-20
아웃바운드 호출의 실시간 정보를 구간별 수집 설정 추가
진행중인 트랜잭션의 아웃바운드 호출 (sql, http call)의 실시간 정보를 구간별로 수집하기 위한 기능을 추가하였습니다. 에이전트 설정에 actx_slice_meter_enabled
를 추가하여 기능을 사용할 수 있습니다.
actx_slice_meter_enabled=true
v2.0_53
2021-08-20
에이전트 설정 오타 수정
기존 hook_serivce_ignore_methods
에이전트 설정 오타를 hook_service_ignore_methods
로 수정하였습니다.
hook_serivce_ignore_methods # before
hook_service_ignore_methods # after
v2.0_52
2021-08-02
URL 정규화 기능 추가
URL정규화를 위해 스켄된 파일 목록을 저장하고 애플리케이션 재시작 때 다시 사용하도록 기능을 추가하였습니다.
keep_normalize_enabled=true
keep_normalize_filename=$oname
[oname].urls
라는 이름으로 url패턴 텍스트를 저장합니다.
URL 정규화 기능 오류 수정
클래스의 private 함수에 URL 매핑을 설정한 경우에도 URL 정규화가 가능하도록 오류를 수정하였습니다.
@RequestMapping(value = "/api/calls")
@RestController
public class ItemController {
@GetMapping(value = "/items")
private String getItems() {
return "item";
}
}
v2.0_50
2021-07-13
URL 정규화 기능 오류 수정
클래스 상속관계를 활용하여 URL 매핑을 설정한 경우에도 URL 정규화가 가능하도록 오류를 수정하였습니다.
@RequestMapping(value = "/api/calls")
@RestController
public class ParentController {
}
...
@RestController
public class ChildController extends ParentController {
@GetMapping(value = "/child-first/{id}")
public ResponseEntity<?> findItemById(@PathVariable(value = "id") long id) {
return ResponseEntity.ok().body("result");
}
}
v2.0_39
2021-06-24
sigar 모둘의 디스크 사용량을 보정하였습니다. 0.78 => 78.0
v2.0_38
TX 서비스 별 apdex, 응답시간 표준편차 수집
서비스 URL별 apdex와 표준편차 지표를 수집하도록 변경되었습니다. 단, 화면에서 데이터를 조회는 프런트의 추가개발이 완료된 후 가능합니다.
LogSink데이터수집
로그데이터를 수집하는 기능이 추가되었습니다.
v2.0_36
custid 매핑 규칙
custid는 개발자나 다른 프로그램에 의해 생성된 추적키를 의미합니다. 기본적으로 custid는 String type입니다. custid는 자동으로 와탭의 mtid로 변환됩니다. 변환 규칙은 다음과 같습니다.
if (custid가 숫자)
mtid = parseLong(custid)
else
mtid = hash64(custid)
v2.0_34
Java 9 이상의 환경에서 HeapHisto 조회와 Native Thread Dump 기능 버그 수정
Java 9이상에서 HeapHisto와 Thread Dump 기능이 동작하지 않았는데 에이전트의 버그를 수정하였습니다.
stat_useragent_enabled 옵션 추가
UserAgent 통계 정보를 수집할때 가부를 설정할 할 수 있도록 옵션을 추가 하였습니다.
# default: true
stat_useragent_enabled=true
설정이름 오류 수정
custom_trace_header_key
옵션 명칭에 틀린 철자 수정하였습니다.
Lambda함수 BCI 제외 수정
lambda 함수에 대해 instrument 대상에서 제외되었던 문제를 수정하였습니다.
SQLException 통계를 수집방식 개선
SQLException 에러는 통계 수집시 sqlcode 별로 수집되는데 SQLException을 상속 받은 에러 클래스에 대해서도 같이 적용되도록 변경하였습니다.
v2.0_32
Custom Pool 카운트 추적 옵션 추가
Custom Pool을 추적할때 메소드 설정 옵션 custom_pool_method_total
이 추가 되었습니다. custom_pool_method_idle
과 custom_pool_method_total
중 하나만 설정하면 됩니다.
custom_pool_id=myPool
custom_pool_method_active=getActiveConnection
custom_pool_method_idle=getIdleConnection
custom_pool_method_total=getTotalConnection
버그수정
Weaving 컴포넌트를 사용하여 HttpCall을 추적한경우 Status 에러 선택이 동작하지 않는 버그 수정하였습니다. 관련 옵션은 다음과 같습니다.
httpc_status_ignore
httpc_status_error_enable
httpc_status_ignore_set
v2.0_31
Spring Cloud Gateway 추적
Spring Cloud Gateway의 트랜잭션을 추적하기 위해서는 다음과 같은 옵션을 설정하고 재기동합니다.
weaving_reserved=webflux-5.2,spring-cloud-gateway-2.2
v2.0_30
커스텀 Connection Pool Count 추적을 위한 옵션 추가
기 정의되지 않은 클래스들을 Pool 사이즈를 카운팅하기 위한 옵션이 추가되었습니다.
custom_pool_id=myPool
custom_pool_method_active=getActiveConnection
custom_pool_method_idle=getIdleConnection
custom_pool_id
는 custom_pool_classes
에 설정된 값과 일치해야 합니다.
일반적으로 다음과 같이 설정됩니다.
CustomPoolCounter 설정 예
custom_pool_classes=myPool@com.mydb.MyDataSource
custom_pool_id=myPool
custom_pool_method_active=getActiveConnection
custom_pool_method_idle=getIdleConnection
"myPool"이라는 id에 custom_pool 설정이 적용됩니다.
Custom Pool의 정보를 조회하면서 에러가 발생하면 1시간에 한번씩 로그에 기록됩니다.
컨넥션 풀 클래스 HOOK 옵션을 분리
컨넥션 풀 클래스를 Instrument를 결정하는 옵션과 실제 데이터를 수집하는 옵션을 분리했습니다.
hook_hikari_pool_enabled = true
hook_dbcp_pool_enabled = true
hook_tomcat_pool_enabled = true
hook_weblogic_pool_enabled = true
hook_jeus_pool_enabled = true
hook_jboss_pool_enabled = true
hook_jedis_pool_enabled = true
hook_hybris_pool_enabled = true
hook_c3p0_pool_enabled = true
hook_xxx
는 자바 프로세스가 재기동 되기 전에 설정되어야하지만 데이터를 수집하는 옵션 (ex, hikari_pool_enabled
)은 실행 중에 변경이 가능합니다.
v2.0_27
내부 에러 처리 클래스 인스턴스변경
와탭 내부에서는 에러 정보를 효과적으로 수집하기 위해 와탭에서 정의한 에러 클래스를 사용하고 있습니다. 이 에러 클래스들을 인스턴스를 관리하는 클래스를 추가하였습니다.
외부 기능적으로 이전 버전과 차이는 없습니다. JVM 버그가 의심되는 에러가 발견되어 회피 목적으로 변경하였습니다.
Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class whatap.error.CONNECTION_OPEN_FAIL
알티베이스 드라이버 추적 버그
알티베이스 JDBC드라이버를 추적할때 연결 오류가 나는 문제가 발견되어 수정하였습니다. Connection jdbc url를 조회하면서 발생하는 문제로 관련 추적을 off하는 옵션도 같이 추가했습니다.
jdbc_url_elabled=true
해당값을 false
로 변경하면 jdbc연결 정보를 추적하지 않습니다.
v2.0_26
액티브스택 수집 최적화
에이전트 tps에 따라 액티브 스택 수집 최적화 옵션 자동 적용 기능을 추가 했습니다.
auto_active_stack_count=true
-
TPS < 100
whatap.confactive_stack_count = 50
-
TPS < 300
whatap.confactive_stack_count = 30
-
TPS >= 300
whatap.confactive_stack_count = 20
auto_active_stack_count
의 기본값은 가변적입니다. active_stack_count
가 명시적으로 설정되어있으면 기본값이 false
이고 명시적으로 whatap.conf에 설정되어 있지 않으면 기본값이 false
입니다.
액티브스택 성능 부가 정보 옵션 추가
액티브 스택을 수집할 때 해당 트랜잭션의 성능 상태를 추가로 수집할 수있습니다.
active_stack_prefx_enabled=false
whatap.conf에 active_stack_prefx_enabled
값을 true
로 설정하면 액티브스택 수집 시점의 트랜잭션의 성능 정보를 수집합니다.
- cpuTime : cpu사용 millisecond
- malloc : 메모리 사용 bytes
- sqlCount : 현 트랜잭션의 총 SQL 건수
- sqlTime : 현 트랜잭션의 총 SQL시간
- httpcCount : 현 트랜잭션의 총 HTTPCall 건수
- httpcTime : 현 트랜잭션의 총 HTTPCall 시간
- actSqlDbc : 수행중인 SQL의 DB
- actSql : 수행중인 SQL
- actHttpc : 수행중인 외부 호출 URL
데이터 SEND 버퍼 기본값 축소
에이전트에서 데이터를 전송하기 위해 버퍼에 일시적으로 저장을 합니다. 이때 버퍼 사이즈를 기존의 반으로 줄였습니다.
-
기본 버퍼: 128(우선순위 높음)
-
프로파일 버퍼: 256(우선순위 낮음)
v2.0_25
- TXID기반 추적 방식 리팩토링
- Weaving 플러그인 새로 빌드함
- Java Process CpuTime 조회 오류 수정
- Exception 경고시 Class이름과 메세지 포함되도록 변경
v2.0_24
버그수정
-
Active Transaction 수집 모듈에서 nullpoint Exception 수정(2.0_23에서만)
-
키 클래스 hash중복 문제 수정
v2.0_23
버그수정
active_http_query_enabled=true
옵션 추가
SQL파라미터 수집시 대용량 처리 옵션
sql_param_max=128
sql_param_separator=
v2.0_22
버그 수정
- MySql 8.0.19에서 SQL수집 안되는 문제 수정
- arrival_rate 지표 추가
v2.0_21
Hikari Pool카운트 수집오류 수정
Hikari Connection Pool에 대한 ACTIVE/IDLE카운트 수집이 안되는 오류 수정했습니다.
에 이전트 초기화 시간 변경
에이전트가 초기화될때 oname이 지정된 경우 무시되던 boot_wait_time
옵션이 항상 적용될 수있도록 변경합니다. 또한 기본값을 30초에서 20초로 변경합니다.
boot_wait_time=20000
SQL 파라미터 NULL추가 버그 수정
2.0_20버전(이전버전은 정상)에서 SQL 파라미터에 불필요한 null
이 추가되는 버그를 수정합니다.
v2.0_19
APDEX 버그 수정
apdex데이터가 잘못 수집되는 버그 수정했습니다.
Oracle CallableStatement 파라미터 수집
오라클 JDBC에서 CallableStatement파라미터를 수집하기 위한 기능과 옵션을 추가했습니다.
ojdbc6_enabled=true
옵션은 미리 수정하고 재기동후에 반영됩니다.
v2.0_18
status_ignore_set
& httpc_status_ignore_set
Http Status 리턴 코드중에서 무시하고 싶은 코드를 URL단위로 설정합니다.
-
Transaction의 Status Code
whatap.confstatus_ignore_set=/a/b/c:400,/a/ab/c:404
-
HttpCall(외부 호출)의 Status Code
whatap.confhttpc_status_ignore_set=/a/b/c:400,/a/ab/c:404
4xx 5xx에 대해서만 설정가능합니다. url의 통계에서 조회되는 url과 동일하게 기술해야 합니다.