트랜잭션
트랜잭션은 사용자 브라우저의 요청을 처리하는 서버 사이드의 Logical Unit of Work(LUW)입니다. 웹 애플리케이션에서 하나의 HTTP 요청을 받아 응답을 반환하는 전체 과정이 트랜잭션에 해당합니다.
애플리케이션의 성능은 트랜잭션 처리 성능으로 평가할 수 있습니다. 트랜잭션 성능은 트랜잭션 시작부터 종료까지의 응답 시간, 자원 사용량, 호출자 속성 등의 정보가 포함됩니다.
트랜잭션 성능은 응답 시간 분포와 통계 데이터를 기반으로 분석할 수 있습니다.
트랜잭션 트레이싱
다음은 애플리케이션 내의 각 트랜잭션의 실행 경로를 상세하게 추적할 수 있는 에이전트 옵션입니다. 최소 응답 시간부터 트랜잭션의 실행 스텝 수까지 다양한 측면을 조정할 수 있습니다.
-
profile_basetime MiliSecond
기본값
500트레이스의 상세 정보를 수집할 최소 응답 시간을 설정합니다. 설정한 값 이하의 시간 내에 트랜잭션이 종료된 경우 트레이스 정보를 수집하지 않습니다. 단, 5분 단위로 최초 호출된 URL과 에러가 발생한 트랜잭션에 대한 트레이스 정보는 수집합니다.
노트profile_basetime옵션에 상관없이 에러를 수집하려면profile_concern_error_enabled옵션을true로 설정하세요. 기본값false로 설정하면 에러를 샘플링하게 됩니다
-
profile_step_normal_count Int
기본값
1000트랜잭션 트레이스의 최대 스텝 수를 설정합니다.
-
profile_step_heavy_count Int
기본값
1020Heavy한 스텝의 경우 트레이스 기본 스텝 수를 초과하더라도 정해진 값만큼 기록합니다.
-
profile_step_max_count Int
기본값
1024트레이스 스텝의 최대 수를 설정합니다. 수집된 트레이스 스텝 수가 이 값을 초과하면 이후 수집되는 스텝들은 모두 버려집니다.
profile_step_heavy_count을 최대 1000으로 설정하면profile_step_max_count만큼 액티브 스택이 수집됩니다. -
profile_step_heavy_time MiliSecond
기본값
100Heavy한 스텝의 기준을 설정합니다. 설정한 값보다 수행 시간이 긴 경우
profile_step_normal_count값을 초과하더라도profile_step_heavy_count에 설정한 값만큼 기록합니다. -
active_stack_count Int
기본값
100트랜잭션 내에서 수집하는 액티브 스택의 최대 수를 설정합니다.
-
profile_method_resource_enabled Boolean
기본값
false트레이스에서 method 스텝을 수집할 때 해당 스텝에서 사용한 CPU와 메모리 사용량을 추적합니다.
-
profile_position_method String
설정한 메소드를 수행하는 시점의 StackTrace를 기록합니다.
-
profile_position_depth Int
기본값
50position 추적을 위해 StackTrace를 기록할 때 최대 라인 수를 설정합니다.
-
trace_error_callstack_depth Int
기본값
50Error 발생 시 수집하는 StackTrace의 최대 라인 수를 설정합니다.
-
trace_active_callstack_depth Int
기본값
50액티브 스택에서 수집하는 StackTrace의 최대 라인수를 설정합니다.
-
trace_active_transaction_yellow_time MiliSecond
기본값
3000액티브 트랜잭션의 아크이퀄라이저에서 노란색으로 표현할 기준을 설정합니다.
-
trace_active_transaction_red_time MiliSecond
기본값
8000액티브 트랜잭션의 아크이퀄라이저에서 빨간색으로 표현할 기준을 설정합니다.
-
hook_method_patterns String
응답시간을 측정할 메소드를 설정합니다. 마지막 마침표(.)를 구분자로 클래스 FullName과 메소드로 구분되며 별표(*)를 와일드 카드로 사용할 수 있습니다. 대상이 여러 개인 경우 쉼표(,)로 구분합니다.
whatap.confhook_method_patterns=a.b.C1.*노트-
이 옵션을 통해 등록한 메소드는 트레이스 분석 또는 트랜잭션 정보 창에서 Method 스텝으로 확인할 수 있습니다.
-
가급적 국소 범위에 적용할 것을 권장합니다. 광범위한 범위로 적용할 경우 애플리케이션의 성능 저하를 유발할 수 있습니다.
-
-
hook_method_supers String
특정 클래스를 상속받은 메소드의 응답시간을 측정하고자 할 때 Super Class를 설정합니다. 클래스 FullName을 설정하며 대상이 여러 개인 경우 쉼표(,)로 구분합니다.
whatap.confhook_method_supers=a.b.C1 -
hook_method_interfaces String
특정 인터페 이스를 구현한 메소드의 응답시간을 측정하고자 할 때 Interface를 설정합니다. 인터페이스 FullName을 설정하며 대상이 여러 개인 경우 쉼표(,)로 구분합니다.
-
hook_method_ignore_classes String
메소드 트레이스를 설정할 때 트레이스에서 제외하고 싶은 클래스들을 설정합니다.
-
hook_method_access_public_enabled Boolean
기본값
true메소드 트레이스를 설정할 때 public 메소드에 대해서만 별도 대상으로 처리할지 여부를 설정합니다.
-
hook_method_access_private_enabled Boolean
기본값
false메소드 트레이스를 설정할 때 private 메소드에 대해서만 별도 대상으로 처리할지 여부를 설정합니다.
-
hook_method_access_protected_enabled Boolean
기본값
true메소드 트레이스를 설정할 때 protected 메소드에 대해서만 별도 대상으로 처리할지 여부를 설정합니다.
-
hook_method_access_none_enabled Boolean
기본값
true메소드 트레이스를 설정할 때 no access indicated 메소드에 대해서만 별도 대상으로 처리할지 여부를 설정합니다.
-
stacklog_socket_port TCP_PortNumber
기본값
0목적지의 TCP 포트를 설정하면 Socket.connect() 시점 StackTrace를 에이전트 로그로 기록합니다. 기본 설정으로 확인되지 않는 DB 연결, HTTPC 연결 등을 추적할 때 사용할 수 있습니다.
주의설정한 목적지로 연결 시마다 매번 StackTrace를 기록합니다. 성능 저하를 유발할 수 있습니다. 디버깅 용도로 선별한 에이전트에 한시적으로만 사용해야 합니다.
DB 연결 상태 추적 예시,
stacklog_socket_port=1521 -
trace_concern_error_enabled Boolean
기본값
truetrace_basetime또는profile_basetime옵션과 무관하게 에러가 있는 상세 트레이스에 대한 수집 여부를 설정합니다.
예외 처리
다음은 애플리케이션에서 발생하는 예외를 관리하고 모니터링하기 위한 옵션입니다. 비즈니스 예외를 등록하고 관련 통계를 수집하여 애플리케이션의 안정성을 확인할 수 있습니다. 또한 특정 예외를 무시하거나 HTTP 상태 코드가 에러인 경우 에러로 처리할지 여부를 설정할 수도 있습니다. 예외로 처리된 항목들은 히트맵 또는 트레이스 분석 창에서 정상 트랜잭션으로 표시됩니다.
Java 에이전트의 예외 처리 기준에 대한 자세한 내용은 다음 문서를 참조하세요.
-
biz_exceptions String
Business Exception을 등록합니다.
whatap.conf# example
biz_exceptions=com.home.test.exception.BizException팁에러 클래스 수집 / 히트맵 표시 레벨: INFO(파란색) / 에러 통계 포함
노트Java 에이전트 v2.2.20 이상에서는 등록한 비즈니스 Exception을 에러 통계로 수집합니다. v2.2.20 미만에서는 등록한 비즈니스 Exception을 에러 통계에서 제외합니다. 다만 트레이스 상세에서는 나타납니다.
-
biz_exceptions_status String
Java Agent v2.2.20 or laterBusiness Exception 발생 시 이벤트 알림을 억제할 Business Exception과 Status를 설정합니다. 이 옵션에서 설정한 Business Exception:Status에 대해서는 이벤트 레벨이 INFO로 변경됩니다. Business Exception과 Status는 콜론(:)으로 구분하며, 하나의 Business Exception에 여러 개의 Status를 사용하는 경우 앰퍼샌드(&)로 구분합니다. 쉼표를 구분자로 이용해 여러 개를 설정할 수 있습니다.
whatap.conf# example
biz_exceptions_status=java.util.concurrent.TimeoutException:400&404&408,java.lang.Exception:200팁에러 클래스 수집 / 히트맵 표시 레벨: INFO(파란색) / 에러 통계 포함
-
ignore_exceptions String
등록한 Exception의 에러 자체를 무시합니다.
whatap.conf# example
ignore_exceptions=com.home.test.exception.BizException팁에러 클래스 무시 / 히트맵 표시 레벨: INFO(파란색) / 에러 통계 미포함
-
transaction_status_error_enable Boolean
기본값
trueHTTP 401, 403과 같이 정상 응답이 아닌 HTTP 상태 코드를 반환하는 경우 에러로 처리할지 여부를 설정합니다.
-
status_ignore String
무시하려는 HTTP 상태 코드를 설정할 수 있습니다. 여러 값을 대상으로 할 경우 쉼표(,)를 구분자로 사용하세요.
whatap.conf# example
status_ignore=408,500팁Status 에러 무시 / 히트맵 표시 레벨: INFO(파란색) / 에러 통계 미포함
-
status_ignore_set String
whatap.error.STATUS_ERROR를 무시합니다. 여러 값을 대상으로 할 경우 쉼표(,)를 구분자로 사용하세요.whatap.conf# example
status_ignore_set=/api/test/timeout/{time}:408,/error:500팁Status 에러 세트 무시 / 히트맵 표시 레벨: INFO(파란색) / 에러 통계 미포함
-
httpc_status_error_enable Boolean
기본값
trueHTTP 상태 코드가 에러인 경우 수집 여부를 설정합니다. 클라이언트 에러 응답(
400이상), 서버 에러 응답(500이상)이 해당됩니다.노트HTTP 상태 코드에 대한 자세한 내용은 다음 링크를 참조하세요.
-
httpc_status_ignore String
HTTP 상태 코드가 에러(
HTTPC_ERROR)인 경우 무시할 수 있습니다. 여러 값을 대상으로 할 경우 쉼표(,)를 구분자로 사용하세요.whatap.conf# example
httpc_status_ignore=404,500팁HTTP 상태 에러 코드 무시 / 에러 통계 미포함
-
httpc_status_url_ignore_set String
whatap.error.HTTPC_ERROR를 무 시합니다. 여러 값을 대상으로 할 경우 쉼표(,)를 구분자로 사용하세요.httpc_status_url_ignore_set=/a/b/c:400,/a/ab/c:404와 같이 설정하세요. 이때 url은 통계/에러 분석에서HTTPC_URL값을 입력합니다.whatap.conf# example
httpc_status_url_ignore_set=/a/b/c:404,/d/e/f:500팁HTTP 상태 에러 코드 무시 / 에러 통계 미포함
-
trace_sql_exception_enabled Boolean
기본값
trueJDBC 드라이버에서 SqlException 발생 시 추적 여부를 설정합니다. 옵션 값을
false로 설정하면 사용자 정의 예외 처리로biz_exceptions처리할 수 있습니다. -
trace_exception_handler_overwrite_enabled Boolean
기본값
truespring-boot ExceptionHandler를 통과하는 예외(exception)가 발생하면 이전에 발생한 예외를 대체할 수 있습니다. 트레이스 분석 창의 레코드 요약 탭에서 예외(exception)를 spring-boot의 ExceptionHandler에 등록한 예외로 표시할 수 있습니다.
HTTP 트랜잭션 추적
다음은 HTTP 요청 및 응답에 관련된 다양한 정보를 추적하고 기록하는 에이전트 옵션입니다. 이를 통해 사용자는 애플리케이션의 HTTP 트랜잭션을 세밀하게 모니터링하고 분석할 수 있습니다. 트랜잭션 이름에 파라미터 값을 추가하거나 특정 URL이나 HTTP 메소드를 제외할 수 있습니다. 또한 HTTP 헤더 정보와 파라미터 정보를 포함하여 트랜잭션을 보다 상세하게 기록할 수 있습니다.
-
trace_normalize_enabled Boolean
기본값
true트랜잭션 URL을 파싱해 정규화하는 기능을 활성화합니다.
노트false로 값을 변경하면 패스 파라미터 파싱을 비활성화합니다. 이 경우 통계 데이터의 의미가 약화됨으로 디버그 용도로만 잠시 사용하는 것을 권장합니다. -
trace_auto_normalize_enabled Boolean
기본값
true트랜잭션 URL 정규화할 때 패턴 값을 어노테이션에서 추출해 자동으로 파싱하는 기능을 활성화합니다.
-
trace_normalize_urls String
정규화할 트랜잭션 URL 패턴을 설정합니다. 호출 URL 패턴을 파싱해 패스 파라미터를 제거합니다.
노트예시,
/a/{v}/b라고 선언하면a/123/b→a/{v}/b로 치환합니다. 여러 개를 등록할 때는 쉼표(,)를 구분자로 사용하세요. 치환 패턴 정리 후 보완이 필요합니다. -
web_static_content_extensions String
기본값
js, htm, html, gif, png, jpg, css, swf, ico스태틱 콘텐츠임을 판단하는 확장자를 설정합니다. 이 옵션에 설정한 확장자를 가진 트랜잭션들은 트레이스 추적과 카운팅에서 제외합니다.
-
trace_transaction_name_header_key String
설정한 HTTP 헤더 키에서 추출한 값을 트랜잭션의 이름 마지막에 추가합니다.
-
profile_http_header_enabled Boolean
기본값
false트레이스 내역에 http 헤더 정보를 기록하려면
true로 설정하세요. -
profile_http_parameter_enabled Boolean
기본값
false트레이스 내역에 http 파라미터 정보를 기록하려면
true로 설정하세요. 파라미터는 별도 보안키를 입력해야 조회할 수 있습니다.노트-
Java 에이전트 2.2.2 버전 미만: 보안 키는 WAS 서버
${WHATAP_AGENT_HOME}/paramkey.txt 파일 내에 6자리로 작성합니다. paramkey.txt 파일이 존재하지 않는 경우 랜덤 값으로 자동 생성합니다. -
Java 에이전트 2.2.2 버전 이상: 보안 키는 WAS 서버
${WHATAP_AGENT_HOME}/security.conf 파일 내에paramkey키값을 확인하세요. security.conf 파일이 존재하지 않을 경우paramkey키값을 WHATAP으로 자동 생성합니다. -
보안키 설정 파일에 대한 자세한 내용은 다음 문서를 참조하세요.
-
-
profile_http_header_url_prefix String
트레이스 내역에 http 헤더 정보를 기록할 대상 URL의 prefix를 정의할 때 사용합니다.
-
profile_http_parameter_url_prefix String
트레이스 내역에 http 파라미터 정보를 기록할 대상 URL의 prefix를 정의할 때 사용합니다.
-
trace_transaction_name_key String
HTTP request parameter 값을 해당 옵션에 설정하면, 파라미터 값을 추출하여 트랜잭션의 이름 마지막에 추가합니다.
예를 들어, HTTP 파라미터로
paramKey를 가진/api/testURL을 호출하는 경우 다음 예제와 같이 설정하면 트레이스 내역에/api/test$paramKey={value}로 트랜잭션 이름을 표시합니다. 다만 여러 개의 파라미터를 등록할 수는 없습니다.whatap.conf# example
trace_transaction_name_key=paramKey -
recursive_max Int
기본값
1000000트랜잭션의 재귀 호출 여부 검출을 위한 옵션입니다. 단일 트랜잭션으로부터 파생되는 재귀 호출 횟수를 카운트하여 이벤트 알림을 발행하기 위한 기준을 설정합니다.
노트HTTP URL 재귀 호출을 대상으로 합니다. jsp:forward를 통해 재호출하는 케이스도 카운트에 포함합니다.
-
hook_httpservlet_classes String
HTTP 트랜잭션의 END POINT를 추가로 설정합니다. 메소드의 첫 번째 2개의 파라미터는
HttpServletRequest와HttpServletResponse만 설정할 수 있습니다. -
hook_jsp_patterns String
기본값
org.apache.jasper.servlet.JspServlet.serviceJspFileJSP 파일을 로딩하는 메소드를 설정합니다. 트랜잭션 호출 결과로 반환하는 JSP 정보를 트레이스에 표시합니다. 이 옵션을 통해 추가한 설정에 기본값이 자동 추가됩니다.
-
trace_ignore_url_set String
트랜잭션 추적에서 제외할 URL을 설정합니다. 2개 이상의 값을 설정하려면 쉼표(,)를 구분자로 이용하세요.
노트이 옵션을 통해 등록한 URL은 히트맵, 트레이스 분석 또는 트랜잭션 정보 창에서 수집 제외됩니다.
-
trace_ignore_url_prefix String
트랜잭션 추적에서 제외할 URL prefix를 설정합니다. 2개 이상의 값을 설정하려면 쉼표(,)를 구분자로 이용하세요.
노트이 옵션을 통해 등록한 URL은 히트맵, 트레이스 분석 또는 트랜잭션 정보 창에서 수집 제외됩니다.
-
ignore_http_method String
기본값
PATCH,OPTIONS,HEAD,TRACE설정한 HTTP 메소드(Method)로 요청된 트랜잭션 정보는 수집하지 않습니다. 여러 개를 설정하려면 쉼표(,)를 구분자로 이용하세요.
whatap.conf# e.g. http_method가 OPTIONS, HEAD인 트랜잭션 "추적"
ignore_http_method=PATCH,TRACE
# e.g. http_method가 OPTIONS, HEAD인 트랜잭션 "무시"
ignore_http_method=OPTIONS,HEAD노트이 옵션을 통해 등록한 HTTP 메소드는 히트맵, 트레이스 분석 또는 트랜잭션 정보 창에서 수집 제외됩니다.
-
trace_tx_name_with_method_enabled Boolean
기본값
false통계 데이터에서 URL을 변경한 URL+method로 수집할 수 있습니다. 통계 또는 트랜잭션 검색 메뉴에서 URL+method로 확인할 수 있습니다.
예시, /api/user+GET, /api/user+POST
NON HTTP 트랜잭션 추적
다음은 HTTP 이외의 트랜잭션을 추적하고 모니터링하기 위한 옵션입니다. 이 옵션을 통해 사용자는 백그라운드 작업이나 다른 프로토콜에 대한 트랜잭션을 세밀하게 추적할 수 있습니다.
-
trace_auto_transaction_enabled Boolean
기본값
false트레이스 대상 메소드가 트랜잭션 시작점(
Javax.http.httpservlet,hook_service_*) 내에서 수행하는 경우가 아니라면 수집되지 않습니다. 이 경우 트레이스 대상 메소드가 트랜잭션 시작점이 되도록 설정합니다.노트주로 개발 환경에서 백그라운드 트랜잭션의 END POINT를 찾을 때 사용합니다.
-
trace_auto_transaction_backstack_enabled Boolean
기본값
truetrace_auto_transaction_enabled옵션의 값이true인 경우 트랜잭션 시작 시 StackTrace를 기록합니다. 이를 통해 트랜잭션의 시작점을 찾아낼 수 있습니다. -
trace_background_socket_enabled Boolean
기본값
true트랜잭션이 아닌 백그라운드 스레드에 의한 소켓이 오픈될 때도 이를 기록합니다.
-
async_stack_enabled Boolean
기본값
false백그라운드 스레드에 대한 Active Stack 기능 사용 여부를 설정합니다.
-
async_thread_match String
액티브 스택을 덤프할 백그라운드 스레드 이름을 설정합니다. 여러 개를 설정하려면 쉼표(,)를 구분자로 사 용하세요. 이름을 설정할 때 'Thread-*' 처럼 별표(*)를 사용해 비교 패턴을 사용할 수 있습니다.
-
async_thread_parking_class String
기본값
sun.misc.Unsafe스택의 Top 메소드가
async_thread_parking에 등록한 클래스/메소드일 때 스레드가 파킹 상태에 있다고 판단하고 덤프를 생성하지 않습니다. -
hook_service_patterns String
NON-Http 트랜잭션 추적을 위한 시작점 패턴을 설정합니다. 와일드카드 문자를 사용할 수 없으며, 2개 이상의 값을 설정하려면 쉼표(,)를 구분자로 이용하세요.
-
hook_serivce_ignore_methods String
hook_service_patterns에서 설정한 내역 중 시작점으로 불필요한 메소드를 추가할 수 있습니다. -
hook_service_supers String
NON-HTTP 트랜잭션 추적을 위한 시작점의 공통 분모가 특정 클래스의 메소드를 상속 받은 경우라면 공통 분모의 메소드를 설정합니다. 메소드 전체 경로를 입력하세요. 와일드 카드(
*)를 사용할 수 있으며, 쉼표(,)를 구분자로 이용해 여러 개의 메소드를 등록할 수 있습니다.whatap.confhook_service_supers=a.b.C.method,a.b.C.* -
hook_service_interfaces String
NON-Http 트랜잭션 추적을 위한 시작점의 공통 분모가 특정 인터페이스를 구현한 경우라면 이를 설정합니다.
-
hook_service_access_public_enabled Boolean
기본값
trueNon Http Demon 프로세스의 트랜잭션을 설정할 때 public 메소드에 대해서만 Access 권한 기준을 on/off 설정합니다.
-
hook_service_access_private_enabled Boolean
기본값
trueNon Http Demon 프로세스의 트랜잭션을 설정할 때 private 메소드에 대해서만 Access 권한 기준을 on/off를 설정합니다.
-
hook_service_access_protected_enabled Boolean
기본값
trueNon Http Demon 프로세스의 트랜잭션을 설정할 때 protected 메소드에 대해서만 Access 권한 기준을 on/off를 설정합니다.
-
service_name_mode String
기본값
full트랜잭션 명으로 다음의 옵션을 사용할 수 있습니다.
full: Full Class 이름 사용class: 서비스 명칭을 Class 이름으로 사용method: 서비스 명칭을 Method 이름으로 사용string: 서비스 명칭을 문자열 중에서 첫 번째 파라미터로 사용arg: 파라미터 중에서service_name_index옵션에 설정한 인덱스에 파라미터를 서비스 명칭으로 사용