네트워크

SNMP 프로토콜으로 톰캣 기동 여부 탐지하기

간다12 2025. 3. 13. 10:33

SNMP 프로토콜을 먼저 알아보자!

  • SNMP는 네트워크 장비와 통신하며 데이터를 요청하고 전달하는 네트워크 관리 프로토콜이야. 즉, 사용자가 장비의 상태를 모니터링하고 제어할 수 있도록 도와주는 서비스이므로, OSI 모델의 최상위 계층인 **응용 계층(7계층)**에서 동작하는 프로토콜

📌 SNMP의 주요 개념

  1. Manager(관리자)
    • SNMP 데이터를 수집하고 제어하는 시스템(보통 NMS, Network Management System)
    • 네트워크 장비에서 정보를 요청하거나 설정을 변경할 수 있음
  2. Agent(에이전트)
    • 네트워크 장비(라우터, 스위치, 서버 등)에 설치된 소프트웨어
    • 장비의 상태 정보를 수집하여 SNMP Manager에 제공
  3. MIB(Management Information Base)
    • 관리할 수 있는 장비의 속성(메트릭, 설정 값 등)을 정의한 데이터베이스
    • 예: CPU 사용률, 네트워크 트래픽, 온도, 메모리 사용량 등
  4. OID(Object Identifier)
    • MIB 내의 특정 정보를 식별하는 고유한 번호
    • 예: .1.3.6.1.2.1.1.5.0 (시스템 호스트 이름)

📌 SNMP 작동 방식

SNMP는 기본적으로 요청(Request)과 응답(Response) 방식으로 동작해.

  1. SNMP Manager → SNMP Agent
    • GET Request : 특정 정보를 요청
    • SET Request : 설정 값을 변경
  2. SNMP Agent → SNMP Manager
    • GET Response : 요청한 데이터를 응답
    • TRAP : 장비의 이상 징후(예: CPU 과부하)를 SNMP Manager에 알림

📌 SNMP 버전

  • SNMPv1: 초기 버전, 보안이 취약(단순한 커뮤니티 문자열 사용)
  • SNMPv2c: 성능 향상, 하지만 여전히 보안이 취약
  • SNMPv3: 보안(인증 및 암호화)이 강화됨

📌 SNMP의 활용 사례

  • 네트워크 트래픽 모니터링
  • 서버 및 장비 상태 감시 (CPU, 메모리, 디스크 사용량)
  • 장애 발생 감지 및 알람 (예: 네트워크 장애 감지 후 알림 전송)
  • 자동화된 네트워크 관리 시스템 구축

 

  • 그렇다면  SNMP 와 ICMP 프로토콜 차이점에 대해서 알아보자

ICMP(Internet Control Message Protocol)란?

ICMP는 네트워크 장비 간의 통신 문제를 진단하고 오류 메시지를 전달하는 프로토콜이야.
IP 패킷을 주고받을 때 문제가 발생하면, 송신자에게 패킷 전달 불가, 네트워크 장애, TTL 초과 같은 정보를 알려줘.

🔹 ICMP 주요 동작 방식

  1. Ping (ICMP Echo Request/Reply)
    • 특정 호스트가 살아있는지 확인 (ex: ping google.com)
  2. Traceroute (ICMP Time Exceeded)
    • 패킷이 목적지까지 가는 경로를 확인
  3. Destination Unreachable (ICMP Destination Unreachable)
    • 목적지까지 갈 수 없는 경우(네트워크 장애, 라우팅 문제 등) 발생
  4. Redirect Message (ICMP Redirect)
    • 더 나은 경로가 있으면 라우터가 클라이언트에게 다른 경로를 알려줌

🔹 ICMP 활용 예시

  • 서버나 라우터의 응답 속도 확인 (ping)
  • 네트워크 경로 문제 추적 (traceroute)
  • 방화벽 정책 검토 (ICMP 차단 여부)
  • 네트워크 연결 장애 진단 (패킷 손실 확인)

 

SNMP vs ICMP 언제 사용해야 할까?

결론

  • SNMP네트워크 장비의 성능 및 상태를 모니터링하는 데 사용됨 (서버 CPU, 네트워크 트래픽, 장비 장애 등)
  • ICMP네트워크 문제를 진단하는 데 사용됨 (핑, 트레이스루트, 패킷 손실 확인 등)

 

  • SNMP 프로토콜에 대해서 알아봤으니 SNMP 으로 톰캣의 기동여부를 판단하는 방법을 알아보자

1. SNMP Agent가 톰캣 상태를 직접 모니터링

SNMP를 사용하여 특정 프로세스(예: tomcat 또는 java 프로세스)가 실행 중인지 확인할 수 있어.
이 방법은 UCD-SNMP MIB(UCDavis SNMP Management Information Base) 또는 HOST-RESOURCES MIB를 활용하는 방식이야.

🔹 SNMP를 이용한 톰캣 프로세스 체크 방법

  1. hrSWRunTable (HOST-RESOURCES MIB)에서 실행 중인 프로세스 목록 확인
    • hrSWRunName(.1.3.6.1.2.1.25.4.2.1.2) → 실행 중인 프로세스 목록
    • hrSWRunStatus(.1.3.6.1.2.1.25.4.2.1.7) → 실행 상태(1: 다른 상태, 2: 활성(운영 중), 3: 비활성, 4: 정지됨, 5: 대기 중)
  2. SNMP GET 요청을 실행하여 특정 프로세스(tomcat 또는 java)가 실행 중인지 확인
    • snmpwalk -v2c -c public <톰캣서버IP> .1.3.6.1.2.1.25.4.2.1.2 | grep tomcat
  3. SNMP TRAP을 이용해 자동 감지
    • 톰캣 프로세스가 종료되면 SNMP Agent가 SNMP Manager에게 TRAP을 전송하여 알려줄 수 있음.

2. SNMP에서 톰캣의 HTTP 상태 체크

톰캣이 기동 중인지 확인하는 또 다른 방법은 SNMP를 통해 HTTP 상태 체크를 수행하는 거야.
즉, SNMP가 외부 스크립트를 실행하도록 설정하고, 해당 스크립트가 톰캣의 HTTP 응답을 확인하는 방식이야.

🔹 SNMP Extend 기능을 사용한 HTTP 상태 확인

  1. SNMP Agent에서 톰캣 상태 체크 스크립트 작성
    • /etc/snmp/snmpd.conf 파일에 아래와 같이 추가:
    • extend tomcat-status /usr/bin/curl -s -o /dev/null -w "%{http_code}" http://localhost:8080
    • 이 설정을 적용하면 SNMP를 통해 톰캣의 HTTP 상태 코드를 가져올 수 있음.
  2. SNMP GET 요청 실행하여 확인
    • snmpget -v2c -c public <톰캣서버IP> NET-SNMP-EXTEND-MIB::nsExtendOutput1Line.\"tomcat-status\"
    • 결과값이 200이면 정상, 000이면 다운 상태

장점

  • 실제 HTTP 응답 상태를 체크할 수 있어, 정상 실행 여부를 보다 정확히 확인 가능
  • 특정 포트(8080, 8443)가 열려 있는지도 확인 가능

단점

  • SNMP 자체가 HTTP를 직접 체크하는 기능은 없으므로, SNMP Extend 기능을 활용해야 함
  • curl 같은 추가적인 네트워크 도구가 필요함

 

  • 단순히 프로세스가 살아 있는지 확인하고 싶으면 hrSWRunTable을 이용한 SNMP 요청
  • 톰캣이 실제 정상적으로 응답하는지 확인하려면 SNMP Extend를 활용하여 HTTP 상태 체크
반응형