개념 사전 · 프로토콜

SNMP

Simple Network Management Protocol · 에스엔엠피

는 관리 시스템이 장비의 객체 값을 조회하거나 알림을 받는 네트워크 관리 프로토콜이다. 는 조회 대상 주소이고 는 그 값의 형식과 의미를 설명하는 스키마다.

밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.

01무엇이고, 어떤 일을 하나

  • 인터페이스 트래픽과 장비 상태를 주기적으로 조회한다.
  • ·으로 상태 변화를 비동기 전달한다.
  • 의 차이와 시간 간격을 이용해 전송률을 계산한다.

02어떤 순서로 동작하나

  1. 관리 객체 선택

    가 의 의미를 읽고 대상 와 인스턴스를 고른다. 같은 인터페이스의 인덱스와 종류를 맞춰야 표본을 비교할 수 있다.

  2. 요청과 보안 검사

    Get·GetNext· 등의 요청을 로 보낸다. v1·v2c의 Community와 v3 의 인증·기밀성 설정은 보호 범위가 다르며 권한도 별도로 제한한다.

  3. 값과 오류 반환

    가 객체 값 또는 오류를 응답한다. 값 하나가 누적 라면 곧 현재 속도를 뜻하지 않으며 알림인 ·과 요청 응답을 구분한다.

  4. 표본 해석

    같은 객체의 두 값과 실제 시간 차로 증가율을 구한다. 재시작· wrap·인덱스 변경을 배제하고 octet/s를 bit/s로 바꾸려면 8을 곱한다.

03먼저 알아둘 용어와 구성요소

관리 대상 에 요청을 보내거나 알림을 받는 구성 요소.
장비의 관리 객체를 제공하는 구성 요소.
계속 누적되며 지정된 비트 범위에서 감길 수 있는 계수값.
SNMPv3의 사용자 기반 인증·무결성·기밀성 처리를 정의하는 모델.
관리 객체의 이름·형식·의미를 기술하는 정보 기반.
객체와 인스턴스를 계층적 숫자 경로로 식별하는 값.
여러 후속 관리 객체 값을 효율적으로 요청하는 연산.
가 확인 응답 없이 보내는 알림.
확인 응답이 있는 알림 요청.
각각 32비트·64비트 범위의 누적 카운터.
인증과 기밀성 보호를 함께 사용하는 SNMPv3 보안 수준.
LEARN THROUGH PRACTICE

잘못된 SNMP 조회와 authenticationFailure 알림을 연결하기

의 조회 실패와 수신기의 비동기 알림을 별도 경로로 관찰한다.

실습 구성과 전제

  • 허가된 격리 라우터와 수신 서버를 준비하고 시험용 인증 정보만 사용한다.
  • 사진의 커뮤니티 문자열을 재사용하거나 원격 운영 장비에 Set 요청을 보내지 않는다.
  1. 조회와 Trap 서비스가 다름을 확인한다

    • snmpd는 조회 처리, snmptrapd는 알림 수신 역할이다. 조회가 된다는 사실만으로 수신도 준비됐다고 판단하지 않는다.
    • 수신기 상태· 162 리스닝·수신 허용 정책을 각각 확인한다.
    shell
    systemctl status snmptrapd --no-pager
    ss -lunp
    journalctl -u snmptrapd --since today --no-pager

    서비스·소켓·수신 로그를 순서대로 조회한다.

    SNMP Trap 수집 · Trap 설정 (1)원본 크기로 보기 ↗
    • snmptrapd.service가 loaded이지만 Active: inactive (dead)로 표시된다.
    • disabled는 부팅 시 활성화 설정과 관련되고 inactive는 현재 실행 상태다. 두 필드를 같은 의미로 읽지 않는다.
    확인 기준

    서비스 실행 상태와 포트 리스닝을 함께 확인한다.

  2. 인증 실패의 외부 증상을 읽는다

    • 잘못된 v2c 커뮤니티를 사용한 조회는 응답 없이 타임아웃될 수 있다. Timeout만으로 네트워크 단절과 인증 실패를 구분할 수 없다.
    • 같은 시각의 ··패킷 기록을 대조해야 원인을 좁힐 수 있다.
    SNMP Trap 수집 · Trap 설정 (4)원본 크기로 보기 ↗
    • snmpwalk는 system 하위 트리를 조회하려고 하며 잘못된 커뮤니티 문자열이 사용됐다.
    • 결과는 Timeout: No Response이다. 이 출력만으로 방화벽이 차단했다고 확정할 수 없다.
    확인 기준

    정상 인증의 제한된 조회와 실패 조회를 다른 시험 번호로 기록한다.

  3. 알림의 OID와 uptime을 사건에 붙인다

    • 로그의 snmpTrapOID와 varbind를 읽어 인증 실패·설정 변경 등 유형을 구분한다. sysUpTime은 장비 가동 이후 시간이며 로그의 달력 시각과 동일한 필드가 아니다.
    • 은 비동기 알림이므로 손실 가능성을 고려한다. 알림이 없다는 사실만으로 사건이 없었다고 단정하지 않는다.
    SNMP Trap 수집 · Trap 설정 (5)원본 크기로 보기 ↗
    • 로그의 목적지 포트는 162이며 snmpTrapOID에 authenticationFailure가 반복된다.
    • 각 이벤트에 sysUpTimeInstance의 Timeticks와 다른 varbind가 함께 기록되어 사건 유형과 장비 상태를 연결할 수 있다.
    확인 기준

    조회 실패 시각·대상·알림 유형을 맞추되 반복 줄 수를 로그인 시도 수처럼 단정하지 않는다.

실습에서 확인한 동작 원리

  • 조회와 은 방향·포트·서비스가 다른 경로다.
  • 타임아웃은 결과이지 원인을 확정하는 메시지가 아니다.
관련 개념·전체 실습 화면 이어서 읽기 →
동작·명령 참고 문서
LEARN THROUGH PRACTICE

장비별 Cacti 그래프의 값·NaN·빈 시간을 읽기

그래프 틀이 생성된 것과 실제 값이 수집되는 것을 구분하고 지원 차이를 조사한다.

실습 구성과 전제

  • 자기 실습 의 조회 가능한 장비 두 대와 동일한 시간 범위를 준비한다.
  • 사진의 라우터와 은 다른 대상이다. 한 장비의 변경 전후 그래프로 해석하지 않는다.
  1. 수집되는 지표와 비어 있는 지표를 나눈다

    • 라우터 화면에서 Uptime은 증가하지만 Processes·Memory는 NaN이다. 일부 지표가 수집된다고 템플릿의 모든 가 지원된다는 뜻은 아니다.
    • NaN은 0 프로세스나 메모리 0바이트가 아니라 알려지지 않은 값으로 해석해야 한다.
    실습 · 설정·관리 화면 4원본 크기로 보기 ↗
    • 라우터 Uptime에는 증가하는 파란 영역과 현재 137.22 m가 보인다.
    • Processes·Memory 범례에는 -nan이 표시된다. 빈 그래프를 자원이 전혀 사용되지 않는 상태로 읽으면 안 된다.
    확인 기준

    장비 템플릿·Data Query·실제 지원 를 비교한다.

  2. 다른 장비의 정상 지표와 수집 구간을 비교한다

    • 은 수와 메모리 값이 표시된다. 대상 종류에 맞는 ·템플릿이 실제 데이터를 반환한 결과인지 확인한다.
    • 시간축의 빈 구간은 데이터 누락·미수집·표시 범위 등의 후보가 있다. 그래프 모양만으로 호스트 재부팅을 확정하지 않는다.
    실습 · 설정·관리 화면 5원본 크기로 보기 ↗
    • VM의 Processes 범례에는 Current 241, Average 240, Maximum 243이 보인다.
    • Uptime과 메모리에는 데이터가 있는 구간과 빈 구간이 나뉜다. 같은 시간 범위에서도 지표별 값의 의미가 다르다.
    확인 기준

    최신 폴링 시각과 원시 조회 결과를 확인해 그래프를 보완한다.

  3. Poller→RRD→Graph 순서로 문제를 좁힌다

    • 직접 조회가 되면 Poller 권한·주기·로그를 보고, 다음으로 RRD 갱신 시각과 DS 자료형을 확인한다. 마지막으로 그래프의 DS·단위·집계 함수를 본다.
    • RRD는 보존 기간이 길어지면 여러 표본을 하나의 CDP로 합칠 수 있다. 평균 그래프는 순간 최댓값을 그대로 보여 주지 않는다.
    shell
    rrdtool info /path/to/lab.rrd
    rrdtool lastupdate /path/to/lab.rrd

    실제 Data Source의 RRD 경로를 확인한 뒤 읽기 전용으로 조회한다.

    확인 기준

    빈 값이 처음 발생하는 단계와 파일 갱신 시각을 특정한다.

실습에서 확인한 동작 원리

  • NaN·0·빈 구간은 서로 다른 의미다.
  • 한 지표의 성공이 다른 와 전체 수집 경로의 정상까지 증명하지 않는다.
관련 개념·전체 실습 화면 이어서 읽기 →
동작·명령 참고 문서

04예제로 따라가기

  • 관찰 조건: 재시작·인터페이스 교체가 없고 가 한 번 이하로 감겼다고 가정한다. 10초 전 값은 4,294,967,200, 현재 값은 104다.
  • 모듈러스: 32비트 의 범위 크기는 2^32=4,294,967,296이다. 값이 작아졌다는 이유만으로 증가량을 음수로 쓰지 않는다.
  • 증가량 계산: Δ=(104−4,294,967,200) mod 2^32=200바이트다. 범위 끝까지 96바이트, 이후 104바이트를 더한 결과다.
  • 전송률 계산: 200바이트×8÷10초=160bit/s다. 의 단위가 옥텟이고 실제 관측 간격이 10초라는 조건이 필요하다.
  • 한계 판정: 구간 중 여러 번 감겼거나 재설정되면 두 값만으로 실제 증가량을 복원할 수 없다. 64비트 ·불연속 표시·짧은 수집 간격을 함께 고려한다.

05혼동하기 쉬운 점과 확인 기준

  • 사용자와 엔진: unknownEngineID·unknownUserName 등 Report와 Engine ID를 비교한다. 네트워크 도달 실패와 사용자 문맥 실패를 분리한다.
  • 시간 동기: notInTimeWindow는 일반 오류와 동일한 뜻이 아니다. 엔진 재시작·boots/time 캐시와 재동기 과정을 확인한다.
  • 객체 권한: 인증이 성공해도 요청한 가 View에서 허용되지 않을 수 있다. 통신·인증·VACM 범위를 단계별로 좁힌다.

06상세 노트 · 실습 자료

헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.

공식 문서 · 표준

기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.