SNMP 프로토콜을 먼저 알아보자!
- SNMP는 네트워크 장비와 통신하며 데이터를 요청하고 전달하는 네트워크 관리 프로토콜이야. 즉, 사용자가 장비의 상태를 모니터링하고 제어할 수 있도록 도와주는 서비스이므로, OSI 모델의 최상위 계층인 **응용 계층(7계층)**에서 동작하는 프로토콜
📌 SNMP의 주요 개념
- Manager(관리자)
- SNMP 데이터를 수집하고 제어하는 시스템(보통 NMS, Network Management System)
- 네트워크 장비에서 정보를 요청하거나 설정을 변경할 수 있음
- Agent(에이전트)
- 네트워크 장비(라우터, 스위치, 서버 등)에 설치된 소프트웨어
- 장비의 상태 정보를 수집하여 SNMP Manager에 제공
- MIB(Management Information Base)
- 관리할 수 있는 장비의 속성(메트릭, 설정 값 등)을 정의한 데이터베이스
- 예: CPU 사용률, 네트워크 트래픽, 온도, 메모리 사용량 등
- OID(Object Identifier)
- MIB 내의 특정 정보를 식별하는 고유한 번호
- 예: .1.3.6.1.2.1.1.5.0 (시스템 호스트 이름)
📌 SNMP 작동 방식
SNMP는 기본적으로 요청(Request)과 응답(Response) 방식으로 동작해.
- SNMP Manager → SNMP Agent
- GET Request : 특정 정보를 요청
- SET Request : 설정 값을 변경
- 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 주요 동작 방식
- Ping (ICMP Echo Request/Reply)
- 특정 호스트가 살아있는지 확인 (ex: ping google.com)
- Traceroute (ICMP Time Exceeded)
- 패킷이 목적지까지 가는 경로를 확인
- Destination Unreachable (ICMP Destination Unreachable)
- 목적지까지 갈 수 없는 경우(네트워크 장애, 라우팅 문제 등) 발생
- 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를 이용한 톰캣 프로세스 체크 방법
- 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: 대기 중)
- SNMP GET 요청을 실행하여 특정 프로세스(tomcat 또는 java)가 실행 중인지 확인
- snmpwalk -v2c -c public <톰캣서버IP> .1.3.6.1.2.1.25.4.2.1.2 | grep tomcat
- SNMP TRAP을 이용해 자동 감지
- 톰캣 프로세스가 종료되면 SNMP Agent가 SNMP Manager에게 TRAP을 전송하여 알려줄 수 있음.
✅ 2. SNMP에서 톰캣의 HTTP 상태 체크
톰캣이 기동 중인지 확인하는 또 다른 방법은 SNMP를 통해 HTTP 상태 체크를 수행하는 거야.
즉, SNMP가 외부 스크립트를 실행하도록 설정하고, 해당 스크립트가 톰캣의 HTTP 응답을 확인하는 방식이야.
🔹 SNMP Extend 기능을 사용한 HTTP 상태 확인
- SNMP Agent에서 톰캣 상태 체크 스크립트 작성
- /etc/snmp/snmpd.conf 파일에 아래와 같이 추가:
- extend tomcat-status /usr/bin/curl -s -o /dev/null -w "%{http_code}" http://localhost:8080
- 이 설정을 적용하면 SNMP를 통해 톰캣의 HTTP 상태 코드를 가져올 수 있음.
- 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 상태 체크
반응형
'네트워크' 카테고리의 다른 글
Mesh 알고리즘 Key 기반 로드 밸런싱 구축하기. (0) | 2025.03.14 |
---|---|
네트워크 관리사 2급 실기(2) (1) | 2024.09.21 |
네트워크 관리사 2급 실기(1) (1) | 2024.09.19 |
네트워크 관리사 2급 (1) (0) | 2024.08.18 |
VPN(Virtual Private Network) (0) | 2024.07.15 |