트랜잭션
트랜잭션이란 사용자 브라우저의 요청을 처리하기 위한 서버 사이드의 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.*
노트-
이 옵션을 통해 등록한 메소드는 히트맵, 트레이스 분석 또는 트랜잭션 정보 창에서 Method 스텝으로 확인할 수 있습니다.
-
가급적 국소 범위에 적용할 것을 권장합니다. 광범위한 범위로 적용할 경우 애플리케이션의 성능 저하를 유발할 수 있습니다.
-
-
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 메소드에 대해서만 별도 대상으로 처리할지 여부를 설정합니다.
-
trace_service_port_enabled Boolean
기본값
false
트랜잭션의 이름에 포트 번호를 추가합니다.
-
profile_zip_enabled Boolean
기본값
false
프로파일 정보를 압축 전송합니다.
예외 처리
다음은 애플리케이션에서 발생하는 예외를 관리하고 모니터링하기 위한 옵션입니다. 특정 예외를 무시하거나 HTTP 상태 코드가 에러인 경우 에러로 처리할지 여부를 설정할 수 있습니다. 예외로 처리된 항목들은 히트맵 또는 트레이스 분석 창에서 정상 트랜잭션으로 표시됩니다.
-
httpc_status_ignore String
HTTP 상태 코드가 에러(
HTTPC_ERROR
)인 경우 무시할 수 있습니다. 여러 값을 대상으로 할 경우 쉼표(,) 를 구분자로 사용하세요.whatap.confhttpc_status_ignore=404,500
팁HTTP 상태 에러 코드 무시 / 에러 통계 미포함
-
httpc_status_ignore_set String
whatap.error.HTTPC_ERROR
를 무시합니다. 여러 값을 대상으로 할 경우 쉼표(,)를 구분자로 이용하세요.httpc_status_ignore_set=/a/b/c:400,/a/ab/c:404
와 같이 설정하세요. 이때 url은 통계/에러 분석에서HTTPC_URL
값을 입력합니다.whatap.confhttpc_status_ignore_set=/a/b/c:400,/a/ab/c:404
팁HTTP 상태 에러 코드 무시 / 에러 통계 미포함
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
로 설정하세요. 파라미터는 별도 보안키를 입력해야 조회할 수 있습니다.노트-
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개 이상의 값을 설정하려면 쉼표(,)를 구분자로 이용하세요.
노트이 옵션을 통해 등록한 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 메소드는 히트맵, 트레이스 분석 또는 트랜잭션 정보 창에서 수집 제외됩니다.
-
profile_http_header_ignore_keys String
기본값
Cookie,cookie,accept,user-agent,referer
HTTP 헤더 이름을 지정해 수집 정보에서 제외할 수 있습니다. 지정한 HTTP 헤더 이름의 값은 수집에서 제외되며, '#'으로 표시됩니다.
-
profile_http_parameter_keys String
설정된 키에 해당하는 파라미터 정보만 기록합니다. 여러 개를 등록할 때는 쉼표(,)를 구분자로 이용하세요. 설정하지 않을 경우 모든 파라미터 정보가 기록됩니다.
-
status_ignore String
무시하려는 HTTP 상태 코드를 설정할 수 있습니다. 여러 값을 대상으로 할 경우 쉼표(,)를 구분자로 사용하세요.
whatap.conf# example
status_ignore=408,500 -
status_ignore_set String
HTTP 상태 리턴 코드 중에서 무시하고 싶은 코드를 URL 단위로 설정할 수 있습니다.
whatap.conf# example
status_ignore_set=/api/test/timeout/{time}:408,/error:500 -
transaction_status_error_enable Boolean
기본값
true
HTTP 401, 403과 같이 정상 응답이 아닌 HTTP 상태 코드를 반환하는 경우 에러로 처리할지 여부를 설정합니다.
NON HTTP 트랜잭션 추적
다음은 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 호출 통계를 수집 서버로 전송합니다.
트레이스 데이터 샘플링
다음은 트레이스 데이터의 샘플링을 조절하고, 데이터의 전송 여부를 설정하는 옵션입니다. 이 옵션을 통해 사용자는 애플리케이션의 성능과 데이터 전송량을 관리할 수 있습니다.
에이전트 지원 범위: Node.js Agent v0.4.94 or later
Node.js 에이전트 v0.4.94 버전에서 socket.io 모니터링 모듈을 추가했습니다. trace_sampling_enabled
,trace_sampling_tps
옵션을 사용하여 샘플링된 데이터를 확인할 수 있습니다. trace_ignore_url_prefix
옵션에 /socket.io
경로를 추가하여 트레이스하지 않도록 설정하세요.
-
trace_sampling_enabled Boolean
기본값
true
트레이스 데이터 샘플링 수집 여부를 설정할 수 있습니다.
-
trace_sampling_tps Number
기본값
1000
트레이스 데이터 샘플링 수를 설정할 수 있습니다. 설정한 샘플링 수를 초과하는 데이터는 전송하지 않으며, 1초마다 초기화합니다.