메뉴 닫기

SNMP란? 장단점 및 데이터 수집 활용 가이드

복잡한 네트워크 환경과 수많은 서버 인프라를 안정적으로 운영하려면 철저한 모니터링이 필수입니다. 이때 가장 보편적이고 쉽게 사용되는 프로토콜이 바로 SNMP(Simple Network Management Protocol)입니다.

오늘은 SNMP가 무엇인지, 어떤 장단점을 가지고 있으며, 실무에서 어떤 데이터를 수집하고 어떻게 활용할 수 있해 보겠습니다.

 

1. SNMP란 무엇인가?

SNMP는 IP 네트워크 상의 장치로부터 정보를 수집 및 관리하고, 장치의 동작을 변경하기 위해 사용되는 인터넷 표준 프로토콜입니다. 라우터, 스위치, 서버, 워크스테이션, 프린터 등 대부분의 네트워크 연결 기기가 이 프로토콜을 지원합니다.

핵심 구성 요소는 다음과 같습니다.

  • Manager (매니저): 네트워크 관리 시스템(NMS)에 탑재되어 에이전트에게 데이터를 요청하고 수집합니다.

  • Agent (에이전트): 모니터링 대상 기기에 설치되어 시스템 상태 정보를 수집하고 매니저의 요청에 응답합니다.

  • MIB (Management Information Base): 관리 대상 기기의 정보가 계층적으로 저장된 가상 데이터베이스입니다.

  • OID (Object Identifier): MIB 내에서 특정 데이터를 식별하기 위한 고유한 숫자 주소(예: 1.3.6.1.2.1.1.1.0)입니다.

2. SNMP의 장점과 단점 (다각적 관점)

인프라 환경을 설계할 때는 기술의 양면성을 파악하는 것이 중요합니다. SNMP는 효율성과 보안성이라는 두 가지 관점에서 명확한 장단점을 가집니다.

장점 (Pros)

  • 높은 범용성 및 표준화: 벤더(Vendor)에 종속되지 않습니다. Cisco, Juniper와 같은 네트워크 장비는 물론, Linux, Windows 등 다양한 OS 환경에서 폭넓게 지원됩니다.

  • 경량화된 리소스 소모: 주로 UDP(포트 161/162)를 사용하여 통신하므로, TCP 오버헤드가 없어 네트워크 대역폭과 대상 시스템의 CPU 리소스 소모가 매우 적습니다.

  • 확장성: 기본 MIB 외에도 하드웨어 제조사에서 제공하는 벤더 전용 MIB(Enterprise MIB)를 추가하여 고유한 센서 데이터를 수집할 수 있습니다.

단점 (Cons)

  • 보안 취약성 (버전 문제): 널리 쓰이는 SNMP v1과 v2c는 커뮤니티 스트링(Community String)이라는 일종의 비밀번호를 평문(Plain Text)으로 전송합니다. 따라서 스니핑 공격에 취약합니다. (이를 해결하기 위해 암호화와 인증을 지원하는 SNMP v3가 권장됩니다.)

  • UDP 기반의 패킷 유실 가능성: UDP 통신을 사용하므로 네트워크 혼잡 시 데이터 패킷이 유실될 수 있으며, 프로토콜 자체적으로 재전송을 보장하지 않습니다.

  • 대규모 환경에서의 폴링 부하: 수만 대의 장비를 중앙 매니저가 1분 주기로 조회(Polling)할 경우, 매니저 시스템 자체에 병목 현상이 발생할 수 있습니다.

3. SNMP로 수집 가능한 데이터 범위

SNMP를 통해 수집할 수 있는 데이터는 상상 이상으로 방대합니다. 인프라 모니터링 관점에서 핵심적인 수집 항목은 다음과 같습니다.

  1. 시스템 기본 정보 (System Info): 호스트네임, 가동 시간(Uptime), OS 버전, 시스템 연락처 정보.

  2. 리소스 사용량 (Computing Resources):

    • CPU 코어별 사용률 및 로드 에버리지(Load Average).

    • 물리적 메모리(RAM) 및 스왑(Swap) 사용 현황.

    • 디스크 파티션별 전체 용량 및 가용 공간.

  3. 네트워크 트래픽 및 상태 (Network Interfaces):

    • 인터페이스별 Inbound/Outbound 트래픽 (Octets).

    • 패킷 에러(Errors) 및 드랍(Drops) 수치.

    • 네트워크 포트의 Link UP/DOWN 상태.

  4. 하드웨어 센서 (Hardware Sensors): 서버 마더보드의 온도, 팬(Fan) 회전 속도(RPM), 전원 공급 장치(PSU) 상태 (벤더 확장 MIB 필요).

4. 실무에서의 SNMP 활용 및 구축 방법

단순히 데이터를 수집하는 것을 넘어, 이를 시각화하고 경고 알림과 연동하는 아키텍처를 구성해야 합니다. 다음은 Linux 환경을 기준으로 한 단계별 구축 논리입니다.

1.에이전트(Agent) 구성:모니터링 대상 서버 설정.

Ubuntu 등 Linux 서버에 snmpd 패키지를 설치합니다. /etc/snmp/snmpd.conf 파일에서 rocommunity (읽기 전용 커뮤니티 스트링)를 설정하고, 매니저 IP에서만 접근할 수 있도록 방화벽(iptables, ufw 등) 및 접근 제어(ACL)를 철저히 구성합니다.

2.수집기(Manager/Poller) 구축:주기적인 데이터 조회.

NMS 서버에서 snmpwalk 또는 snmpget 명령어를 사용해 에이전트에 데이터 조회를 테스트합니다. 실무에서는 Python의 pysnmp 라이브러리를 활용하거나, Celery와 같은 비동기 작업 큐를 구성하여 수백 대의 서버를 동시에 폴링(Polling)하도록 아키텍처를 설계합니다.

3.데이터 저장 및 시각화:Time-Series DB 연동.

수집된 OID 값을 가공하여 InfluxDB, Prometheus, 혹은 MariaDB와 같은 데이터베이스에 시계열(Time-Series) 형식으로 저장합니다. 저장된 데이터는 Grafana를 통해 대시보드로 시각화하여, 직관적인 리소스 모니터링 환경을 완성합니다.

참고 문헌 및 공식 자료 (References):

*실제 경험을 바탕으로 ai를 활용하여 작성하였습니다.*

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다