본문으로 건너뛰기

트랜잭션 분석하기

히트맵

홈 화면 > 프로젝트 선택 > 분석 > 히트맵

와탭 모니터링 서비스 초기 화면에서 프로젝트를 선택한 다음 분석 > 히트맵 메뉴를 선택하세요.

노트

히트맵대시보드 > 애플리케이션 대시보드히트맵 위젯을 통해 접근할 수도 있습니다.

상세 분석

히트맵

number1 에이전트 영역

현재 프로젝트와 연결된 에이전트를 선택해 필터링할 수 있습니다. 아이콘 버튼을 선택하면 number2 영역에서 히트맵 트랜잭션 차트를 확인할 수 있습니다.

number2 히트맵 트랜잭션 차트

지연 문제가 있는 트랜잭션이 포함된 경우 히트맵 트랜잭션 차트에서 주황색이나 붉은색으로 표시됩니다. 정상 트랜잭션만 포함된 경우 파란색으로 표시됩니다.

number3 선택 영역

실시간 히트맵 차트를 드래그하면 선택 영역의 number4 애플리케이션 목록과 트랜잭션 정보를 확인할 수 있는 number5 TX 트레이스 목록이 나타납니다.

number4 애플리케이션 목록

차트에서 선택된 영역에 포함되는 트랜잭션 수와 에러 수를 확인할 수 있습니다. 목록 중에서 원하는 애플리케이션을 선택하면 해당 애플리케이션의 number5 TX 트레이스 목록에 세부 정보가 나타납니다.

number5 TX 트레이스 목록

TX 트레이스 목록은 세부 정보를 가지고 있습니다. 목록에서 원하는 트랜잭션을 선택하면 트랜잭션 정보 창이 나타납니다. 트랜잭션 정보 창에서 해당 트랜잭션의 트레이스 상세 분석을 확인할 수 있습니다. 자세한 내용은 다음 문서를 참조하세요.

히트맵 패턴의 이해

히트맵은 트랜잭션의 종료시간은 X축, 응답시간은 Y축으로 한 분포 차트입니다. 정상적인 웹 애플리케이션이라면 수 초 이하 구간에 집중된 분포를 보입니다.

hitmap-pattern

히트맵 라인 분석하기

  • 세로줄(LOCK 현상) 패턴

    트랜잭션 처리 중 일시적인 락(Not only DB Lock)이 발생하면 이로 인해 처리를 대기합니다. 락이 해소되면 처리 대기 중 트랜잭션들은 비슷한 시간대에 함께 종료됩니다. 그러면 다음과 같이 세로로 줄이 만들어집니다.

    hitmap-lock

    세로줄 패턴으로 락을 감지하는 것은 매우 강력한 개념입니다. 특히 마이크로 서비스 아키텍처에서는 백엔드 시스템에서 발생하는 LOCK도 동일하게 감지될 수 있습니다.

    hitmap-front-api-db

    Front 애플리케이션의 응답 패턴 세로줄은 Back-End 시스템이 사용하는 DB에서 락이 발생한 경우에도 감지됩니다.

  • 가로줄(타임아웃) 패턴

    10초 타임아웃 조건에서 해당 자원이 부족하면 트랜잭션들은 10초 대기 후 타임아웃 에러가 발생합니다. 이때 히트맵 10초 부근에 다음과 같이 가로줄이 생깁니다.

    hitmap-timeout

    타임아웃 이후 재시도하는 로직이 있다면 그림처럼 가로라인이 10초 단위로 반복됩니다. 다음은 실제 장애 상황의 히트맵입니다.

    hitmap-error

    (1) 구간에서 응답시간이 급증했고 (2) 구간의 빨간 라인은 전형적인 가로 라인 패턴입니다. (1) 구간 부하 발생으로 ConnectionPool이 소진되고 (2) 구간은 ConnectionPool 부족으로 2차 타임아웃 장애가 발생한 상황입니다.

패턴 분석 활용

트랜잭션 응답분포에 줄이 보인다는 것은 병목이 있다는 것입니다. 일시적인 락킹이면 세로줄이 그 병목이 타임아웃으로 빠지면 가로 줄이 만들어집니다.

hitmap-pattern-analysis

문제를 분석할 때 라인에 포함된 트랜잭션만을 선택적으로 분석해서 문제를 빠르게 찾아낼 수 있습니다.

머신러닝 기반 응답 패턴 분석

머신러닝 기술을 통해 히트맵 패턴을 분석 후 비정상 여부를 자동 감지해 경고를 발행하는 기능입니다.

Machine learning analytics

비정상 패턴 예시

월 수백 TB의 성능 데이터로부터 비정상 패턴을 학습하고 학습된 비정상 패턴과 유사한 패턴이 발생하는 경우 이에 대한 알람을 발행합니다.

  • 세로줄 패턴

    hitmap-abnormal1

  • 가로줄 패턴

    hitmap-abnormal2

  • 복합 패턴

    hitmap-abnormal3

  • 히트맵 알람

    hitmap ai alert

노트

히트맵 트랜잭션 차트를 분석하는 방법에 대한 자세한 설명은 다음 문서를 참조하세요.

예외 처리(WARNING) 기준

Node.js 애플리케이션 환경에서 발생하는 에러를 Node.js 에이전트가 예외 처리하는 기준에 대해서 안내합니다. Node.js 에이전트는 다음 기준의 경우에만 에러 처리를 합니다.

  • Status Code 400 이상 에러 처리

  • HTTP call 에러 처리

  • 와탭에서 정의한 에러 처리

서비스 화면에서 에러 표시

hitmap, Trace analysis

히트맵 위젯, 트레이스 분석 창을 통해서 확인할 수 있는 에러 단계는 대부분 WARNING 수준에 해당합니다.

Status Code 400 이상 에러 처리

HTTP 응답 코드가 400 이상인 경우에는 예외 클래스(Exception Class)가 발생하지 않더라도 에러로 처리합니다. 다음은 HTTP 상태 코드 기반 에러 처리 활성화 여부를 설정하는 에이전트 옵션입니다.

whatap.conf
transaction_status_error_enable=true
노트

transaction_status_error_enable 옵션에 대한 자세한 내용은 다음 문서를 참조하세요.

HTTP call 에러 처리

HTTP 호출 중 발생하는 에러는 SLOW_HTTPC, httpc error 등의 형태로 표시됩니다.

와탭에서 정의한 에러 처리

와탭 모니터링 서비스에서는 특정한 조건에 따라 에러로 처리합니다.

  • TOO_MANY_RECORDS: fetch 건수 10,000건 이상

    관련한 에이전트 옵션은 다음 문서를 참조하세요. profile_error_sql_fetch_max=10000

  • SLOW_SQL: SQL 시간 30,000ms 이상

    관련한 에이전트 옵션은 다음 문서를 참조하세요. profile_error_sql_time_max=30000

  • SLOW_HTTPC: HTTP call 경과 시간이 10,000ms 이상

    관련한 에이전트 옵션은 다음 문서를 참조하세요. profile_error_httpc_time_max=10000

  • httpc error: HTTP call status code 400 이상인 경우

    노트

    httpc error는 에이전트 설정 없이 자동 수집합니다.

  • status error: 트랜잭션 status code 400 이상인 경우

    관련한 에이전트 옵션은 다음 문서를 참조하세요. transaction_status_error_enable=true

트랜잭션 에러 단계 INFO 처리

에이전트 설정을 통해서 일부 에러를 정상 상태로 표시하거나 무시할 수 있습니다. 히트맵 위젯에서 표시되는 레벨은 INFO(파란색)입니다.

다음 조건에 해당하면 에러 처리하지 않습니다.

  • transaction_status_error_enable 옵션의 값이 false인 경우

    whatap.conf
    # default true
    transaction_status_error_enable=false
  • status_ignore 옵션에 정의한 트랜잭션의 상태 코드인 경우

    whatap.conf
    # Separated by commas(,)
    status_ignore=400,404,500
  • status_ignore_set 옵션에 정의한 특정 트랜잭션의 URL과 상태 코드 조합인 경우

    whatap.conf
    # URL:StatusCode
    status_ignore_set=/api/posts/test/timeout:200,/error:500
  • httpc_status_ignore 옵션에 정의한 HTTP 상태 코드인 경우

    whatap.conf
    # Separated by commas(,)
    httpc_status_ignore=400,404,500
  • httpc_status_ignore_set 옵션에 정의한 URL과 HTTP 상태 코드 조합인 경우

    whatap.conf
    httpc_status_ignore_set=/api/posts/test/timeout:408,/api/apache/httpclient/posts/timeout:500
노트