본문으로 건너뛰기

트랜잭션

트랜잭션은 사용자 브라우저의 요청을 처리하는 서버 사이드의 Logical Unit of Work(LUW)입니다. 웹 애플리케이션에서 하나의 HTTP 요청을 받아 응답을 반환하는 전체 과정이 트랜잭션에 해당합니다.

애플리케이션의 성능은 트랜잭션 처리 성능으로 평가할 수 있습니다. 트랜잭션 성능은 트랜잭션 시작부터 종료까지의 응답 시간, 자원 사용량, 호출자 속성 등의 정보가 포함됩니다.

트랜잭션 성능은 응답 시간 분포와 통계 데이터를 기반으로 분석할 수 있습니다.

에이전트에서 트랜잭션 성능을 추적해 설정할 수 있는 옵션을 다음과 같이 제공합니다.

트랜잭션 트레이싱​

다음은 애플리케이션 내의 각 트랜잭션의 실행 경로를 상세하게 추적할 수 있는 에이전트 옵션입니다. 최소 응답 시간부터 트랜잭션의 실행 스텝 수까지 다양한 측면을 조정할 수 있습니다.

  • profile_basetime MiliSecond

    기본값 500

    트레이스의 상세 정보를 수집할 최소 응답 시간을 설정합니다. 설정한 값 이하의 시간 내에 트랜잭션이 종료된 경우 트레이스 정보를 수집하지 않습니다. 단, 5분 단위로 최초 호출된 URL과 에러가 발생한 트랜잭션에 대한 트레이스 정보는 수집합니다.

    노트

    profile_basetime 옵션에 상관없이 에러를 수집하려면 profile_concern_error_enabled 옵션을 true로 설정하세요. 기본값 false로 설정하면 에러를 샘플링하게 됩니다

  • profile_zip_enabled Boolean

    기본값 false

    프로파일 정보를 압축 전송합니다.

  • trace_useragent_enabled Boolean

    기본값 false

    트랜잭션의 유저 에이전트 정보 수집 여부를 설정합니다.

  • trace_user_agent_header_key String

    기본값 "" (빈 값)

    User-Agent 값을 읽어올 HTTP 헤더 키를 설정합니다. 프록시 등에서 원본 User-Agent가 커스텀 헤더로 전달될 때 사용하며, 값이 비어 있으면 수집하지 않습니다.

  • trace_referer_enabled Boolean

    기본값 false

    Referer 정보의 수집 여부를 설정합니다.

  • trace_referer_header_key String

    기본값 "" (빈 값)

    Referer 값을 읽어올 HTTP 헤더 키를 설정합니다. 값이 지정되면 해당 헤더 값을 트랜잭션의 referer 정보로 기록합니다.

예외 처리​

다음은 애플리케이션에서 발생하는 예외를 관리하고 모니터링하기 위한 옵션입니다. 특정 예외를 무시하거나 HTTP 상태 코드가 에러인 경우 에러로 처리할지 여부를 설정할 수 있습니다. 예외로 처리된 항목들은 히트맵 또는 트레이스 분석 창에서 정상 트랜잭션으로 표시됩니다.

  • httpc_status_ignore String ​

    HTTP 상태 코드가 에러(HTTPC_ERROR)인 경우 무시할 수 있습니다. 여러 값을 대상으로 할 경우 쉼표(,)를 구분자로 사용하세요.

    whatap.conf
    httpc_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.conf
    httpc_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 정규화할 때 패턴 값을 어노테이션에서 추출해 자동으로 파싱하는 기능을 활성화합니다.

  • 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_normalize_urls String

    기본값 "" (빈 값)

    정규화할 트랜잭션 URL 패턴을 설정합니다. 호출 URL 패턴을 파싱해 패스 파라미터를 제거합니다.

    노트

    예시

    /a/{v}/b라고 선언하면 a/123/b → a/{v}/b로 치환합니다. 여러 개를 등록할 때는 쉼표(,)를 구분자로 사용하세요. 치환 패턴 정리 후 보완이 필요합니다.

  • 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 이외의 트랜잭션을 추적하고 모니터링하기 위한 옵션입니다. 이 옵션을 통해 사용자는 백그라운드 작업이나 다른 프로토콜에 대한 트랜잭션을 세밀하게 추적할 수 있습니다.

  • trace_background_socket_enabled Boolean

    기본값 true

    소켓(TCP) 연결이 오픈될 때 트랜잭션을 시작한 상황에서만 오픈을 추적하는데 트랜잭션이 아닌 백그라운드 스레드에 의해 소켓이 오픈될 때도 추적합니다.

멀티 트랜잭션 추적​

다음은 애플리케이션 간 호출을 추적하고 모니터링하기 위한 옵션입니다. 이 옵션을 통해 사용자는 여러 애플리케이션 간의 상호작용을 이해하는 데 도움이 받을 수 있습니다. 제공하는 다양한 옵션을 통해 멀티 트랜잭션 추적의 세부적인 동작을 조정할 수 있습니다.

  • mtrace_enabled Boolean

    기본값 false

    멀티 트랜잭션 추적 기능(Multi Transaction ID, 이하 MTID) 사용 여부를 설정합니다. MTID를 추적하면 등록한 모든 애플리케이션 간의 호출을 확인할 수 있습니다.

  • 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초마다 초기화합니다.