트랜잭션
트랜잭션이란 사용자 브라우저의 요청을 처리하기 위한 서버 사이드의 Logical Unit of Work(LUW)를 말합니다. 개별 웹서비스(URL) 요청에 대한 처리 과정이 바로 트랜잭션입니다. 웹 애플리케이션에서 트랜잭션은 웹서비스(URL)에 대한 HTTP Request를 받아 Response를 반환하는 과정입니다.
애플리케이션의 성능은 이 트랜잭션들의 성능으로 요약할 수 있습니다. 트랜잭션 성능은 트랜잭션 시작에서부터 종료 시점, 응답시간 및 자원 사용량 혹은 트랜잭션 호출자 속성 등의 정보를 포함합니다.
기본적으로 트랜잭션 응답 분포와 트랜잭션 통계를 통해서 트랜잭션 성능을 분석할 수 있습니다.
에이전트에서 트랜잭션 성능을 추적해 설정할 수 있는 옵션을 다음과 같이 제공합니다.
트랜잭션 트레이싱
-
profile_basetime MiliSecond
기본값
500
트레이스의 상세 정보를 수집할 최소 응답 시간을 설정합니다. 설정한 값 이하의 시간 내에 트랜잭션이 종료된 경우 트레이스 정보를 수집하지 않습니다. 단, 5분 단위로 최초 호출된 URL과 에러가 발생한 트랜잭션에 대한 트레이스 정보는 수집합니다.
노트profile_basetime
옵션에 상관없이 에러를 수집하려면profile_concern_error_enabled
옵션을true
로 설정하세요. 기본값false
로 설정하면 에러를 샘플링하게 됩니다
-
profile_error_step_enabled Boolean
기본값
true
프로파일에 에러 관련 정보를 표시하는 스텝을 추가할 수 있습니다.
-
trace_active_transaction_yellow_time MiliSecond
기본값
3000
액티브 트랜잭션의 아크이퀄라이저에서 노란색으로 표현할 기준을 설정합니다.
-
trace_active_transaction_red_time MiliSecond
기본값
8000
액티브 트랜잭션의 아크이퀄라이저에서 빨간색으로 표현할 기준을 설정합니다.
-
hook_method_patterns String
응답시간을 측정할 메소드를 설정합니다. 마지막 마침표(.)를 구분자로 클래스 FullName과 메소드로 구분되며 별표(*)를 와일드 카드로 사용할 수 있습니다. 대상이 여러 개인 경우 쉼표(,)로 구분합니다.
Examplehook_method_patterns=a.b.C1.*
-
hook_method_access_public_enabled Boolean
기본값
true
메소드 트레이스를 설정할 때 public 메소드에 대해서만 별도 대상으로 처리할지 여부를 설정합니다.
-
hook_method_access_protected_enabled Boolean
기본값
true
메소드 트레이스를 설정할 때 protected 메소드에 대해서만 별도 대상으로 처리할지 여부를 설정합니다.
-
hook_method_access_private_enabled Boolean
기본값
false
메소드 트레이스를 설정할 때 private 메소드에 대해서만 별도 대상으로 처리할지 여부를 설정합니다.
-
hook_method_access_none_enabled Boolean
기본값
true
메소드 트레이스를 설정할 때 no access indicated 메소드에 대해서만 별도 대상으로 처리할지 여부를 설정합니다.
-
hook_method_ignore_prefixes String
기본값
get,set
메소드 트레이스를 설정할 때 트레이스에서 제외하고 싶은 클래스들을 prefix로 설정합니다.
-
hook_method_ignore_classes String
메소드 트레이스를 설정할 때 트레이스에서 제외하고 싶은 클래스들을 설정합니다.
-
trace_service_port_enabled Boolean
기본값
false
트랜잭션의 이름에 포트 번호를 추가합니다.
-
httpc_status_ignore String
기본값
Empty
HTTP 상태 코드가 에러(
HTTPC_ERROR
)인 경우 무시할 수 있습니다. 여러 값을 대상으로 할 경우 쉼표(,)를 구분자로 사용하세요.whatap.confhttpc_status_ignore=404,500
-
httpc_status_ignore_set String
기본값
Empty
whatap.error.HTTPC_ERROR
를 무시합니다. 여러 값을 대상으로 할 경우 쉼표(,)를 구분자로 이용하세요.노트httpc_status_ignore_set=/a/b/c:400,/a/ab/c:404
와 같 이 설정하세요. 이때 url은 통계/에러 분석에서HTTPC_URL
값을 입력합니다. -
profile_zip_enabled Boolean
기본값
false
프로파일 정보를 압축 전송합니다.
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
로 설정하세요. 파라미터는 별도 보안키를 입력해야 조회할 수 있습니다.노트-
Node.js 에이전트 0.4.95 버전 미만: 보안 키는 WAS 서버
${WHATAP_AGENT_HOME}
/paramkey.txt 파일 내에 6자리로 작성합니다. paramkey.txt 파일이 존재하지 않는 경우 랜덤 값으로 자동 생성합니다. -
Node.js 에이전트 0.4.95 버전 이상: 보안 키는 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_ignore_url_set String
트랜잭션 추적에서 제외할 URL을 설정합니다. 2개 이상의 값을 설정하려면 쉼표(,)를 구분자로 이용하세요.
-
trace_ignore_url_prefix String
트랜잭션 추적에서 제외할 URL prefix를 설정합니다. 2개 이상의 값을 설정하려면 쉼표(,)를 구분자로 이용하세요.
-
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 -
profile_http_header_ignore_keys String
기본값
Cookie,cookie,accept,user-agent,referer
HTTP 헤더 이름을 지정해 수집 정보에서 제외할 수 있습니다. 지정한 HTTP 헤더 이름의 값은 수집에서 제외되며, '#'으로 표시됩니다.
-
profile_http_parameter_keys String
설정된 키에 해당하는 파라미터 정보만 기록합니다. 여러 개를 등록할 때는 쉼표(,)를 구분자로 이용하세요. 설정하지 않을 경우 모든 파라미터 정보가 기록됩니다.
-
status_ignore String
기본값
Empty
무시하려는 HTTP 상태 코드를 설정할 수 있습니다. 여러 값을 대상으로 할 경우 쉼표(,)를 구분자로 사용하세요.
whatap.conf# example
status_ignore=408,500 -
status_ignore_set String
기본값
Empty
HTTP 상태 리턴 코드 중에서 무시하고 싶은 코드를 URL 단위로 설정할 수 있습니다.
whatap.conf# example
status_ignore_set=/api/test/timeout/{time}:408,/api/test/timeout:200,/error:500 -
transaction_status_error_enable Boolean
기본값
true
HTTP 401, 403과 같이 정상 응답이 아닌 HTTP 상태 코드를 반환하는 경우 에러로 처리할지 여부를 설정합니다.
NON HTTP 트랜잭션 추적
-
hook_service_patterns String
NON-Http 트랜잭션 추적을 위한 시작점 패턴을 설정합니다. 와일드카드 문자를 사용할 수 없으며, 2개 이상의 값을 설정하려면 쉼표(,)를 구분자로 이용하세요.
-
trace_background_socket_enabled Boolean
기본값
true
소켓(TCP) 연결이 오픈될 때 트랜잭션을 시작한 상황에서만 오픈을 추적하는데 트랜잭션이 아닌 백그라운드 스레드에 의해 소켓이 오픈될 때도 추적합니다.
멀티 트랜잭션 추적
-
mtrace_rate Int
기본값
0
최초 트랜잭션이 발생할 때 발급하는 멀티 트랜잭션 추적 기능(Multi Transaction ID, 이하 MTID)의 발급 비율을 설정하는 옵션입니다.
0
에서100
까지 설정할 수 있습니다. MTID를 추적하면 등록한 모든 애플리케이션 간의 호출을 확인할 수 있습니다. 같은 프로젝트에 속한 애플리케이션은 Caller & Callee 기능을 통해 트랜잭션의 트레이스를 바로 확인할 수 있습니다. -
mtrace_spec String
기본값:
v1
현재 인스턴스의 애플리케이션 버전을 설정합니다. 임의의 문자열을 입력할 수 있습니다. 이 데이터는 호출 통계를 위해 이용합니다.
-
mtrace_caller_key String
기본값
x-wtap-mst
MTID 추적에 사용할 Caller Key Name을 설정합니다.
-
mtrace_callee_key String
기본값
x-wtap-tx
MTID 추적에 사용할 Callee Key Name을 정합니다.
-
mtrace_callee_id_recv_enabled Boolean
기본값
false
MTID 추적 시 수신한 Callee ID를 트레이스에 표현합니다.
-
mtrace_alltx_enabled Boolean
기본값
false
log4j와 같은 로깅 시스템과 연계하기 위해서 모든 트랜잭션의 MTID를 추적할 수 있습니다.
-
mtrace_basetime Miliseconds
기본값
100
mtrace_alltx_enabled
옵션의 값이true
이면 너무 많은 로그가 남을 수 있습니다. 이때는 트레이스 로깅량을 줄일 필요가 있습니다. -
stat_mtrace_enabled Boolean
기본값
false
Caller와 Callee의 상관관계 통계를 수집합니다. Caller에 적용하면 Caller의 상세 정보를 보내주고 Callee에 적용하면 url 단위 Caller-Callee 호출 통계를 수집 서버로 전송합니다.