SNMP
Simple Network Management Protocol · 에스엔엠피
는 관리 시스템이 장비의 객체 값을 조회하거나 알림을 받는 네트워크 관리 프로토콜이다. 는 조회 대상 주소이고 는 그 값의 형식과 의미를 설명하는 스키마다.
밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.
01무엇이고, 어떤 일을 하나
- 인터페이스 트래픽과 장비 상태를 주기적으로 조회한다.
- ·으로 상태 변화를 비동기 전달한다.
- 의 차이와 시간 간격을 이용해 전송률을 계산한다.
02어떤 순서로 동작하나
- 관리 객체 선택
가 의 의미를 읽고 대상 와 인스턴스를 고른다. 같은 인터페이스의 인덱스와 종류를 맞춰야 표본을 비교할 수 있다.
- 요청과 보안 검사
Get·GetNext· 등의 요청을 로 보낸다. v1·v2c의 Community와 v3 의 인증·기밀성 설정은 보호 범위가 다르며 권한도 별도로 제한한다.
- 값과 오류 반환
가 객체 값 또는 오류를 응답한다. 값 하나가 누적 라면 곧 현재 속도를 뜻하지 않으며 알림인 ·과 요청 응답을 구분한다.
- 표본 해석
같은 객체의 두 값과 실제 시간 차로 증가율을 구한다. 재시작· wrap·인덱스 변경을 배제하고 octet/s를 bit/s로 바꾸려면 8을 곱한다.
03먼저 알아둘 용어와 구성요소
- 관리 대상 에 요청을 보내거나 알림을 받는 구성 요소.
- 장비의 관리 객체를 제공하는 구성 요소.
- 계속 누적되며 지정된 비트 범위에서 감길 수 있는 계수값.
- SNMPv3의 사용자 기반 인증·무결성·기밀성 처리를 정의하는 모델.
- 관리 객체의 이름·형식·의미를 기술하는 정보 기반.
- 객체와 인스턴스를 계층적 숫자 경로로 식별하는 값.
- 여러 후속 관리 객체 값을 효율적으로 요청하는 연산.
- 가 확인 응답 없이 보내는 알림.
- 확인 응답이 있는 알림 요청.
- 각각 32비트·64비트 범위의 누적 카운터.
- 인증과 기밀성 보호를 함께 사용하는 SNMPv3 보안 수준.
잘못된 SNMP 조회와 authenticationFailure 알림을 연결하기
의 조회 실패와 수신기의 비동기 알림을 별도 경로로 관찰한다.
실습 구성과 전제
- 허가된 격리 라우터와 수신 서버를 준비하고 시험용 인증 정보만 사용한다.
- 사진의 커뮤니티 문자열을 재사용하거나 원격 운영 장비에 Set 요청을 보내지 않는다.
조회와 Trap 서비스가 다름을 확인한다
- snmpd는 조회 처리, snmptrapd는 알림 수신 역할이다. 조회가 된다는 사실만으로 수신도 준비됐다고 판단하지 않는다.
- 수신기 상태· 162 리스닝·수신 허용 정책을 각각 확인한다.
shellsystemctl status snmptrapd --no-pager ss -lunp journalctl -u snmptrapd --since today --no-pager서비스·소켓·수신 로그를 순서대로 조회한다.
원본 크기로 보기 ↗- snmptrapd.service가 loaded이지만 Active: inactive (dead)로 표시된다.
- disabled는 부팅 시 활성화 설정과 관련되고 inactive는 현재 실행 상태다. 두 필드를 같은 의미로 읽지 않는다.
확인 기준서비스 실행 상태와 포트 리스닝을 함께 확인한다.
인증 실패의 외부 증상을 읽는다
- 잘못된 v2c 커뮤니티를 사용한 조회는 응답 없이 타임아웃될 수 있다. Timeout만으로 네트워크 단절과 인증 실패를 구분할 수 없다.
- 같은 시각의 ··패킷 기록을 대조해야 원인을 좁힐 수 있다.
원본 크기로 보기 ↗- snmpwalk는 system 하위 트리를 조회하려고 하며 잘못된 커뮤니티 문자열이 사용됐다.
- 결과는 Timeout: No Response이다. 이 출력만으로 방화벽이 차단했다고 확정할 수 없다.
확인 기준정상 인증의 제한된 조회와 실패 조회를 다른 시험 번호로 기록한다.
알림의 OID와 uptime을 사건에 붙인다
- 로그의 snmpTrapOID와 varbind를 읽어 인증 실패·설정 변경 등 유형을 구분한다. sysUpTime은 장비 가동 이후 시간이며 로그의 달력 시각과 동일한 필드가 아니다.
- 은 비동기 알림이므로 손실 가능성을 고려한다. 알림이 없다는 사실만으로 사건이 없었다고 단정하지 않는다.
원본 크기로 보기 ↗- 로그의 목적지 포트는 162이며 snmpTrapOID에 authenticationFailure가 반복된다.
- 각 이벤트에 sysUpTimeInstance의 Timeticks와 다른 varbind가 함께 기록되어 사건 유형과 장비 상태를 연결할 수 있다.
확인 기준조회 실패 시각·대상·알림 유형을 맞추되 반복 줄 수를 로그인 시도 수처럼 단정하지 않는다.
실습에서 확인한 동작 원리
- 조회와 은 방향·포트·서비스가 다른 경로다.
- 타임아웃은 결과이지 원인을 확정하는 메시지가 아니다.
장비별 Cacti 그래프의 값·NaN·빈 시간을 읽기
그래프 틀이 생성된 것과 실제 값이 수집되는 것을 구분하고 지원 차이를 조사한다.
실습 구성과 전제
- 자기 실습 의 조회 가능한 장비 두 대와 동일한 시간 범위를 준비한다.
- 사진의 라우터와 은 다른 대상이다. 한 장비의 변경 전후 그래프로 해석하지 않는다.
수집되는 지표와 비어 있는 지표를 나눈다
- 라우터 화면에서 Uptime은 증가하지만 Processes·Memory는 NaN이다. 일부 지표가 수집된다고 템플릿의 모든 가 지원된다는 뜻은 아니다.
- NaN은 0 프로세스나 메모리 0바이트가 아니라 알려지지 않은 값으로 해석해야 한다.
원본 크기로 보기 ↗- 라우터 Uptime에는 증가하는 파란 영역과 현재 137.22 m가 보인다.
- Processes·Memory 범례에는 -nan이 표시된다. 빈 그래프를 자원이 전혀 사용되지 않는 상태로 읽으면 안 된다.
확인 기준장비 템플릿·Data Query·실제 지원 를 비교한다.
다른 장비의 정상 지표와 수집 구간을 비교한다
- 은 수와 메모리 값이 표시된다. 대상 종류에 맞는 ·템플릿이 실제 데이터를 반환한 결과인지 확인한다.
- 시간축의 빈 구간은 데이터 누락·미수집·표시 범위 등의 후보가 있다. 그래프 모양만으로 호스트 재부팅을 확정하지 않는다.
원본 크기로 보기 ↗- VM의 Processes 범례에는 Current 241, Average 240, Maximum 243이 보인다.
- Uptime과 메모리에는 데이터가 있는 구간과 빈 구간이 나뉜다. 같은 시간 범위에서도 지표별 값의 의미가 다르다.
확인 기준최신 폴링 시각과 원시 조회 결과를 확인해 그래프를 보완한다.
Poller→RRD→Graph 순서로 문제를 좁힌다
- 직접 조회가 되면 Poller 권한·주기·로그를 보고, 다음으로 RRD 갱신 시각과 DS 자료형을 확인한다. 마지막으로 그래프의 DS·단위·집계 함수를 본다.
- RRD는 보존 기간이 길어지면 여러 표본을 하나의 CDP로 합칠 수 있다. 평균 그래프는 순간 최댓값을 그대로 보여 주지 않는다.
shellrrdtool 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상세 노트 · 실습 자료
헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.
공식 문서 · 표준
기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.