snmpv2-iftables
SNMPv2c를 사용하여 인터페이스 트래픽 통계를 수집하고 델타 값을 계산합니다. Ethernet 인터페이스(ifType=6)만 필터링하여 출력합니다.
문법
snmpv2-iftables [community=COMMUNITY] host=HOST[:PORT] [interval=INTERVAL] [timeout=SECONDS] [retry=RETRY]
community=COMMUNITY- SNMP 커뮤니티 문자열. 보편적으로 사용되는 커뮤니티 문자열은
public입니다. 운영 환경에 따라 다른 커뮤니티 문자열을 사용할 수 있습니다. host=HOST[:PORT]- 쉼표(
,)를 구분자로 하는HOST:PORT형식의 문자열 목록 (예:192.168.1.1:161,10.0.0.5). 포트 번호는 생략할 수 있습니다(기본값:161). interval=INTERVAL- 델타 계산을 위한 측정 간격 (초 단위, 기본값:
10) timeout=SECONDS- 타임아웃 (초 단위, 기본값:
5) retry=RETRY- SNMP 요청에 대한 응답이 타임아웃(
timeout) 시간 내에 도착하지 않을 때 재시도할 횟수 (기본값:2)
설명
동작 원리
ifTable(OID1.3.6.1.2.1.2.2)를 첫 번째 수집interval로 지정된 시간동안 대기 (1초 단위로 분할하여 취소 가능)- 동일한
ifTable을 두 번째 수집 - 수집된 두 값의 차이값(델타) 계산 (32비트 카운터 오버플로우 처리)
- 델타 값을 기반으로
bps,fps,utilization계산 - Ethernet 인터페이스(
ifType=6)만 필터링 - 인터페이스 인덱스 순서로 정렬하여 출력
계산 방식
- bps (bits per second):
(bytes_delta * 8 * 1000) / interval_ms - fps (frames per second):
(packets_delta * 1000) / interval_ms - utilization (%):
(bps * 100.0) / bandwidth(소수점 2자리) - 32비트 오버플로우 처리:
newValue가oldValue보다 작은 경우delta = newValue + 0xFFFFFFFFL - oldValue
출력 필드
| 필드 | 타입 | 이름 | 설명 |
|---|---|---|---|
| host | 문자열 | 호스트 | 대상 호스트 |
| port | 32비트 정수 | 포트 | 대상 포트 |
| index | 32비트 정수 | 인덱스 | 인터페이스 인덱스 |
| name | 문자열 | 이름 | 인터페이스 이름 (ifDescr) |
| type | 문자열 | 타입 | 예: ethernetCsmacd, gigabitEthernet, ieee8023adLag |
| mtu | 32비트 정수 | MTU | 예: 1500, 9000 |
| mac | 문자열 | MAC | MAC 주소 |
| bandwidth | 64비트 정수 | 대역폭 | bps 단위 (예: 1Gbps는 1000000000, 10Gbps는 10000000000) |
| admin_status | 문자열 | 관리 상태 | 예: up, down, testing |
| oper_status | 문자열 | 운영 상태 | 예: up, down, dormant, lowerLayerDown |
| last_change | 문자열 | 마지막 변경 | TimeTicks 형식 (예: 0:00:00.00, 1:23:45.67) |
| rx_utilization | 64비트 실수 | 수신 사용률 % | 수신 대역폭 사용률 |
| tx_utilization | 64비트 실수 | 송신 사용률 % | 송신 대역폭 사용률 |
| rx_bps | 64비트 정수 | 수신 bps | 초당 수신 비트 수 |
| tx_bps | 64비트 정수 | 송신 bps | 초당 송신 비트 수 |
| rx_fps | 64비트 정수 | 수신 fps | 초당 수신 프레임 수 |
| tx_fps | 64비트 정수 | 송신 fps | 초당 송신 프레임 수 |
| rx_bytes | 64비트 정수 | 수신 바이트 | 수신 바이트 (delta) |
| tx_bytes | 64비트 정수 | 송신 바이트 | 송신 바이트 (delta) |
| rx_ucast_pkts | 64비트 정수 | 수신 유니캐스트 패킷 | 수신 유니캐스트 패킷 (delta) |
| tx_ucast_pkts | 64비트 정수 | 송신 유니캐스트 패킷 | 송신 유니캐스트 패킷 (delta) |
| rx_nucast_pkts | 64비트 정수 | 수신 논유니캐스트 패킷 | 수신 논유니캐스트 패킷 (delta) |
| tx_nucast_pkts | 64비트 정수 | 송신 논유니캐스트 패킷 | 송신 논유니캐스트 패킷 (delta) |
| rx_errors | 64비트 정수 | 수신 에러 | 수신 에러 (delta) |
| tx_errors | 64비트 정수 | 송신 에러 | 송신 에러 (delta) |
| rx_discards | 64비트 정수 | 수신 폐기 | 수신 폐기 (delta) |
| tx_discards | 64비트 정수 | 송신 폐기 | 송신 폐기 (delta) |
| rx_unknown_protos | 64비트 정수 | 수신 알 수 없는 프로토콜 | 수신 알 수 없는 프로토콜 (delta) |
| tx_queue_length | 64비트 정수 | 송신 큐 길이 | 송신 큐 길이 |
| interval | 64비트 정수 | 간격 | 측정 간격 (밀리초) |
| start_time | 날짜 | 시작 시각 | 첫 번째 수집 시각 |
| end_time | 날짜 | 종료 시각 | 두 번째 수집 시각 |
사용 예
-
기본 interval(10초)로 트래픽 통계 수집
-
5초 간격으로 측정
-
여러 스위치 동시 모니터링