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과 동일하게 기술해야 합니다.
v2.0_17
텍스트 전송 초기화 시각 변경
v2.0_16버전에서 에이전트 텍스트 전송 기록 reset을 한국시간 24시로 변경하였는데, 다시 GMT기준 00시로 변경하였습니다. 텍스트 전송기록이 reset되어야 에이전트는 새로 발생한 URL에 대한 텍스트 전송을 수행합니다.
v2.0_16
HttpCall Status기반 에러 처리
외부 httpcall을 수행한후 리턴 Status Code가 4xx혹은 5xx인경우 whatap.error.HTTPC_ERROR
로 등록하도록 변경합니다.
택스트 전송 초기화 시각 변경(한국 00시)
2.0_17에서 리셋합니다.
v2.0_15
OKHTTP3 위빙플러그인 수정
OKHTTP3위빙 플러그인 버그를 수정했습니다.
액티브트랜잭션 리스트 색깔정보
액티브 트랜잭션 조회 시 색깔값을 서버로 전송하도록 정보를 추가합니다. 화면에서 에이전트 설정에 따라 지연색을 사용합니다.
JMX_THREAD_POOL_DETAIL_ENABLED 수정
쓰레드풀 사이즈 추적을 위한 jmx 로직이 jboss에서 에러 로그를 출력하여 옵션 처리하고 변경합니다. 기본값을 false
로 수정합니다.
c3p 컨넥션 풀사이즈 추적 버그 수정
C3p 컨텍션 풀 사이즈 추적 코드의 버그를 수정했습니다.
v2.0_14
Silent Shutdown 지시파일 명변경
WHATAP_HOME
에 {pid}
.shutdown 파일이 생성되면 와탭 에이전트는 서버에 자신이 1분 이내에 정상 종료 할 것임을 전달합니다. 이번 버전에서는 이 파일을 자동으로 삭제하도록 처리하였습니다. 그러면서 파일 명을 whatap_{pid}
.shutdown으로 변경하였습니다.
사용자 추적 ID를 mtid로 바인딩
트랜재션 시작 에이전트 플러인 에서 다음과 같이 프로그램함으로 애플리케이션이 사용하는 txid를 와탭의 내부 mtid로 공용할 수 있습니다.
$ctx.inner().customTrace("abc9812xfsf23213");
v2.0_13
쿠키기반 사용자 카운팅 조건 수정
와탭에서 사용자 수를 카운팅 할때 IP나 쿠키등을 사용합니다. 쿠키를 사용할때 쿠키 오버플로어 장애를 막기 위한 옵션이 존재합니다.
trace_user_cookie_limit=2048
trace_user_cookie_limit
의 기본값이 2048에서 4000으로 변경되었습니다.
v2.0_11
BCI디버깅을 위한 덤프
hook_dump_enabled=true
hook_dump_enabled=true
를 설정하면 와탭 에이전트에 의해 변경되는 클래스는 모든 덤프합니다. ${WHATAP_HOME}
/classes에 수정된 파일이 모두 덤프됩니다.
어떤 클래스가 BCI에 의해 변경되었는지를 확인할 수있습니다.
Log 디렉토리에 Write 권한 없을 때 이상 현상
Log 디렉토리에 쓰기 권한이 없는 경우에 BCI 관련 모듈이 최기화되지 않는 버그를 수정하였습니다.
JDBC관련 기본 BCI 대상 클래스 OFF 옵션
와탭에이전트는 주요하게 SQL을 추적해야하는 JDBC관련 클래스를 내부에 기본 설정하고 있습니다. 이 기본 설정을 OFF할 수있는 옵션이 추가 되었습니다.
hook_jdbc_default_enabled=true
hook_jdbc_stmt_default_enabled=true
hook_jdbc_pstmt_default_enabled=true
hook_jdbc_cstmt_default_enabled=true
hook_jdbc_rs_default_enabled=true
기본값은 true
입니다. Statement, PreparedStatement, CallableStatement, ResultSet 클래스에 대해서 구분하여 지정할 수있습니다.
hook_jdbc_default_enabled
의 설정값은 hook_jdbc_stmt_default_enabled
의 기본값이 됩니다.
BCI 대상 클래스 제어
BCI을 위한 모듈의 동작여부를 제어합니다. 아래 옵션들은 자바 프로세스를 재기동해야 정상 적용됩니다.
hook_http_enabled=true
hook_serivce_enabled=true
hook_dbsql_enabled=true
hook_dbopen_enabled=true
hook_methods_enabled=true
hook_socket_enabled=true
hook_file_enabled=true
-
hook_http_enabled
: HttpServlet, ServletFilter등에 대한 기본 BCI 설정 -
hook_serivce_enabled
: 직접 설정한 Tx시작 제어 -
hook_dbsql_enabled
: JDBC관련 BCI 제어,hook_jdbc_default_enabled
는 기본 hooking 설정된 클래스를 무시하는 것이고,hook_dbsql_enabled
는 해당 BCI 기능 자체는 OFF할 수 있습니다. -
hook_dbopen_enabled
: getConnection(Connection Open) 부분에 대한 BCI 제어 -
hook_methods_enabled
: 메소드 프로파일에 대한 BCI 제어 -
hook_socket_enabled
: Socket Open 추적(트랜잭션 프로파일)에 대한 BCI제어 -
hook_file_enabled
: File Open 추적(트랜잭션 프로파일)에 대한 BCI제어
Class View에서 상세보기 옵션
클래스의 시그니쳐를 조회할 때 상세한 클래스 ByteCode 내용을 확인하고자 할 때 에이전트 옵션으로 설정할 수 있습니다.
view_class_detail_enabled=false
기본값은 false
이고, false
이면 클래스의 signature만을 확인 할 수 있습니다.
v2.0_10
SQLException 의존성 제거
v2.0_01 ~ 09까지의 버전을 Java 9 이상의 환경에서 설치할 때 Exception 통계를 확보하지 못하는 버그를 수정하였습니다.
httpc url에 대한 정규화 강화
외부호출 URL에 대한 정규화 기능을 추가하였습니다.
trace_httpc_normalize_prefix=/a,/b
trace_httpc_normalize_prefix
에 설정된 단어로 시작되는 URL들은 prefix로 normalize 됩니다.
v2.0_09
weaving@okhttp3 버그 수정
okhttp3 위빙 컴포넌트의 버그가 수정되었습니다. 이전 버전에 포함되어있는 okhttp3 컴포넌트는 버그로 인해 동작하지 않습니다.
HTTP 기본 추적 제어
javaee 서블릿은 기본으로 http 요청을 추적합니다. 주요 트랜잭션 시작 클래스가 와탭 에이전트에 등록되어있기 때문입니다.
javax.servlet.http.HttpServlet
org.apache.catalina.filters.FilterBase
weblogic.servlet.jsp.JspBase
org.apache.catalina.core.ApplicationFilterChain
javax.servlet.Filter
기본 클래스/인터페이스는 hook_http_default_enabled=false
를 설정하면 제외됩니다.
hook_http_default_enabled=true
HTTP 클래스 추가를 위해서는 hook_httpservlet_classes
를 사용합니다.
hook_httpservlet_classes=javax.servlet.http.HttpServlet
HTTP 인터페이스를 추가를 위해서는 hook_http_filters
를 사용합니다.
hook_http_filters=javax.servlet.Filter
-
hook_httpservlet_classes
/hook_http_filters
에 등록되기 위해서는 service 혹은 doFilter 메소드를 포함하고 있어야 합니다. -
hook_httpservlet_classes
/hook_http_filters
옵션들은 변경 시 재기동이 필요합니다.
v2.0_08
사용자 추적 옵션 수정
trace_user_method=ip
ip, cookie, jsession, header, none, 4가지 중 하나를 선택할 수있습니다.
- ip : 클라이언트 ip를 사용자로 구분하여 카운팅 합니다.
- cookie: WHATAP 쿠키를 자동으로 생성하여 사용자를 카운팅 합니다.
- header: http header 값을 조회하여 사용자를 카운팅합니다. trace_user_header_key 를 지정해 주어야 합니다.
- jsession: 쿠키값 중에서 JSESSIONID값을 읽어 사용자를 카운팅합니다.
- none : 사용자를 카운팅하지 않습니다.
trace_user_method
설정된 값은 whatap.log에 출력됩니다.
주요 메소드 Exception 추적
트랜잭션 프로파일 시 트랜잭션 중간에 Exception을 catch 해버리면 Exception 발생 여부를 알 수없습니다. 즉 트랜잭션 정보가 정상 종료로 표시됩니다. 그것은 모든 메소드의 Exception을 추적할 수 없기 때문입니다.
하지만 여러가지 이유로 주요 메소드에서 발생하는 Exception에 대해서는 에러로 표시하고자 할 때 필요합 옵션이 추가되었습니다.
hook_method_error_supers
hook_method_error_interfaces
hook_method_error_patterns
위 옵션에 설정된 클래스의 메소들에서 Exception이 발생하면 트랜잭션 에러로 처리됩니다.
에이전트 접속 정보 설정키 변경
에이전트가 서버에 정보를 전송하기 위해서는 license 값이 등록되어있어야 합니다.
license={x49s223s812hc-x496iqddmlug9c-z4orgmapfi}
키를 변경하였습니다. license
*/} whatap.project.token
whatap.project.token={x49s223s812hc-x496iqddmlug9c-z4orgmapfi}
license
옵션 키도 동일하게 사용 가능합니다.
URL Prefix 기반 정규화
prefix를 등록하고 등록한 prefix로 시작하는 URL는 prefix 값으로 변경(정규화)하는 기능을 추가하였습니다.
trace_normalize_prefix=/a,/b
옵션은 운영 중에도 실시간 반영됩니다.
Jedis 프로파일링
jedis드라이버를 사용하여 redis를 호출하는 경우 응답시간을 추적할 수있습니다.
weaving_reserved=jedis-3.2
jedis 2.x까지 적용할 수있습니다.
jedis_basetime=100
기본으로 응답시간이 100ms 이상인 경우에 프로파일링됩니다. 모든 jedis 호출을 프로파일링 하고 싶으면 jedis_basetime=0
으로 설정합니다.
jedis_show_parameter=false
jedis 호출 중에서 파라미터 값을 같이 프로파일링할 때 true
로 설정합니다.
- getSet
- get/set
- hget/hset
위의 명령들을 프로파일링 합니다.
만약 다른 명령을 프로파일링하고자 한다면 support@whatap.io로 문의바랍니다.
Spring Kafka 트랜잭션 추적
Kafka Listener가 데이터를 받아 처리하는 로직을 추적하는 기능을 추가하였습니다.
weaving_reserved=spring-kafka-1.3, spring-kafka-2.4
Spring Kafka-1.1.x ~ 1.3.x 는 spring-kafka-1.3를 사용할 수 있고 Spring Kafka-2.0.x ~ 2.4.x 는 spring-kafka-2.4를 사용합니다.
https://mvnrepository.com/artifact/org.springframework.kafka/spring-kafka 트랜잭션 이름은 "kafka:topic-name" 형태가 됩니다.
Spring MongoDB 프로파일링
몽고DB 메소드 호출에 대한 응답 시간을 추적할 수있습니다.
weaving_reserved=spring-mongodb-2.2
spring-mongodb-2.2는 Sping Data MongoDB 1.1.x~2.2.x까지 적용할 수 있습니다. https://mvnrepository.com/artifact/org.springframework.data/spring-data-mongodb
mongodb_basetime=100
기본으로 응답시간이 100ms이상인 경우에 프로파일링됩니다. 모든 jedis 호출을 프로파일링하고 싶으면 jedis_basetime=0
으로 설정합니다.
mongo_show_parameter=false
jedis 호출 중에서 파라미터 값을 같이 프로파일링할때 true
로 설정합니다.
- getSet
- get/set
- hget/hset
위의 명령들을 프로파일링합니다.
만약 다른 명령을 프로파일링하고자 한다면 support@whatap.io로 문의바랍니다.
Disk 사용량 카운팅
리눅스 환경에서 디스크 사용량을 추적할 수 있습니다. 디스크는 여러 개가 마운트될 수 있습니다. 따라서 마운트된 디스크를 지정하여 모니터링할 수 있습니다.
diskusage_enabled=false
diskusage_interval=300000
diskusage_default_enabled=false
diskusage_default_enabled=true
가 설정되면 diskusage_path
설정은 무시됩니다. diskusage_interval
간격(ms)으로 디스크 사용량을 추적하여 데이터를 보냅니다.
diskusage_path
설정
diskusage_count=2
diskusage_0_id=root
diskusage_0_path=/
diskusage_1_id=home
diskusage_1_path=/home
SybaseDB SQL 프로파일링
사이베이스 DB에 대한 SQL 프로파일링이 가능합니다.
com.sybase.jdbc2.jdbc.*
com.sybase.jdbc4.jdbc.*
Byte Code Instrumentation(BCI) 예외 옵션
자바에서 성능 추적이 필요한 주요 클래스들은 기본으로 BCI를 통해 수행 내용을 추적하도록 구현되어 있습니다.
하지만 간혹 추적이 부적절한 클래스들이 존재할 수있는데 무시하기 위한 옵션이 있습니다.
hook_ignore_classes=org.mariadb.jdbc.MariaDbResultSet
기준시간 이하 에러 트랜잭션 프로파일 옵션처리
profile_basetime
이하는 트랜잭션은 5분당 한건의 TX만 프로파일정보를 서버로 전송합니다. 하지만 에러가 발생한 트랜잭션은 옵션으로 선택할 수있습니다.
profile_concern_error_enabled=false
profile_concern_error_enabled=true
가 되면 에러가 발생한 모든 트랜잭션은 profile_basetime
에 상관없이 수집합니다.
기본값은 false
입니다.
기본 counter 중 cputime을 초당 값으로 변경
자바 프로세스 cpu 사용량을 측정하는 카운터는 2가지가 있습니다. 하나는 proc_cpu
이고 다른 하나는 cputime
입니다.
-
proc_cpu
는 시스템에서 프로세스가 차지하는 cpu % 값을 표현하고 있습니다. -
cputime
은 프로세스가 5초 동안 사용한 cpu 나노초를 수집하였습니다. 이 값을 초당 밀리초(ms) 값으로 변경하였습니다.
v2.0_07
-
버그 수정: maria 2.4.x 바인드변수 추적안됨
mariaDB jdbc driver 2.4.x에서 SQL 바인드변수의 추적이 안되는 버그 수정
-
사용자 카운팅시 JSESSIONID를 사용할때 키 변경가능
사용자 카운팅을 위해 JSESSIONID의 값을 사용할 수있습니다. 근데 JSESSIONID를 다른 키로 변경한경우 변경된 키를 사용할 수있도록 옵션이 추가 되었습니다. 기본값은 JSESSIONID입니다.
whatap.conftrace_user_using_jsession_key=JSESSIONID
v2.0_04
-
버그 수정: biz_exceptions 동작 하지 않음
hook_exception_handler
에 등록된 메소드에서 Exception이 catch되는 경우에biz_exceptions
에 등록된 에러에 대한 예외 처리가 되지 않고profile_exception_stack
옵션이 동작하지 않는 버그 수정
v2.0_00
에이전트 통합
이전 버전(v1.9.7이하)에서 WhaTap에이전트는 java5~8을 위한 whatap.agent.tracer-1.x.x.jar와 java9 ~ java13을 위한 whatap.agent.java9-1.x.x.jar로 분리하여 제공되었었습니다. 그러나 v2.0이후부터는 java5 ~ 13 혹은 이후 java까지도 whatap.agent-2.x_xx.jar로 통합되어 제공됩니다.
Hybris connection pool 추적 기능 추가
Hybris는 SAP에서 인수한 e-commerce 솔루션입니다. Hybris는 자체개발한 DB Connection Pool을 사용하고 있습니다. 이 풀의 갯수를 추적하는 기능이 추가 되었습니다.
hybris_pool_enabled=true #default: true
JNDI 혹은 JDBC URL 별로 DB연결수 추적
카운터 수집은 DB연결 정보(JDBC URL/JNDI)별로 연결수를 추적하도록 수정되었습니다. 에이전트별 DB연결수는 동일합니다. 연결정보에 대한 상세 데이터를 별도 수집할 수있습니다. (TAG 데이터)
pool_detail_enabled=true
ECS CPU 사용량 추적
AWS ECS 환경에서 자바 에이전트가 설치되면 자동으로 인지하여 ECS에서 제공하는 CPU정보를 조회합니다. 그리고 할당된 CPU Limit를 수집합니다.
Active Transaction 조회 기능 강화
액티브 트랜잭션 정보가 요청되었을 때 보다 상세한 정보를 리턴합니다. domain, 진행중인 SQL, httpcall 정보 등이 추가되었습니다.
에이전트 로그 이름 변경
와탭 자바 에이전트의 로그 파일 명이 변경되었습니다. (whatap-20200301.log)
Http Header Demp(Profile) 키 수정
Http Header Demp(Profile)시 기본 생략 키를 등록하였습니다.
profile_http_header_ignore_keys=cookie,accept,user-agent,referer
만약 key를 제거하려면 none
을 설정합니다.
profile_http_header_ignore_keys=none
CPU 모니터링 모듈 정리
환경에 따라 여러가지 CPU사용량 수집을 위해 여러가지 모듈이 선택되어 사용될 수 있습니다.
- JMS : JMX 사용
- /proc : Linux /proc/stat 조회
- sigar : 오픈소스 sigar 라이브러리
- ECS API : AWS ECS api
- KUBE : 와탭 쿠버 모니터링
- Shell : Shell 프로그램
와탭의 자바에이전트는 CPU수집 모듈 중에 환경에 따라 자동으로 선택됩니다.
if (쿠버 환경) {
<KUBE>
} else if (AWS ECS) {
<ECS>
} else if ( 설정 linux_proc_stat_enabled) {
if (리눅스) {
</proc/stat>
} else {
<JMX>
}
} else if (설정 shell_perf_enabled) {
<SHELL>
} else if (설정 sigar_enabled) {
<SIGAR>
} else {
<JMX>
}
# default
linux_proc_stat_enabled=false
shell_perf_enabled=false
sigar_enabled= jdk8이하?true:false
Weaving 플러그인 관리 개선
1.9.x에서는 위빙 플러그인의 버전이이나 중복 설정 여부를 체크하지 않았습니다. 2.0부터는 플러그인 별로 컴포넌트 이름과 버전이 관리됩니다.
플러그인 이름과 버전
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.10.5
Created-By: 11.0.2+9-LTS (Oracle Corporation)
PlugIn: okhttp3 //플러그인 이름
Build: 001 //플러그인 빌드 버전
Agent-Version: 2.0
설치된 jar 파일에서 manifest내의 "PlugIn:" 값을 기준으로 최근 "Build"를 로딩합니다.
Reserved 플러그인
자주 사용되는 Weaving 플러그인은 whatap.agent.jar 파일 내에 임베디드되었습니다.
akka-2.5.jar
axis-1.4.jar
okhttp-2.7.jar
okhttp3.jar
play-2.7.jar
reactor-rabbitmq-1.2.jar
spring-rabbitmq-2.1.jar
springboot-start.jar
tomcat-boot.jar
webflux-5.2.jar
임베디드된 다른 위빙 컴포넌트들은 weaving_reserved 옵션으로 설정할 수있습니다. ".jar"를 제외한 파일명을 설정합니다.
weaving_reserved=akka-2.5, okhttp3
커스터마이징 개발
와탭 사용자는 직접 위빙 플러그인을 만들 수있습니다. 만들어진 위빙에는 manifest.mf파일에 PlugIn
과 Build
속성이 설정되어 있어야 합니다. 배포는 에이전트 home에 instrument 디렉토리 아래에 복사합니다.
$WHATAP_HOME/instrument
로딩은 weaving_plugin_enabled
옵션에 의해 통제됩니다. 기본값은 true
입니다.
weaving_plugin_enabled=true
트랜잭션 쓰로틀링 Reject html 임베드
사용자 요청을 제한하기 위한 쓰로틀링 기능에서 사용자 안내 페이지를 와탭 에이전트에 임베드하였습니다.
notice.html
notice.json
notice.html을 활성화 하기 위해서는 옵션을 추가합니다.
throttle_rejected_html=notice.html
notice.html 파일을 편집하여 사용합니다.
사용자 커스텀 카운팅 기능 추가
시스템의 접속 사용자를 임의로 그룹핑하여 카운팅 하기 위한 기능들이 추가 되었습니다.