Skip to main content

Java Agent v2.0

Not translated
This page is currently being translated. We will complete the translation as soon as possible.

v2.0_55​

2021-08-20

아웃바운드 호출의 실시간 정보를 구간별 수집 설정 추가​

진행중인 트랜잭션의 아웃바운드 호출 (sql, http call)의 실시간 정보를 구간별로 수집하기 위한 기능을 추가하였습니다. 에이전트 설정에 actx_slice_meter_enabled 를 추가하여 기능을 사용할 수 있습니다.

whatap.conf
actx_slice_meter_enabled=true

v2.0_53​

2021-08-20

에이전트 설정 오타 수정​

기존 hook_serivce_ignore_methods 에이전트 설정 오타를 hook_service_ignore_methods 로 수정하였습니다.

whatap.conf
hook_serivce_ignore_methods # before
hook_service_ignore_methods # after

v2.0_52​

2021-08-02

URL 정규화 기능 추가​

URL정규화를 위해 스켄된 파일 목록을 저장하고 애플리케이션 재시작 때 다시 사용하도록 기능을 추가하였습니다.

whatap.conf
keep_normalize_enabled=true
keep_normalize_filename=$oname

[oname].urls라는 이름으로 url패턴 텍스트를 저장합니다.

URL 정규화 기능 오류 수정​

클래스의 private 함수에 URL 매핑을 설정한 경우에도 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 정규화가 가능하도록 오류를 수정하였습니다.

추가된 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 통계 정보를 수집할때 가부를 설정할 할 수 있도록 옵션을 추가 하였습니다.

whatap.conf
# 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 중 하나만 설정하면 됩니다.

whatap.conf
custom_pool_id=myPool
custom_pool_method_active=getActiveConnection
custom_pool_method_idle=getIdleConnection
custom_pool_method_total=getTotalConnection

버그수정​

Weaving 컴포넌트를 사용하여 HttpCall을 추적한경우 Status 에러 선택이 동작하지 않는 버그 수정하였습니다. 관련 옵션은 다음과 같습니다.

whatap.conf
httpc_status_ignore
httpc_status_error_enable
httpc_status_ignore_set

v2.0_31​

Spring Cloud Gateway 추적​

Spring Cloud Gateway의 트랜잭션을 추적하기 위해서는 다음과 같은 옵션을 설정하고 재기동합니다.

whatap.conf
weaving_reserved=webflux-5.2,spring-cloud-gateway-2.2

v2.0_30​

커스텀 Connection Pool Count 추적을 위한 옵션 추가​

기 정의되지 않은 클래스들을 Pool 사이즈를 카운팅하기 위한 옵션이 추가되었습니다.

whatap.conf
custom_pool_id=myPool
custom_pool_method_active=getActiveConnection
custom_pool_method_idle=getIdleConnection

custom_pool_id는 custom_pool_classes에 설정된 값과 일치해야 합니다.

일반적으로 다음과 같이 설정됩니다.

CustomPoolCounter 설정 예

whatap.conf
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 설정이 적용됩니다.

Note

Custom Pool의 정보를 조회하면서 에러가 발생하면 1시간에 한번씩 로그에 기록됩니다.

컨넥션 풀 클래스 HOOK 옵션을 분리​

컨넥션 풀 클래스를 Instrument를 결정하는 옵션과 실제 데이터를 수집하는 옵션을 분리했습니다.

whatap.conf
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
Note

hook_xxx는 자바 프로세스가 재기동 되기 전에 설정되어야하지만 데이터를 수집하는 옵션 (ex, hikari_pool_enabled)은 실행 중에 변경이 가능합니다.

v2.0_27​

내부 에러 처리 클래스 인스턴스변경​

와탭 내부에서는 에러 정보를 효과적으로 수집하기 위해 와탭에서 정의한 에러 클래스를 사용하고 있습니다. 이 에러 클래스들을 인스턴스를 관리하는 클래스를 추가하였습니다.

외부 기능적으로 이전 버전과 차이는 없습니다. JVM 버그가 의심되는 에러가 발견되어 회피 목적으로 변경하였습니다.

whatap.conf
Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class whatap.error.CONNECTION_OPEN_FAIL

알티베이스 드라이버 추적 버그​

알티베이스 JDBC드라이버를 추적할때 연결 오류가 나는 문제가 발견되어 수정하였습니다. Connection jdbc url를 조회하면서 발생하는 문제로 관련 추적을 off하는 옵션도 같이 추가했습니다.

whatap.conf
jdbc_url_elabled=true

해당값을 false로 변경하면 jdbc연결 정보를 추적하지 않습니다.

v2.0_26​

액티브스택 수집 최적화​

에이전트 tps에 따라 액티브 스택 수집 최적화 옵션 자동 적용 기능을 추가 했습니다.

whatap.conf
auto_active_stack_count=true
  • TPS < 100

    whatap.conf
    active_stack_count = 50
  • TPS < 300

    whatap.conf
    active_stack_count = 30
  • TPS >= 300

    whatap.conf
    active_stack_count = 20
Note

auto_active_stack_count의 기본값은 가변적입니다. active_stack_count가 명시적으로 설정되어있으면 기본값이 false이고 명시적으로 whatap.conf에 설정되어 있지 않으면 기본값이 false입니다.

액티브스택 성능 부가 정보 옵션 추가​

액티브 스택을 수집할 때 해당 트랜잭션의 성능 상태를 추가로 수집할 수있습니다.

whatap.conf
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​

  1. TXID기반 추적 방식 리팩토링
  2. Weaving 플러그인 새로 빌드함
  3. Java Process CpuTime 조회 오류 수정
  4. Exception 경고시 Class이름과 메세지 포함되도록 변경

v2.0_24​

버그수정​

  1. Active Transaction 수집 모듈에서 nullpoint Exception 수정(2.0_23에서만)

  2. 키 클래스 hash중복 문제 수정

v2.0_23​

버그수정​

active_http_query_enabled=true 옵션 추가

SQL파라미터 수집시 대용량 처리 옵션​

whatap.conf
sql_param_max=128
sql_param_separator=

v2.0_22​

버그 수정​

  1. MySql 8.0.19에서 SQL수집 안되는 문제 수정
  2. arrival_rate 지표 추가

v2.0_21​

Hikari Pool카운트 수집오류 수정​

Hikari Connection Pool에 대한 ACTIVE/IDLE카운트 수집이 안되는 오류 수정했습니다.

에이전트 초기화 시간 변경​

에이전트가 초기화될때 oname이 지정된 경우 무시되던 boot_wait_time 옵션이 항상 적용될 수있도록 변경합니다. 또한 기본값을 30초에서 20초로 변경합니다.

whatap.conf
boot_wait_time=20000

SQL 파라미터 NULL추가 버그 수정​

2.0_20버전(이전버전은 정상)에서 SQL 파라미터에 불필요한 null이 추가되는 버그를 수정합니다.

v2.0_19​

APDEX 버그 수정​

apdex데이터가 잘못 수집되는 버그 수정했습니다.

Oracle CallableStatement 파라미터 수집​

오라클 JDBC에서 CallableStatement파라미터를 수집하기 위한 기능과 옵션을 추가했습니다.

whatap.conf
ojdbc6_enabled=true
Note

옵션은 미리 수정하고 재기동후에 반영됩니다.

v2.0_18​

status_ignore_set & httpc_status_ignore_set​

Http Status 리턴 코드중에서 무시하고 싶은 코드를 URL단위로 설정합니다.

  • Transaction의 Status Code

    whatap.conf
    status_ignore_set=/a/b/c:400,/a/ab/c:404
  • HttpCall(외부 호출)의 Status Code

    whatap.conf
    httpc_status_ignore_set=/a/b/c:400,/a/ab/c:404
Note

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로 공용할 수 있습니다.

HttpServiceStart.x
$ctx.inner().customTrace("abc9812xfsf23213");

v2.0_13​

쿠키기반 사용자 카운팅 조건 수정​

와탭에서 사용자 수를 카운팅 할때 IP나 쿠키등을 사용합니다. 쿠키를 사용할때 쿠키 오버플로어 장애를 막기 위한 옵션이 존재합니다.

whatap.conf
trace_user_cookie_limit=2048

trace_user_cookie_limit의 기본값이 2048에서 4000으로 변경되었습니다.

v2.0_11​

BCI디버깅을 위한 덤프​

whatap.conf
hook_dump_enabled=true

hook_dump_enabled=true를 설정하면 와탭 에이전트에 의해 변경되는 클래스는 모든 덤프합니다. ${WHATAP_HOME}/classes에 수정된 파일이 모두 덤프됩니다.

Note

어떤 클래스가 BCI에 의해 변경되었는지를 확인할 수있습니다.

Log 디렉토리에 Write 권한 없을 때 이상 현상​

Log 디렉토리에 쓰기 권한이 없는 경우에 BCI 관련 모듈이 최기화되지 않는 버그를 수정하였습니다.

JDBC관련 기본 BCI 대상 클래스 OFF 옵션​

와탭에이전트는 주요하게 SQL을 추적해야하는 JDBC관련 클래스를 내부에 기본 설정하고 있습니다. 이 기본 설정을 OFF할 수있는 옵션이 추가 되었습니다.

whatap.conf
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을 위한 모듈의 동작여부를 제어합니다. 아래 옵션들은 자바 프로세스를 재기동해야 정상 적용됩니다.

whatap.conf
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 내용을 확인하고자 할 때 에이전트 옵션으로 설정할 수 있습니다.

whatap.conf
view_class_detail_enabled=false

기본값은 false이고, false이면 클래스의 signature만을 확인 할 수 있습니다.

v2.0_10​

SQLException 의존성 제거​

warning

v2.0_01 ~ 09까지의 버전을 Java 9 이상의 환경에서 설치할 때 Exception 통계를 확보하지 못하는 버그를 수정하였습니다.

httpc url에 대한 정규화 강화​

외부호출 URL에 대한 정규화 기능을 추가하였습니다.

whatap.conf
trace_httpc_normalize_prefix=/a,/b

trace_httpc_normalize_prefix에 설정된 단어로 시작되는 URL들은 prefix로 normalize 됩니다.

v2.0_09​

weaving@okhttp3 버그 수정​

okhttp3 위빙 컴포넌트의 버그가 수정되었습니다. 이전 버전에 포함되어있는 okhttp3 컴포넌트는 버그로 인해 동작하지 않습니다.

HTTP 기본 추적 제어​

javaee 서블릿은 기본으로 http 요청을 추적합니다. 주요 트랜잭션 시작 클래스가 와탭 에이전트에 등록되어있기 때문입니다.

Basic class
javax.servlet.http.HttpServlet
org.apache.catalina.filters.FilterBase
weblogic.servlet.jsp.JspBase
org.apache.catalina.core.ApplicationFilterChain
Basic interface
javax.servlet.Filter

기본 클래스/인터페이스는 hook_http_default_enabled=false를 설정하면 제외됩니다.

whatap.conf
hook_http_default_enabled=true

HTTP 클래스 추가를 위해서는 hook_httpservlet_classes를 사용합니다.

whatap.conf
hook_httpservlet_classes=javax.servlet.http.HttpServlet

HTTP 인터페이스를 추가를 위해서는 hook_http_filters를 사용합니다.

whatap.conf
hook_http_filters=javax.servlet.Filter
Info
  • hook_httpservlet_classes/hook_http_filters에 등록되기 위해서는 service 혹은 doFilter 메소드를 포함하고 있어야 합니다.

  • hook_httpservlet_classes/hook_http_filters 옵션들은 변경 시 재기동이 필요합니다.

v2.0_08​

사용자 추적 옵션 수정​

whatap.conf
trace_user_method=ip

ip, cookie, jsession, header, none, 4가지 중 하나를 선택할 수있습니다.

  • ip : 클라이언트 ip를 사용자로 구분하여 카운팅 합니다.
  • cookie: WHATAP 쿠키를 자동으로 생성하여 사용자를 카운팅 합니다.
  • header: http header 값을 조회하여 사용자를 카운팅합니다. trace_user_header_key 를 지정해 주어야 합니다.
  • jsession: 쿠키값 중에서 JSESSIONID값을 읽어 사용자를 카운팅합니다.
  • none : 사용자를 카운팅하지 않습니다.
Tip

trace_user_method 설정된 값은 whatap.log에 출력됩니다.

주요 메소드 Exception 추적​

트랜잭션 프로파일 시 트랜잭션 중간에 Exception을 catch 해버리면 Exception 발생 여부를 알 수없습니다. 즉 트랜잭션 정보가 정상 종료로 표시됩니다. 그것은 모든 메소드의 Exception을 추적할 수 없기 때문입니다.

하지만 여러가지 이유로 주요 메소드에서 발생하는 Exception에 대해서는 에러로 표시하고자 할 때 필요합 옵션이 추가되었습니다.

whatap.conf
hook_method_error_supers
hook_method_error_interfaces
hook_method_error_patterns

위 옵션에 설정된 클래스의 메소들에서 Exception이 발생하면 트랜잭션 에러로 처리됩니다.

에이전트 접속 정보 설정키 변경​

에이전트가 서버에 정보를 전송하기 위해서는 license 값이 등록되어있어야 합니다.

whatap.conf
license={x49s223s812hc-x496iqddmlug9c-z4orgmapfi}

키를 변경하였습니다. license */} whatap.project.token

whatap.conf
whatap.project.token={x49s223s812hc-x496iqddmlug9c-z4orgmapfi}
Note

license 옵션 키도 동일하게 사용 가능합니다.

URL Prefix 기반 정규화​

prefix를 등록하고 등록한 prefix로 시작하는 URL는 prefix 값으로 변경(정규화)하는 기능을 추가하였습니다.

whatap.conf
trace_normalize_prefix=/a,/b

옵션은 운영 중에도 실시간 반영됩니다.

Jedis 프로파일링​

jedis드라이버를 사용하여 redis를 호출하는 경우 응답시간을 추적할 수있습니다.

whatap.conf
weaving_reserved=jedis-3.2
Note

jedis 2.x까지 적용할 수있습니다.

whatap.conf
jedis_basetime=100

기본으로 응답시간이 100ms 이상인 경우에 프로파일링됩니다. 모든 jedis 호출을 프로파일링 하고 싶으면 jedis_basetime=0으로 설정합니다.

whatap.conf
jedis_show_parameter=false

jedis 호출 중에서 파라미터 값을 같이 프로파일링할 때 true로 설정합니다.

  • getSet
  • get/set
  • hget/hset

위의 명령들을 프로파일링 합니다.

Note

만약 다른 명령을 프로파일링하고자 한다면 support@whatap.io로 문의바랍니다.

Spring Kafka 트랜잭션 추적​

Kafka Listener가 데이터를 받아 처리하는 로직을 추적하는 기능을 추가하였습니다.

whatap.conf
weaving_reserved=spring-kafka-1.3, spring-kafka-2.4
Note

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 메소드 호출에 대한 응답 시간을 추적할 수있습니다.

whatap.conf
weaving_reserved=spring-mongodb-2.2
Note

spring-mongodb-2.2는 Sping Data MongoDB 1.1.x~2.2.x까지 적용할 수 있습니다. https://mvnrepository.com/artifact/org.springframework.data/spring-data-mongodb

whatap.conf
mongodb_basetime=100

기본으로 응답시간이 100ms이상인 경우에 프로파일링됩니다. 모든 jedis 호출을 프로파일링하고 싶으면 jedis_basetime=0으로 설정합니다.

whatap.conf
mongo_show_parameter=false

jedis 호출 중에서 파라미터 값을 같이 프로파일링할때 true로 설정합니다.

  • getSet
  • get/set
  • hget/hset

위의 명령들을 프로파일링합니다.

Note

만약 다른 명령을 프로파일링하고자 한다면 support@whatap.io로 문의바랍니다.

Disk 사용량 카운팅​

리눅스 환경에서 디스크 사용량을 추적할 수 있습니다. 디스크는 여러 개가 마운트될 수 있습니다. 따라서 마운트된 디스크를 지정하여 모니터링할 수 있습니다.

whatap.conf
diskusage_enabled=false
diskusage_interval=300000
diskusage_default_enabled=false

diskusage_default_enabled=true가 설정되면 diskusage_path 설정은 무시됩니다. diskusage_interval 간격(ms)으로 디스크 사용량을 추적하여 데이터를 보냅니다.

diskusage_path 설정

whatap.conf
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를 통해 수행 내용을 추적하도록 구현되어 있습니다.

하지만 간혹 추적이 부적절한 클래스들이 존재할 수있는데 무시하기 위한 옵션이 있습니다.

whatap.conf
hook_ignore_classes=org.mariadb.jdbc.MariaDbResultSet

기준시간 이하 에러 트랜잭션 프로파일 옵션처리​

profile_basetime 이하는 트랜잭션은 5분당 한건의 TX만 프로파일정보를 서버로 전송합니다. 하지만 에러가 발생한 트랜잭션은 옵션으로 선택할 수있습니다.

whatap.conf
profile_concern_error_enabled=false

profile_concern_error_enabled=true가 되면 에러가 발생한 모든 트랜잭션은 profile_basetime에 상관없이 수집합니다.

Note

기본값은 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.conf
    trace_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을 사용하고 있습니다. 이 풀의 갯수를 추적하는 기능이 추가 되었습니다.

whatap.conf
hybris_pool_enabled=true #default: true

JNDI 혹은 JDBC URL 별로 DB연결수 추적​

카운터 수집은 DB연결 정보(JDBC URL/JNDI)별로 연결수를 추적하도록 수정되었습니다. 에이전트별 DB연결수는 동일합니다. 연결정보에 대한 상세 데이터를 별도 수집할 수있습니다. (TAG 데이터)

whatap.conf
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)시 기본 생략 키를 등록하였습니다.

whatap.conf
profile_http_header_ignore_keys=cookie,accept,user-agent,referer

만약 key를 제거하려면 none을 설정합니다.

whatap.conf
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>
}
whatap.conf
# 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"를 제외한 파일명을 설정합니다.

whatap.conf
weaving_reserved=akka-2.5, okhttp3

커스터마이징 개발​

와탭 사용자는 직접 위빙 플러그인을 만들 수있습니다. 만들어진 위빙에는 manifest.mf파일에 PlugIn과 Build 속성이 설정되어 있어야 합니다. 배포는 에이전트 home에 instrument 디렉토리 아래에 복사합니다.

$WHATAP_HOME/instrument

로딩은 weaving_plugin_enabled 옵션에 의해 통제됩니다. 기본값은 true입니다.

whatap.conf
weaving_plugin_enabled=true

트랜잭션 쓰로틀링 Reject html 임베드​

사용자 요청을 제한하기 위한 쓰로틀링 기능에서 사용자 안내 페이지를 와탭 에이전트에 임베드하였습니다.

notice.html
notice.json

notice.html을 활성화 하기 위해서는 옵션을 추가합니다.

whatap.conf
throttle_rejected_html=notice.html
Note

notice.html 파일을 편집하여 사용합니다.

사용자 커스텀 카운팅 기능 추가​

시스템의 접속 사용자를 임의로 그룹핑하여 카운팅 하기 위한 기능들이 추가 되었습니다.