본문으로 건너뛰기

XLOG 프로파일 분석

XLOG 프로파일 분석은 트랜잭션 내부의 실행 경로를 단계별로 추적하는 핵심 진단 도구입니다. XLOG 차트에서 영역을 드래그하면 해당 범위의 트랜잭션 목록과 각 트랜잭션의 프로파일 스텝(SQL, 메서드, 외부 호출, 스레드 덤프 등)을 상세하게 확인할 수 있습니다.


1. 페이지 개요

1.1 기능 설명

기능설명
드래그 영역 선택XLOG 차트에서 마우스 드래그로 시간/응답시간 범위를 선택하여 트랜잭션 필터링
트랜잭션 목록선택 영역 내 트랜잭션을 응답시간, SQL 시간, 외부 호출 시간 등과 함께 표시
프로파일 Overview트랜잭션의 전체 요약 정보 (서비스명, 응답시간, 에러 여부 등, 접기/펼치기 지원)
스텝별 실행 추적메서드 호출, SQL 실행, 외부 호출, 메시지 전송 등 단계별 실행 경로 표시
Gap Time 타임라인각 스텝 간의 시간 소비를 가로 막대 차트로 시각화
스텝 상세 조회개별 스텝 클릭 시 SQL 쿼리, 바인드 변수, Lock 정보, 스레드 덤프 등 상세 확인
포스트잇 탭팝업 우측 세로 탭 메뉴 (추가 분석 기능)
교차 트랜잭션 이동스텝 내 TX 링크 클릭으로 연관 트랜잭션 프로파일로 바로 이동
분산 추적 태그ZipkinTags를 통한 분산 추적 정보 표시

1.2 접근 경로

접근 방법: XLOG 페이지 또는 대시보드의 XLOG 차트에서 영역 드래그
접근 방법

프로파일 분석은 별도 메뉴가 아닌, XLOG 차트 위에서 마우스를 드래그하여 팝업창으로 열립니다. XLOG 페이지(대시보드 > 모니터링 > XLOG)와 대시보드의 XLOG 위젯 모두에서 접근할 수 있습니다.

1.3 용어 안내

용어설명
XLOG트랜잭션 로그를 분산형 차트(X: 시간, Y: 응답시간)로 표현한 것입니다
프로파일하나의 트랜잭션이 실행되는 동안의 내부 단계별 기록입니다
스텝 (Step)프로파일을 구성하는 각 단계입니다 (SQL 실행, 메서드 호출, 외부 호출 등)
Gap Time이전 스텝이 끝난 후 다음 스텝이 시작되기까지의 대기 시간입니다
경과 시간 (elapsed)각 스텝이 실행에 소비한 시간입니다
누적 시간트랜잭션 시작부터 현재 스텝까지의 총 경과 시간입니다
CPU_T트랜잭션 시작부터 현재 스텝까지 누적된 CPU 소비 시간입니다
txLink연관 트랜잭션으로 이동할 수 있는 교차 트랜잭션 링크입니다

2. 화면 구성

2.1 주요 영역

영역설명
팝업 좌측 상단ServiceSelector — 서비스(오브젝트) 셀렉터
왼쪽 패널드래그로 선택된 트랜잭션 목록 (데이터 그리드)
오른쪽 패널 상단프로파일 Overview (트랜잭션 요약 정보, 접기/펼치기)
오른쪽 패널 중단Gap Time 타임라인 차트
오른쪽 패널 하단프로파일 스텝 목록 (스크롤 가능)
팝업 우측 세로 탭포스트잇 탭(StickyTabContainer) — 추가 분석 탭 메뉴

2.2 UI 구성도

2.3 전체 화면

XLOG 프로파일 분석 전체 화면


3. XLOG 차트에서 프로파일 열기

3.1 드래그 선택 방법

  1. XLOG 차트 위에서 마우스를 누릅니다 (드래그 시작).
  2. 원하는 영역까지 마우스를 끌어갑니다. 반투명 파란색 선택 박스가 표시됩니다.
  3. 마우스를 놓으면 선택 영역 내의 트랜잭션이 필터링되어 프로파일 팝업창이 열립니다.
초보자 안내

XLOG 차트에서 점(도트) 하나하나가 개별 트랜잭션입니다. Y축(세로)이 높을수록 응답이 느린 트랜잭션이므로, 위쪽 영역을 드래그하면 느린 트랜잭션만 필터링할 수 있습니다.

3.2 Y축 기준 선택

XLOG 차트의 Y축 기준을 변경하면 다른 관점에서 트랜잭션을 분석할 수 있습니다.

Y축 기준설명사용 시점
응답 시간 (elapsed)전체 응답 시간 기준 (기본값)전반적인 성능 분석
SQL 시간 (sqlTime)SQL 실행 시간 기준데이터베이스 병목 분석
외부 호출 시간 (apicallTime)HTTP 외부 호출 시간 기준외부 서비스 병목 분석

3.3 그룹 필터 연동

XLOG 페이지의 그룹핑 탭에서 특정 항목을 클릭하면 해당 그룹만 하이라이트됩니다. 이 상태에서 드래그하면 하이라이트된 트랜잭션만 필터링됩니다.

그룹 기준필터 대상예시
서비스특정 URL/서비스 경로/api/users 호출만 필터링
IP 주소특정 클라이언트 IP192.168.1.100에서의 요청만 필터링
사용자 에이전트특정 브라우저/OSChrome 브라우저 요청만 필터링
리퍼러특정 이전 페이지특정 페이지에서 유입된 요청만 필터링

4. 왼쪽 패널 — 트랜잭션 목록

4.1 ServiceSelector

팝업 좌측 상단에 ServiceSelector가 표시됩니다. 분석할 서비스(오브젝트)를 전환하면 해당 서비스의 트랜잭션 목록이 갱신됩니다.

4.2 데이터 그리드 컬럼

드래그로 선택된 트랜잭션이 아래 컬럼과 함께 표시됩니다.

컬럼설명정렬
객체명서비스/에이전트 이름가능
종료 시간트랜잭션 종료 시각가능
IP 주소클라이언트 IP가능
서비스요청 URL/경로-
응답 시간전체 응답 시간 (ms)가능
API 호출 시간외부 호출에 소비된 시간 (ms)가능
API 호출 수외부 호출 횟수가능
SQL 시간SQL 실행에 소비된 시간 (ms)가능
SQL 수SQL 실행 횟수가능
CPUCPU 소비 시간 (ms)가능
메모리할당된 메모리 (KB)가능

4.3 트랜잭션 선택

  • 원하는 트랜잭션 행을 클릭하면 오른쪽 패널에 해당 트랜잭션의 프로파일이 표시됩니다.
  • 한 번에 1개 트랜잭션만 선택 가능합니다.
분석 요령

응답 시간 컬럼으로 내림차순 정렬하면 가장 느린 트랜잭션을 먼저 분석할 수 있습니다.


5. 오른쪽 패널 — 프로파일 상세

5.1 프로파일 Overview

선택한 트랜잭션의 전체 요약 정보가 표시됩니다.

항목설명
서비스명모니터링 대상 서버/에이전트 이름
총 응답 시간트랜잭션 전체 응답 시간
시작 시간트랜잭션 시작 시각
종료 시간트랜잭션 종료 시각
에러 메시지에러 발생 시 빨간색으로 강조 표시
스레드 덤프 여부스레드 덤프가 캡처된 경우 표시
XLOG 타입트랜잭션 유형
login트랜잭션을 발생시킨 사용자 ID (에이전트에서 수집한 경우)
text1 ~ text5에이전트에서 커스텀으로 수집한 텍스트 필드 (최대 5개)
Overview 접기/펼치기

Overview 내용이 180px을 초과하면 자동으로 접힘 상태로 표시됩니다. 접기/펼치기 버튼을 클릭하여 전체 내용을 확인하십시오.

5.2 Gap Time 타임라인

각 스텝의 시간 소비를 가로 막대 차트로 시각화합니다.

범례색상의미
누적 시간-트랜잭션 시작부터 현재 스텝까지의 총 시간
Gap Time-이전 스텝 종료 ~ 현재 스텝 시작 사이의 대기 시간
경과 시간-현재 스텝 자체의 실행 시간
  • 타임라인의 특정 스텝을 클릭하면 아래 스텝 목록에서 해당 위치로 자동 스크롤됩니다.

5.3 프로파일 스텝 목록

트랜잭션의 모든 실행 단계가 순서대로 나열됩니다.

각 스텝 행의 구성:

[누적시간 | 갭시간 | 경과시간] | [스텝 유형 태그] [메인 값 (메서드명/SQL/URL)]
| ████████████ (경과시간 비율 막대)

elapsed 레벨별 색상 구분:

경과 시간색상의미
0 ~ 100ms초록색빠른 응답
100 ~ 500ms노란색보통 응답
500ms 이상빨간색느린 응답 (병목 가능성)

스텝 유형별 색상:

색상스텝 유형설명
파란색METHOD메서드(함수) 실행
주황색SQL데이터베이스 쿼리 실행
보라색API CALL외부 HTTP 호출
빨간색ERROR에러 발생
회색MSG / DUMP / 기타메시지, 스레드 덤프, 기타
  • 스텝 행을 클릭하면 스텝 상세 팝업이 표시됩니다.
  • 들여쓰기(indent)로 호출 깊이를 표현합니다.

5.4 포스트잇 탭(StickyTabContainer)

프로파일 팝업 우측에 세로 탭 메뉴가 표시됩니다. 탭을 클릭하면 해당 탭의 추가 분석 정보가 표시됩니다.

포스트잇 탭 활용

포스트잇 탭을 통해 프로파일 주요 정보 외에 분산 추적, 커스텀 데이터 등 추가 컨텍스트를 확인할 수 있습니다.

5.5 ZipkinTags — 분산 추적 태그

분산 트레이싱(Zipkin/OpenTelemetry 호환) 데이터가 수집된 경우, ZipkinTags 섹션에서 분산 추적 태그 목록을 확인할 수 있습니다.

항목설명
태그 키분산 추적 시스템이 기록한 속성 이름
태그 값해당 속성의 값 (서비스명, 요청 URL, 상태 코드 등)

6. 프로파일 스텝 유형

6.1 주요 스텝 유형

유형표시명설명활용
METHODMETHODJava 메서드 실행 기록병목 메서드 식별
SQLSQL데이터베이스 쿼리 실행느린 쿼리 분석
API CALLAPI CALL외부 HTTP/REST 호출외부 서비스 지연 분석
MESSAGEMSG로그/메시지 기록실행 흐름 추적
SOCKETSOCKET소켓 통신네트워크 통신 분석
DUMPDUMP스레드 덤프 캡처데드락/Lock 분석
THREAD SUBMITTHREAD SUBMIT비동기 스레드 작업 제출비동기 처리 추적
SPANSPAN분산 추적 Span마이크로서비스 간 추적

6.2 프로파일 메시지 종류 상세

스텝 유형세부 종류설명
SQLEXECUTESQL 쿼리 실행
SQLFETCHSQL 결과 페치(행 데이터 가져오기)
External CallAPI CALLHTTP/HTTPS 외부 서비스 호출
MethodPARAM메서드 진입 시 파라미터 기록
MethodRETURN메서드 반환 시 반환값 기록
SocketIN소켓 수신 데이터
SocketOUT소켓 송신 데이터
FileR파일 읽기
FileW파일 쓰기
ThreadASYNC비동기 스레드 제출

6.3 요약 스텝 유형

다수의 동일 스텝이 있으면 요약 형태로 표시됩니다.

유형표시명설명
METHOD SUMMETHOD SUM동일 메서드의 호출 횟수 및 총 시간 요약
SQL SUMSQL SUMSQL 실행 횟수 및 총 시간 요약
API CALL SUMAPI CALL SUM외부 호출 횟수 및 총 시간 요약
MESSAGE SUMMESSAGE SUM메시지 횟수 요약
SOCKET SUMSOCKET SUM소켓 통신 횟수 요약

7. 스텝 상세 팝업

스텝 행을 클릭하면 상세 정보 팝업이 표시됩니다. 스텝 유형에 따라 표시 내용이 달라집니다.

7.1 공통 정보

항목설명
시작 시간스텝 실행 시작 시각
Gap Time이전 스텝 이후 대기 시간
경과 시간스텝 실행 시간
에러에러 발생 시 메시지 표시 (빨간색)

7.2 SQL 스텝 상세

항목설명
SQL 쿼리실행된 SQL 전문
바인드 변수SQL에 전달된 파라미터 값 (타입: 값 형식)
실행 시간SQL 실행에 소비된 시간
SQL 분석

SQL 쿼리와 바인드 변수를 함께 확인하여 DBA에게 전달하면 실행 계획 분석이 가능합니다. 느린 SQL의 경우 인덱스 누락이나 풀 스캔이 원인인 경우가 많습니다.

SQL 마스킹 안내

**SQL 조회 권한(canViewSql)**이 없는 경우 SQL 쿼리와 바인드 변수가 ***로 마스킹 처리되어 표시됩니다. 권한이 필요하면 관리자에게 문의하십시오.

7.3 DUMP 스텝 상세

스레드 덤프가 캡처된 경우 다음 정보가 표시됩니다.

항목설명
스레드 덤프스레드 스택 트레이스
Lock Owner IDLock을 점유 중인 스레드 ID
Lock Owner NameLock 소유주 스레드 이름
Lock NameLock 객체 이름
고급 사용자 참고

DUMP 스텝은 트랜잭션 실행 중 자동으로 캡처된 스레드 덤프입니다. 응답 시간이 설정된 임계값을 초과하면 자동으로 캡처됩니다. Lock 정보를 통해 데드락 상황을 진단할 수 있습니다.

스텝 목록 중 TX 링크 아이콘이 표시된 스텝이 있습니다. 이를 클릭하면 연관된 다른 트랜잭션의 프로파일로 바로 이동할 수 있습니다.

동작설명
TX 링크 아이콘 클릭해당 스텝에서 호출한 연관 트랜잭션의 프로파일 팝업으로 이동
뒤로 가기팝업 내 뒤로 가기 버튼으로 이전 트랜잭션으로 돌아옵니다

7.5 스냅샷 정보

일부 스텝에는 해당 시점의 시스템 상태 스냅샷이 포함됩니다. CPU, 메모리, 스레드 정보 등을 확인할 수 있습니다.


8. 프로파일 탭별 읽는 법

FlowKat 프로파일은 다양한 관점으로 트랜잭션을 분석할 수 있도록 여러 탭을 제공합니다. 각 탭의 올바른 해석 방법을 숙지하면 병목 원인을 더 빠르게 파악할 수 있습니다.

8.1 타임라인(Timeline) 탭 읽는 법

  • X축: 트랜잭션 시작 시각 ~ 종료 시각
  • 바 길이: 각 스텝의 소요 시간 (길수록 오래 걸림)
  • 분석 포인트: 가장 긴 바를 찾으십시오. 그 스텝이 전체 응답 시간의 주요 병목입니다.
  • Gap: 바와 바 사이의 빈 공간이 Gap Time입니다. Gap이 크면 대기(잠금, GC, 스케줄링 지연) 가능성이 있습니다.

8.2 호출 트리(Call Tree) 탭 읽는 법

  • 트리 구조: 들여쓰기로 호출 깊이를 표현합니다. 부모 노드 = 상위 메서드, 자식 노드 = 그 안에서 호출된 메서드
  • 부모 노드 응답 시간: 부모 노드의 경과 시간은 하위 자식 노드 시간의 합보다 크거나 같습니다.
  • 분석 포인트: 깊이가 깊어질수록 반복 호출이나 재귀 가능성이 높습니다. 동일 SQL이 수십 번 반복되는 경우 N+1 문제를 의심하십시오.

8.3 텍스트(Text) 스텝 목록 읽는 법

스텝 목록의 각 행에 포함된 시간 값의 의미는 다음과 같습니다.

컬럼설명
누적 시간트랜잭션 시작부터 이 스텝까지의 경과 시간 (절대적 위치)
GAP이전 스텝 종료 ~ 이 스텝 시작 사이의 대기 시간
경과 시간 (elapsed)이 스텝 자체의 실행 시간
CPU_T트랜잭션 시작부터 이 스텝까지의 누적 CPU 소비 시간

GAP 해석 예시:

  • GAP 값이 수십 ms 이상이면 이전 스텝 이후 CPU가 다른 작업(GC, 스레드 스케줄링, Lock 대기)을 처리하고 있었을 가능성이 높습니다.

9. 고급 활용: 트랜잭션 분석 시나리오

9.1 시나리오 1: 느린 트랜잭션의 병목 구간 식별

  1. XLOG 차트에서 Y축 상단(응답 시간이 긴 영역) 을 드래그합니다.
  2. 트랜잭션 목록에서 응답 시간이 가장 긴 행을 선택합니다.
  3. 프로파일 스텝 목록에서 경과 시간이 큰 스텝을 찾습니다.
  4. 해당 스텝의 유형에 따라 원인을 분석합니다:
    • SQL (주황색): 느린 쿼리 → SQL 상세에서 쿼리 확인
    • API CALL (보라색): 외부 서비스 지연 → 호출 대상 확인
    • METHOD (파란색): 코드 로직 병목 → 메서드 이름 확인

9.2 시나리오 2: SQL 성능 분석

  1. XLOG 차트의 Y축 기준을 "SQL 시간"으로 변경합니다.
  2. 상단 영역을 드래그하여 SQL 실행이 오래 걸린 트랜잭션을 필터링합니다.
  3. 프로파일에서 SQL 스텝(주황색) 을 클릭합니다.
  4. 상세 팝업에서 SQL 쿼리와 바인드 변수를 확인합니다.
  5. 쿼리를 복사하여 DBA에게 전달합니다.

9.3 시나리오 3: Gap Time으로 대기 시간 분석

  1. 프로파일 스텝에서 Gap Time이 큰 스텝을 찾습니다.
  2. Gap Time이 크다는 것은 이전 스텝 종료 후 다음 스텝 시작까지 대기 시간이 길다는 의미입니다.
  3. 일반적인 원인:
    • 스레드 스케줄링 대기: 서버 리소스 부족
    • Lock 대기: 다른 트랜잭션이 자원을 점유 중
    • GC(가비지 컬렉션): JVM 메모리 정리 중

9.4 시나리오 4: 에러 트랜잭션 분석

  1. XLOG 차트에서 에러 필터를 활성화합니다 (빨간색 점만 표시).
  2. 에러 트랜잭션 영역을 드래그합니다.
  3. 프로파일 Overview에서 에러 메시지를 확인합니다.
  4. 스텝 목록에서 빨간색(ERROR) 스텝을 찾아 클릭합니다.
  5. 상세 팝업에서 에러 원인을 확인합니다.

9.5 시나리오 5: 연관 트랜잭션 추적 (교차 트랜잭션)

  1. 프로파일 스텝 목록에서 TX 링크 아이콘이 표시된 스텝을 찾습니다.
  2. 아이콘을 클릭하면 연관 트랜잭션의 프로파일 팝업이 열립니다.
  3. 서비스 간 호출 체인을 추적하여 마이크로서비스 환경의 전체 트랜잭션 경로를 확인합니다.

9.6 시나리오 6: 특정 서비스의 트랜잭션만 분석

  1. XLOG 페이지의 그룹핑 탭에서 "서비스" 기준으로 이동합니다.
  2. 분석할 서비스(예: /api/users)를 클릭하여 하이라이트합니다.
  3. XLOG 차트에서 하이라이트된 점(도트)만 보이는 영역을 드래그합니다.
  4. 해당 서비스의 트랜잭션만 필터링되어 프로파일 팝업이 열립니다.

10. 권한별 UI 안내

권한 제한 안내

일부 분석 기능은 역할(Role)에 따라 제한될 수 있습니다.

기능필요 권한권한 없을 때
SQL 쿼리 및 바인드 변수 조회canViewSqlSQL 내용이 ***로 마스킹됩니다
API 호출 상세 정보 조회canViewApiAPI 호출 내용이 마스킹됩니다
라이선스 미보유 시유효한 라이선스스텝 상세 대신 LicenseNotice 화면이 표시됩니다

11. 문제 해결

11.1 자주 발생하는 문제

증상원인해결 방법
드래그해도 프로파일이 열리지 않음선택 영역에 트랜잭션이 없음도트가 있는 영역을 드래그하십시오
프로파일 스텝이 비어 있음에이전트 설정에서 프로파일 수집이 비활성화됨에이전트 프로파일 설정을 확인하십시오
SQL 쿼리가 마스킹(***) 표시됨SQL 조회 권한(canViewSql) 없음역할 설정에서 SQL 조회 권한을 확인하십시오
API 호출 정보가 마스킹 표시됨API 조회 권한(canViewApi) 없음역할 설정에서 API 조회 권한을 확인하십시오
"선택한 트랜잭션 없음" 표시행을 선택하지 않음왼쪽 패널에서 트랜잭션 행을 클릭하십시오
스텝 상세가 표시되지 않음라이선스 미보유라이선스 상태를 확인하십시오
login, text1~5 값이 없음에이전트에서 해당 필드 미수집에이전트의 커스텀 필드 수집 설정을 확인하십시오
TX 링크가 표시되지 않음해당 스텝에 교차 트랜잭션 없음TX 링크는 연관 트랜잭션이 있을 때만 표시됩니다

12. 관련 문서