운영 WAS 서버 모니터링 방법 / WhaTap 사용 방법

WhaTap 모니터링

WhaTap 서버 설치형은 웹 was 내 프로젝트 환경 정보를 엑셀에 작성하여 메일로 전달하면,
WhaTap에서 웹 was 트래픽을 수집하는 모니터링 서버 구축 후 웹 was에 에이전트를 설치해 주십니다.
허용된 공인 IP에서 WhaTap URL으로 접속하면 사용자 트래픽 정보를 볼 수 있습니다.

WhaTap SaaS형은 클라우드에서 제공하는 구독형 모니터링 서비스로, IT 인프라 관리 부담이 적습니다.
WhaTap 서버 설치형 대신 WhaTap SaaS형 사용 시, 서버 및 LB 비용을 절감할 수 있습니다.

WhaTap 모니터링 기능 요약

  • 애플리케이션 대시보드 : 전체 또는 일부 was에 대한 실시간 트래픽 지연 확인
  • 히트맵 : 최근 응답 완료 된 트래픽 및 경과 시간 확인
  • 트레이스 분석 : 히트맵 영역 드래그 시 확인 가능
  • 어떤 URL으로 들어온 트래픽이 얼마나 오래 걸렸는지 기록
  • 지연 쿼리 및 액티브 스택 (에러 메세지) 확인
  • 대시보드 > 트랜잭션 맵 : 요청이 많은 트랜잭션 Top 30 요청 건수 확인
  • 분석 > 일자별 애플리케이션 현황 : 금일 사용자 수, 시간당 사용자 수 등 확인 가능
  • 분석 > 성능 추이 : 동시접속 사용자 수, CPU 사용량, 힙 메모리 사용량 등 간결하게 확인 가능
  • 분석 > 매트릭스 차트★ : 동시접속 사용자 수, 특정 시간대 메모리 사용량, CPU 사용량, Thread 수, DB Pool 개수, TPS 등 다양한 정보 확인 가능
  • 분석 > 트랜잭션 검색 : 트랜잭션 URL 및 경과시간으로 트랜잭션 검색, 트레이스 분석 확인

WhaTap 단점

  • 쿼리 복호화에 실패하여 select $ 형태로 나오는 경우도 간혹 있습니다.

액티브 트랜잭션
오래 걸리는 트랜잭션은 15분 경과 시 자동으로 타임아웃 종료됩니다.


WhaTap에서 운영 에러 원인 분석 방법 (트러블 슈팅)

트랜잭션 지연 원인 파악 방법

  1. 지연되어 빨갛거나 노란 히트맵을 드래그해서 트레이스 분석 팝업을 엽니다.
  2. 트랜잭션 테이블 뷰에서 ‘경과’ 시간이 오래걸린 항목의 에러 메세지를 확인합니다.
  3. API URL이면 API 제공처에 문제가 발생했을 수 있고, 쿼리면 인덱스 튜닝이 필요할 수 있습니다.

DB 연결이 안되는 경우

Communications link failure The last packet successfully received from the server was 6,827,031 milliseconds ago. The last packet sent successfully to the server was 6,827,157 milliseconds ago.

트랜잭션의 트레이스 분석에서 DB 연결 부분에 경과시간이 오래 걸리고, 아래 select $이 나오는 경우
커넥션 풀이 부족하여 DB 연결을 하지 못하고 대기한 것일 수 있습니다.
운영 DB 설정에서 커넥션 풀 개수를 400개로 상향 조정하여 해결하였습니다.

실시간 에러 히트맵 확인

와탭 좌측 대시보드 : 애플리케이션 대시보드 메뉴 > 히트맵 우측 ‘에러’ 클릭
파란색 정상 히트맵을 제외하고, 노란색 및 빨간색 에러 히트맵만 볼 수 있습니다.

히트맵 분석으로 요청 지연 원인 파악

와탭 좌측 대시보드 : 애플리케이션 대시보드 메뉴 > 히트맵 우측 ‘>’ 클릭 > 시간 설정 (최근 5분, 금일 가능) > 문제 히트맵 드래그 > 문제 트랜잭션 URL 검색 (예시 : /user/evlTrgt/resetStdTest.do) > 하단 TX트레이스 표에서 트랜잭션 선택하여 레코드 요약 에러메세지 및 테이블 뷰에서 원인 확인

트랜잭션 검색으로 에러 원인 파악

운영 에러 발생시키고 > 와탭 좌측 분석 : 트랜잭션 검색 메뉴 > 시간 설정 (최근 5분 가능) > 필터 : 트랜잭션 인풋에 URL 입력 > 파란색 돋보기 버튼 클릭 > 검색된 트랜잭션 선택하여 레코드 요약 에러메세지 및 테이블 뷰에서 원인 확인


WhaTap 외에서 운영 에러 원인 분석 방법

리눅스 톰캣 로그 다운

cd 톰캣경로/logs
cp *년-월-일* /home1/유저명/log_down/년월일_1

파일질라로 폴더 생성 후 cp 명령어로 톰캣 로그를 옮기고, 로컬에 다운하여 백업하고 확인합니다.
운영서버 VPN 연결을 오래 지속하기보다는, 로컬에서 원인 파악하는 것이 좋습니다.

파일질라 파일 다운이 안되는 경우

cd /home1/유저명/log_down
chown -R 유저명:유저명 년월일_1

해당 폴더의 소유자를 root가 아닌, 현재 파일질라로 연결한 유저로 변경하면 됩니다.


WhaTap에서 운영서버 다운 원인 분석 방법

톰캣 서버 다운 여부 파악

와탭 좌측 대시보드 : 애플리케이션 대시보드 메뉴 > LIVE 활성화 중 > 상단 was1, was2 등에서 확인할 서버만 선택 > 히트맵에 요청이 계속 들어오고 있으면 서버 작동중 상태
서버가 다운된 시간이 몇 분인지도 히트맵에서 요청이 비어있는 구간으로 파악 가능합니다.

톰캣 서버 다운 원인 분석

  • 와탭 좌측 대시보드 : 애플리케이션 대시보드 메뉴 > 톰캣 서버 다운 직후 시간으로 설정 > 히트맵 상단 트랜잭션 로그 확인, 시스템 CPU 사용률 확인 (100% 지속 시 톰캣 다운 가능)
  • 와탭 좌측 대시보드 : 분석 메뉴 > 스택 > 액티브 스택 탭 > 날짜 및 애플리케이션 설정 후 검색 > Active Transaction 차트에서 서버 다운 시점 막대 선택 > 하단 트랜잭션 리스트에서 경과시간이 오래 걸린 요청 확인

CPU 임계치 도달 문제
서버 CPU 임계치 70% 이상 도달 시 JAVA에서 타 API 호출, JDDB 연결, SQL 쿼리 등이 모두 지연될 수 있습니다.
지연되는 트랜잭션들이 쌓일 수록 서버 성능 저하로 인해 아래의 관련 에러들이 발생할 수 있습니다.

SLOW_HTTPC
# HTTP 요청 지연 및 타임아웃과 관련된 어플리케이션 레벨 에러
org.apache.catalina.connector.ClientAbortException
java.io.IOException: Connection reset by peer
# 클라이언트가 응답을 기다리다 연결을 강제로 종료함

CPU 임계치 100% 도달 시에는 서버 과부하로 인해 톰캣 서버가 죽을 수 있습니다.
CPU 임계치가 잠시 내려갈 수 있으나, 지연 스레드들이 해소되지 않으면 다시 100%로 빠르게 높아집니다.

쓰레드 Full 톰캣 로그

26-Nov-2024 20:16:06.911 WARNING [NioReceiver[Catalina-Channel]] org.apache.catalina.tribes.transport.nio.NioReceiver.socketTimeouts Channel key is registered, but has had no interest ops for the last [3,000] ms. (cancelled: [false]):[sun.nio.ch.SelectionKeyImpl@3f11ede4] last access:[11/26/24 8:15 PM] Possible cause: all threads used, perform thread dump

톰캣 catalina.out에 위와 같은 로그가 나오고 톰캣 서버가 다운되었다면, 경과 시간이 긴 트랜잭션이 누적되어 쓰레드가 스택 상태에 쌓이면서 네트워크 지연 문제가 발생하고, NeoReciver (Clustering Member interface 역할)에서 실시간 Clustering Member Sync Task를 진행할 때에는 모든 Thread가 대기 상태에 빠져 쓰레드 풀 고갈이 발생하여 Tomcat이 응답하지 못하고 Down 된 것으로 의심할 수 있습니다.
서버 다운 직전에는 쓰레드 풀 고갈 및 네트워크 지연으로 인해 JDBC 연결을 가져오는데 실패하면서 Got timeout reading communication packets 에러도 발생할 수 있습니다.


WhaTap 외에서 운영서버 다운 원인 분석 방법

네이버 클라우드 콘솔에서 슬로우 쿼리 확인 방법

https://0songha0.github.io/op/2024-12-18-1#서버-요청-중-슬로우-쿼리-확인-방법


WhaTap 모니터링 데이터 백업

WhaTap 콘솔에서는 데이터 백업 기능을 별도로 제공하고 있지 않습니다.

설치형 WhaTap 백업 방법

Whatap 수집서버 접속하여 Whatap이 설치된 디렉토리를 백업해야 한다고 합니다.

Whatap 설치 경로 확인

ps -ef | grep whatap

-Dwhatap.server.home=/whatab/whatap으로 나온다면, /whatab에 진입하여 whatap 폴더를 cp 명령어로 백업하면 됩니다.

Whatap 설치 폴더 백업 명령어

cp -r /whatab/whatap /backup/whatap_$(date +%Y%m%d)_bak

/backup 폴더에 whatap_20250108_bak 폴더명으로 whatap 폴더를 백업하는 명령어 예시입니다.

Saas WhaTap 백업 방법

Whatap Cloud Infra에서 5초 프로파일 데이터는 1달, 5분/1시간 통계데이터는 1년 보관하고 있습니다.
보관기간이 지나면 백업본과 함께 삭제되며, 백업 데이터는 별도로 제공되지 않는다고 합니다.

Leave a comment