Zabbix를 사용하다 보면 템플릿에 원하는 아이템이 없어 직접 만들어야 하는 경우가 있습니다.
네트워크 장비의 경우 주로 SNMP를 이용해 정보를 수집하며, 제조사별 SNMP MIB 파일이 존재합니다.
아이템을 작성하기 전에 SNMP MIB 파일의 OID 값으로 결과값을 제대로 가져오는지 확인이 필요합니다.
Linux에 SNMP 패키지를 설치하면 snmpget과 snmpwalk 명령어를 통해 간단하게 SNMP 값을 조회할 수 있습니다.
snmpget은 특정 OID 값 하나를 조회할 때 사용하고, snmpwalk은 OID 조회 시 하위 서브 트리 값도 함께 조회할 수 있습니다.
snmpget
snmpget 명령어의 사용법은 매우 간단합니다.
snmpget 명령어에 SNMP 버전, community 값을 입력하고 SNMP 값을 조회할 장비의 IP 주소와 OID 값을 입력하면 됩니다. (아래 예시의 OID값은 제조사 별 다를 수 있습니다.)
snmpget -v2c -c [community][IP Address][OID]
snmpget -v2c -c snmpTest x.x.x.x 1.3.6.1.4.1.6027.3.26.1.4.4.1.4.2.1.1
[CPU, Memory 사용랑]
[CPU 사용랑]
[root@zabbix ~]# snmpget -v2c -c snmpTest x.x.x.x 1.3.6.1.4.1.6027.3.26.1.4.4.1.4.2.1.1
SNMPv2-SMI::enterprises.6027.3.26.1.4.4.1.4.2.1.1 = Gauge32: 14
[Memory 사용량]
[root@zabbix ~]# snmpwalk -v2c -c snmpTest x.x.x.x 1.3.6.1.4.1.6027.3.26.1.4.4.1.6
SNMPv2-SMI::enterprises.6027.3.26.1.4.4.1.6.2.1.1 = Gauge32: 24
[Mac Address]
[root@zabbix ~]# snmpget -v2c -c snmpTest x.x.x.x 1.3.6.1.4.1.6027.3.26.1.3.4.1.16.1
SNMPv2-SMI::enterprises.6027.3.26.1.3.4.1.16.1 = Hex-STRING: F1 F2 F3 F4 F5 F6
snmpwalk
snmpwalk 명령어도 명령어 이름만 다를뿐 사용하는 형식은 snmpget 명령어와 동일합니다.
snmpwalk는 하위 서브 트리 값도 조회할 수 있기에 Symbolic OID를 사용할 수도 있습니다.
Symbolic OID란 SNMP에 자주 사용되는 OID에 대해 사람이 이해하기 쉽게 별칭으로 붙인 이름입니다.
예를 들어:
- 심볼릭 OID: sysDescr
- 숫자 OID: 1.3.6.1.2.1.1.1.0
두 OID는 같은 정보를 가리키지만, sysDescr라는 심볼릭 이름은 사용자가 어떤 정보를 조회하는지 쉽게 알 수 있게 해줍니다. 이러한 심볼릭 OID는 일반적으로 MIB(Management Information Base) 파일에 정의되어 있으며, SNMP 도구는 MIB 파일을 참고하여 숫자 OID와 심볼릭 OID를 매핑합니다.
snmpwalk -v2c -c [community][IP Address][OID or Symbolic OID]
snmpwalk -v2c -c snmpTest x.x.x.x 1.3.6.1.2.1.1.1.0
snmpwalk -v2c -c snmpTest x.x.x.x sysDescr
다음은 snmpwalk를 이용해 여러 값을 가져오는 예시입니다.
snmpwalk 명령어는 서브 트리 값까지 조회할 수 있어, Interface와 같이 여러 값에 대한 정보를 한 번에 조회하는 데 유용합니다.
[Interface List]
[root@zabbix ~]# snmpwalk -v2c -c snmpTest x.x.x.x 1.3.6.1.2.1.2.2.1.2
[root@zabbix ~]# snmpwalk -v2c -c snmpTest x.x.x.x ifDescr
IF-MIB::ifDescr.2097156 = STRING: TenGigabitEthernet 1/1
IF-MIB::ifDescr.2097284 = STRING: TenGigabitEthernet 1/2
~~~
[Interface Bits send]
[root@zabbix ~]# snmpwalk -v2c -c snmpTest x.x.x.x 1.3.6.1.2.1.31.1.1.1.10
[root@zabbix ~]# snmpwalk -v2c -c snmpTest x.x.x.x ifHCOutOctets
IF-MIB::ifHCOutOctets.2097156 = Counter64: 310004009837248
IF-MIB::ifHCOutOctets.2097284 = Counter64: 0
~~~
[IP Address]
[root@zabbix ~]# snmpwalk -v2c -c snmpTest x.x.x.x 1.3.6.1.2.1.4.20.1.1
[root@zabbix ~]# snmpwalk -v2c -c snmpTest x.x.x.x ipAdEntAddr
IP-MIB::ipAdEntAddr.x.x.x.x = IpAddress: x.x.x.x
IP-MIB::ipAdEntAddr.11.11.11.11 = IpAddress: 11.11.11.11
~~~
snmpget와 snmpwalk의 차이점을 살펴보면, 같은 OID 값(1.3.6.1.4.1.6027.3.26.1.4.4.1.4)을 조회할 때 흥미로운 점을 발견할 수 있습니다. snmpwalk는 하위 값을 포함하여 조회되지만, snmpget은 조회되지 않습니다.
따라서 snmpget로 조회 시 하위 값까지 정확히 입력하여 조회하면, snmpget으로도 동일한 값을 얻을 수 있습니다.
[snmpwalk]
[root@zabbix ~]# snmpwalk -v 2c -c snmpTest x.x.x.x 1.3.6.1.4.1.6027.3.26.1.4.4.1.4
SNMPv2-SMI::enterprises.6027.3.26.1.4.4.1.4.2.1.1 = Gauge32: 14
[snmpget]
[root@zabbix ~]# snmpget -v 2c -c snmpTest x.x.x.x 1.3.6.1.4.1.6027.3.26.1.4.4.1.4
SNMPv2-SMI::enterprises.6027.3.26.1.4.4.1.4 = No Such Instance currently exists at this OID
[snmpget subtree OID]
[root@zabbix ~]# snmpget -v 2c -c snmpTest x.x.x.x 1.3.6.1.4.1.6027.3.26.1.4.4.1.4.2.1.1
SNMPv2-SMI::enterprises.6027.3.26.1.4.4.1.4.2.1.1 = Gauge32: 14
[참고사이트]
'Network' 카테고리의 다른 글
| [F5] iRules 구문 분석 (1) | 2025.03.23 |
|---|---|
| [Network] M3 Mac에 네트워크 시뮬레이터 eve-ng 설치하기 (2) | 2025.03.16 |
| [F5] HTTP/2 헤더 개수 제한 이슈 해소 기록 (ERR_HTTP2_PROTOCOL_ERROR) (0) | 2024.10.23 |
| [Zabbix] 설정 미반영 현상 해소 기록 (SNMP 알수 없음, proxy disk 100%, logrotate) (0) | 2024.08.17 |
| [NSX-T] Domain/URL 기반 LB 적용하기 (0) | 2024.08.04 |