기술 가이드

Apache Tomcat 모니터링 및 관리 방법

7 min read 인프라 모니터링 업데이트됨 19 Sep 2025
Apache Tomcat 모니터링 및 관리 가이드
Apache Tomcat 모니터링 및 관리 가이드

개요

이 가이드는 Apache Tomcat 애플리케이션 서버를 모니터링하고 관리하는 실무 지침입니다. 주요 목표는 다음과 같습니다:

  • Verax NMS에 Tomcat 인스턴스를 추가하기
  • JMX 및 HTTP 센서를 통해 가용성·성능을 모니터링하기
  • 성능 카운터(예: 스레드, 메모리, 세션) 구성하기
  • 알람 및 알림 정책을 설정하고 인시던트에 대응하기

정의: JMX(Java Management Extensions)는 JVM 기반 애플리케이션의 상태와 메트릭을 노출하는 표준 프로토콜입니다.

중요: 이 문서는 운영 환경에서의 일반적인 구성과 모범 사례를 설명합니다. 실제 설정값(포트, 사용자명, 암호)은 환경별로 달라집니다.

필요 도구

주요 작업 흐름

  1. Verax NMS에 Tomcat 애플리케이션 인스턴스 추가
  2. JMX 연결을 구성하고 센서(가용성/성능) 추가
  3. 필요시 HTTP 센서로 웹 애플리케이션 가용성 및 UX 측정
  4. 알람·알림 정책 설정 및 테스트

Apache Tomcat을 장치 인벤토리에 추가하는 방법

다음 절차는 Tomcat 인스턴스가 실행 중인 장치에 애플리케이션 인스턴스를 추가하는 방법입니다.

  1. Verax NMS에 로그인하고 홈(대시보드)으로 이동합니다.
  2. 왼쪽의 측면(Aspect) 트리에서 Tomcat 인스턴스가 실행 중인 장치를 선택합니다.

장치 측면 트리

  1. 요약(Summary) 탭에서 작업(actions) 섹션의 애플리케이션 관리(Manage applications)를 선택합니다.

애플리케이션 추가 버튼

  1. 팝업 대화상자가 표시됩니다.

애플리케이션 관리 팝업

  1. 컨텍스트 메뉴에서 애플리케이션 추가(Add application)를 선택하고 이동(Go) 버튼을 클릭합니다.

애플리케이션 유형 선택

  1. 애플리케이션 유형에서 Apache Tomcat을 선택합니다.

추가로 요청되는 애플리케이션 특화 파라미터:

  • 인스턴스 이름(Instance name): 모니터링 대상 인스턴스를 설명하는 이름
  • 호스트(Host): 일반적으로 해당 장치의 IP 주소
  • 포트(Port): Tomcat 애플리케이션 서버 포트
  • 사용자(User), 암호(Password): Tomcat(또는 JMX) 접속용 자격증명
  • JMX 연결 URL, JMX 사용자, JMX 암호

참고: 애플리케이션 유형에 따라 요구 파라미터가 달라집니다.

  1. 정보를 입력하고 변경 사항 저장(Save changes)을 클릭합니다.
  2. 시스템이 기본 센서 및 카운터 추가 여부를 묻습니다. 이 가이드에서는 센서를 수동으로 추가하므로 “아니오”를 선택합니다.
  3. 추가한 Apache Tomcat 인스턴스는 관리된 애플리케이션(Managed Applications) 카테고리의 호스트 노드 아래 측면 트리에 표시됩니다.

관리 애플리케이션 트리

Tomcat 인스턴스는 다음 방식으로 모니터링할 수 있습니다:

  • 요약(Summary) 탭의 고급 보기(Show advanced view)에서 수동 조회로 정보 확인
  • JMX 카운터 또는 JMX 기반 템플릿으로 성능 데이터 수집
  • JMX 기반 센서로 애플리케이션/서비스 가용성 확인
  • HTTP 센서로 웹 애플리케이션 가용성 및 사용자 경험(응답 코드/본문 매칭) 측정

Tomcat에서 JMX 활성화 (서버 측 설정)

Tomcat에서 JMX를 사용하려면 JVM 시작 옵션으로 JMX 관련 파라미터를 추가해야 합니다. 예시:

Windows (set 사용):

set CATALINA_OPTS=-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=%my.jmx.port% \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false

Linux/Unix (export 사용):

export CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=${MY_JMX_PORT} -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

참고: 보안 요구사항이 있는 환경에서는 인증 및 SSL 설정을 활성화하고 방화벽 규칙을 적절히 구성해야 합니다. 자세한 내용은 Tomcat 공식 문서의 모니터링 섹션을 확인하세요: http://tomcat.apache.org/tomcat-6.0-doc/monitoring.html

센서 개념과 동작

센서(Sensors)는 주기적으로 대상 서비스에 쿼리를 보내 응답을 확인하는 액티브 모니터입니다. 정상 응답이 돌아오면 해당 서비스는 “사용 가능(available)”으로 간주됩니다. 응답이 없거나(타임아웃), 응답 내용이 기대치와 다르면 “사용 불가(unavailable)” 상태가 됩니다.

기본적으로 제공되는 Tomcat 관련 센서 유형:

  • JMX Operation: 특정 MBean의 조작(연산)이 결과를 반환하는지 확인
  • JMX Attribute: 특정 MBean의 속성 값을 읽어 결과를 확인
  • HTTP: 지정된 HTTP/HTTPS 주소에 대해 응답 코드와(및 필요 시 본문 정규식) 일치 여부 확인

Verax NMS에 센서 추가하기

  1. 홈 뷰의 측면 트리에서 대상 장치를 선택합니다.
  2. 모니터(Monitors) 탭으로 이동한 뒤 오른쪽 상단의 센서 목록(Sensor list) 링크를 클릭해 센서 목록으로 전환합니다.
  3. 전역(글로벌) 액션 메뉴에서 추가(Add)를 선택하고 Go를 클릭하면 마법사(wizard) 대화창이 표시됩니다.

센서 추가 마법사

  1. 추가할 센서 유형을 선택하고 다음(Next)을 클릭합니다.

센서 유형 선택

  1. 센서 파라미터 입력 창이 나타나면 필요한 값을 입력하고 완료(Finish)를 클릭합니다.
  2. 추가된 센서는 모니터 탭의 센서 목록에 표시됩니다.

자주 사용하는 JMX MBean 및 속성 예시

(아래는 Tomcat의 일반적 MBean 구조 예시입니다. 실제 MBean 이름은 Tomcat 버전, 커넥터(Connector) 및 네이밍 설정에 따라 달라질 수 있습니다.)

  • 스레드 풀 관련

    • MBean: Catalina:type=ThreadPool,name=”http-nio-8080”
    • 속성: currentThreadCount, currentThreadsBusy
  • 커넥터/커넥션 관련

    • MBean: Catalina:type=GlobalRequestProcessor,name=”http-nio-8080”
    • 속성: requestCount, errorCount, processingTime
  • 세션 관련

    • MBean: Catalina:type=Manager,context=”/yourapp”,host=”localhost”
    • 속성: activeSessions, sessionCount
  • JVM 메모리

    • MBean: java.lang:type=Memory
    • 속성: HeapMemoryUsage, NonHeapMemoryUsage

이 값들을 JMX Attribute 센서로 읽거나, JMX 기반 카운터 템플릿으로 수집해 그래프화할 수 있습니다.

중요: MBean 네이밍을 모를 경우 JMX 콘솔(jconsole, jmxterm 등)을 이용해 노출된 MBean 트리를 조회하세요.

성능 카운터 및 알람 설계 지침

  • 핵심 메트릭을 우선 정의하세요: 스레드 사용률, 활성 세션 수, 응답 시간, GC 지연, 에러율
  • 각 메트릭에 대해 임계값을 정의하세요(경고/중요/심각). 임계값은 서비스 SLA와 트래픽 패턴에 따라 달라집니다.
  • 임계값 초과 시 알림 빈도(flood control)와 재발 주기 등을 설정해 불필요한 알람 폭주를 방지하세요.
  • 알림 채널(이메일, SMS, 슬랙, 티켓 시스템)을 역할별로 매핑하세요.

알람 및 알림 정책 설정 예시

  • 스레드 사용률 > 80%: 경고(Warn)
  • 스레드 사용률 > 95%: 심각(Critical) 및 1차 연락(운영팀 온콜)
  • 활성 세션 급증(10분 대비 +200%): 주의(Investigate)

알림 정책에는 수신자 그룹, 중복 억제, 에스컬레이션 단계(예: 5분 후에도 해결되지 않으면 관리자에게 에스컬레이션)를 포함하세요.

인시던트 대응 플레이북(간단한 실행 절차)

  1. 알람 수신: 알람 상세 정보를 확인(메트릭, 타임스탬프, 호스트)
  2. 상태 확인: Verax NMS의 고급 보기로 Tomcat 상태, 연결된 센서 로그, 최근 그래프 확인
  3. 빠른 복구 시도:
    • Tomcat 프로세스가 다운된 경우: 로그 확인 후 프로세스 재시작
    • 응답 지연인 경우: 스레드 풀/GC 소비 확인, 트래픽 패턴 및 최근 배포 확인
  4. 근본 원인 파악: 로그(예외), 스레드 덤프, GC 로그, 애플리케이션 로그 분석
  5. 임시 조치 및 영구 조치 계획 수립
  6. 인시던트 종료 후 포스트모템 문서화

역할별 체크리스트

운영(Operator):

  • Verax NMS 포털에서 대상 Tomcat 인스턴스 상태 확인
  • 주요 센서(가용성, 응답 코드, 스레드) 상태 모니터링
  • 알람 발생 시 초기 확인 및 재배포/재시작 조치

애플리케이션 개발자(Dev):

  • 애플리케이션 로그 에러 및 스택트레이스 확인
  • 비정상 세션 증가나 메모리 누수 의심 시 코드 검토
  • 성능 테스트 결과를 운영팀과 공유

SRE/시스템 엔지니어:

  • JMX 설정 및 보안(인증, 암호화) 구성
  • JVM 옵션 및 GC 튜닝
  • 자동화된 알림/온콜 에스컬레이션 구성

테스트 케이스 및 수락 기준

  • 센서 가용성 테스트: JMX 연결이 올바르게 설정되면 JMX Attribute 센서가 값을 읽어야 합니다.
  • HTTP 센서 테스트: 애플리케이션의 헬스체크 엔드포인트가 200 응답을 반환해야 합니다.
  • 알람 라우팅 테스트: 의도적으로 임계값을 초과시키면 지정된 수신자가 알림을 받아야 합니다.

수락 기준 예시:

  • 모든 핵심 센서가 5분 이내에 정상 상태를 보고함
  • 알람 발생 시 지정된 연락처로 2분 이내에 알림 전달

문제 해결(자주 발생하는 문제와 해결책)

문제: JMX 연결 실패

  • 원인: 포트 차단(방화벽), JMX 옵션 누락, 인증/SSL 불일치
  • 해결: Tomcat JVM 옵션 확인, 방화벽 규칙 확인, 인증 정보 재검증

문제: 성능 메트릭이 비정상적으로 높음

  • 원인: 트래픽 급증, GC 빈발, 스레드 고갈, 애플리케이션 로직 문제
  • 해결: 트래픽 샘플링, 스레드 덤프 분석, GC 로그 분석, 코드 프로파일링

문제: HTTP 센서가 본문 매칭 실패

  • 원인: 헬스체크 응답 변경, 리다이렉션, 인증 필요
  • 해결: 요청 URL/헤더 확인, 정규식 개선, 인증 헤더 추가

모범 사례 요약

  • JMX는 강력하지만 안전하게 구성하세요(인증+암호화 권장).
  • 핵심 메트릭을 우선 순위로 두고 불필요한 센서는 줄이세요.
  • 임계값은 관찰 기반으로 점진적으로 조정하세요.
  • 알람 폭주를 방지하기 위한 억제(suppression) 규칙을 마련하세요.

결정 흐름(간단한 트러블슈팅 플로우)

flowchart TD
  A[서비스 응답 없음] --> B{Tomcat 프로세스가 실행 중인가}
  B -- 예 --> C{JMX 연결 가능?}
  B -- 아니오 --> D[Tomcat 재시작 시도 및 로그 확인]
  C -- 예 --> E{스레드/메모리 임계치 초과?}
  C -- 아니오 --> F[방화벽 및 JMX 옵션 점검]
  E -- 예 --> G[스레드 덤프 및 GC 로그 수집]
  E -- 아니오 --> H[애플리케이션 로그 및 외부 의존성 점검]

수용/운영 체크리스트(도입 후 30일)

  • 모든 핵심 센서가 구성되어 있고 데이터가 수집되는지 확인
  • 경고·심각 임계값에 대한 초기 알람 테스트 완료
  • 알림 수신자와 에스컬레이션 절차 문서화
  • 보안 검토: JMX 접근 제어 및 네트워크 제한 확인

결론

이 가이드는 Verax NMS를 사용해 Apache Tomcat을 모니터링하고 관리하는 데 필요한 단계별 절차와 운영 지침을 제공합니다. 핵심은 안전한 JMX 설정, 적절한 센서 설계, 현실적인 임계값 정의 및 명확한 인시던트 대응 절차입니다. 초기 구성을 마친 뒤에는 관찰 데이터를 바탕으로 임계값과 알림 정책을 지속적으로 조정하세요.

요약: Tomcat을 신뢰성 있게 운영하려면 정확한 메트릭 수집, 보안 설정, 알람 설계, 그리고 역할별 책임 분담이 필수입니다.

중요: 실제 프로덕션 환경에서는 JMX 인증/암호화 설정과 네트워크 접근 제어를 반드시 구성하세요.

공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

안드로이드 홈 화면별 배경화면 설정 가이드
Android 가이드

안드로이드 홈 화면별 배경화면 설정 가이드

데이터 브로커에서 내 정보 삭제하는 방법
프라이버시

데이터 브로커에서 내 정보 삭제하는 방법

안드로이드 홈 화면별 배경화면 설정 가이드
안드로이드 커스터마이징

안드로이드 홈 화면별 배경화면 설정 가이드

Apache Tomcat 모니터링 및 관리 가이드
인프라 모니터링

Apache Tomcat 모니터링 및 관리 가이드

디즈니 플러스 앱 문제 해결 가이드
스트리밍 가이드

디즈니 플러스 앱 문제 해결 가이드

Windows 작업 스케줄러로 Python 스크립트 자동 실행
자동화

Windows 작업 스케줄러로 Python 스크립트 자동 실행