트랜잭션 프로파일

트랜잭션이 느리거나 오류가 있다면 그 원인을 추적하기 위해서 수행 이력을 스텝별로 추적할 필요가 있는데 이를 트랜잭션 프로파일링이라고 합니다.

와탭이 수집하는 스텝의 종류에는 크게 SQL 스텝, HTTP CALL 스텝, 메시지 스텝, SOCKET 오픈 스텝, DB 연결 스텝, 메소드 스텝 등이 있습니다.

DB 연결 스텝

수집 방식: START-END
RDB에 대한 연결에 대한 성능을 포함합니다. 스텝 정보에는 이름, 응답시간, 에러를 포함합니다.

SQL 스텝

수집 방식: START-END
JDBC SQL에 대한 성능을 포함합니다. 스텝 정보에는 연결 정보, SQL문, 에러가 포함됩니다.

HTTP Call 스텝

수집 방식: START-END
외부 http 서비스 호출에 대한 성능을 포함합니다. 스텝 정보에는 url, host, port, 응답시간, 에러가 포함됩니다.

Message 스텝

수집 방식: ADD
메시지 스텝을 프로파일을 수집하는 과정에서 비정형적인 모든 구간에 대한 이력을 수집할 때 사용됩니다. file 오픈 혹은 사용자도 임의의 위치를 지정하는 데 사용할 수 있습니다.

SOCKET 스텝

수집 방식: ADD
Socket 오픈을 표현하는 스텝입니다.

METHOD 스텝

수집 방식: START-END
메소드 응답 시간을 추적합니다.

ACTIVE STATCK 스텝

수집 방식: ADD
액티브 스텝에 대한 정보를 포함합니다. 별도 쓰레드가 생성하여 프로파일에 추가하는 방식으로 수집합니다.

상세 분석

와탭은 트랜잭션의 성능을 분석하기 위해 이름과 클라이언트 정보 등의 속성, 트랜잭션의 처리 성능 그리고 각 구간별 상세 수행이력을 수집하고 보여줍니다.

Screenshot 2020 12 15 W JAVA DEMO 5490   Application Monitoring13
Figure 1. 프로파일 상세 분석

이 중 상단에 위치한 트랜잭션 속성과 성능 정보에 대한 설명은 다음과 같습니다.

Screenshot 2020 12 15 W JAVA DEMO 5490   Application Monitoring14
트랜잭션 속성 및 성능
프로젝트 코드

와탭 모니터링 프로젝트 코드

Oid

애플리케이션(에이전트) 오브젝트 아이디

Oname

애플리케이션 오브젝트 이름

Type

애플리케이션 타입 - Java, Node.Js, PHP, Python 등

Tid

트랜잭션 아이디

UrlHash

URL의 hash 값

UserToken

사용자 토큰 - 이 값은 와탭이 부여한 고유한 사용자 아이디

Method

HTTP 메소드 - GET, POST, PUT, HEAD 등

StartTime

트랜잭션 시작 시간

EndTime

트랜잭션 종료 시간

Elapsed

트랜잭션 수행 시간

CpuTime

CPU 점유 시간

MemAlloc

트랜잭션이 사용한 메모리 량

Ipaddr

클라이언트 IP

Country

클라이언트 국가 정보

City

클라이언트 도시 정보

SqlCount

SQL 수행 건수

SqlTime

SQL 수행 시간

FetchCount

SQL에서 데이터를 조회한 레코드 건수

FetchTime

레코드를 조회하는데 걸린 시간(중첩이 발생하거나, 타 로직이 포함될 수도 있음)

HttpcCount

외부 Http Call 건수

HttpcTime

외부 Http Call 시간

ClientOs

클라이언트 OS

ClientOsPro

클라이언트 OS 회사

ClientType

클라이언트 타입 (예 브라우저)

ClientName

클라이언트 브라우저 이름

UserAgent

웹 클라이언트 정보, 이것을 파싱하여 ClientOs, ClientOsPro 등의 정보를 추출함

MTID

멀티 서버 트랜잭션 아이디

Depth

멀티 서버 트랜잭션이 몇 번째 티어인지 표시

Caller TID

나를 호출한 트랜잭션의 Tid

1. [Show Stats]를 클릭하면 해당 URL의 통계 데이터를 조회할 수 있습니다
2. [MTID]를 클릭하면 연관 트랜잭션[1]을 추가 조회 분석할 수 있습니다.
3. 에이전트 애플리케이션 타입이나 설정에 따라 표시되지 않는 항목이 있을 수 있습니다. 에이전트 매뉴얼을 참고 바랍니다.

프로파일 다이어그램은 트랜잭션 수행 상세 이력입니다. 수행 상세 이력을 보여주기 위해 나타나는 각 칼럼 정보는 다음과 같습니다.

Screenshot 2020 12 15 W JAVA DEMO 5490   Application Monitoring15
트랜잭션 프로파일 정보
번호

스텝의 발생 순서

누적시간

해당 스텝까지의 누적 수행 시간

스텝 시간

해당 스텝에서의 응답시간

CPU Time

해당 스텝까지 누적 CPU 사용 시간

메모리

해당 스텝까지 누적 메모리 사용량

단계

해당 스텝의 세부 수행 내역

이 중 `단계`는 다음과 같이 구분됩니다.

단계
HTTP-HEADERS

수집된 HTTP Header 정보를 보여줍니다.

HTTP-PARAMETERS

수집된 HTTP Parameter 정보를 보여줍니다.

DB연결

DB 연결 URL과 연결 시간을 보여줍니다.

SQL

JDBC SQL에 대한 SQL문, 응답시간 에러를 보여줍니다.

HTTP Call

외부 http 서비스 URL과 응답시간, 에러를 보여줍니다.

Message

메시지 스텝을 비정형적 모든 구간에 대한 이력을 표시합니다.
file 오픈, Http Header 출력, 파라미터 출력 혹은 사용자도 임의의 위치를 지정하는 데 사용할 수 있습니다.

SOCKET

Socket 오픈을 표현합니다. 응답시간은 추적하지 않습니다.

METHOD

에이전트에 추적이 설정된 메소드 이름과 응답시간을 보여줍니다.

ACTIVE STATCK

액티브 스택이 수집되었음을 의미합니다. 클릭해서 액티브 스택을 확인할 수 있습니다.

Screenshot 2020 12 15 W JAVA DEMO 5490   Application Monitoring16
Figure 2. 액티브스택 스텝 상세보기

트랜잭션 프로파일은 트리뷰 형태로도 볼 수 있습니다.

Screenshot 2020 12 15 W JAVA DEMO 5490   Application Monitoring17
Figure 3. 프로파일 TREE View 분석
메소드 프로파일 설정을 많이 한 경우 리스트 뷰에서 상태 분석이 잘 안될 수 있습니다. 반대로 메소드 프로파일 설정을 거의 하지 않은 상태에서는 리스트 뷰가 분석하기에 유리합니다.

트랜잭션 파라미터 조회

SQL 변수, HTTP 쿼리를 조회하기 위해서는 에이전트 설정을 추가합니다.

whatap.conf
profile_sql_param_enabled=true #SQL 파라미터 조회 옵션 (1)
profile_http_parameter_enabled=true #HTTP 파라미터 조회 옵션 (2)
1 옵션이 적용되면 SQL 파라메타를 암호화하여 수집합니다.
2 옵션이 적용되면 HTTP 쿼리 파라메타를 암호화하여 수집합니다.

설정 적용 후 프로파일 스텝 내 SQL 문을 클릭하면 파라미터를 조회할 수 있습니다.

Screenshot 2020 12 15 W JAVA DEMO 5490   Application Monitoring18

파라미터 조회에 필요한 키는 에이전트 설치된 서버 $WHATAP_HOME/paramkey.txt 내에 6자리 문자열입니다. 필요시 다른 문자열로 변경 가능합니다.

paramkey.txt
whatap@vmwas01:/apps/whatap$ cat paramkey.txt
A1B2C3
paramkey.txt 내 키는 SQL 변수 조회, HTTP 쿼리 조회, Thread 중지에 필요합니다.

1. 멀티 서버 트랜잭션 연계 추적은 고급 기능 쳅터에서 별도 설명되어 있습니다.