본문 바로가기

work/snmp

ucd-snmp 사용하기

 
목차


 

1 ucd-snmp 소 개

망관리 프로토콜인 snmp을 이용할수 있도록 해주는 공개 소프트웨어이다. ucd-snmp 는 현재 버전 5대로 올라가면서 프로젝트의 이름을 net-snmp 로 변경한 상태이다. 일반적으로 많이 사용되고 있는 ucd-snmp의 버전은 4대이다.

2 ucd-snmp 설 치

2.1 다운로드

http://net-snmp.sourceforge.net 에 접속하여 다운로드 받도록 한다.

2.2 컴파일

./configure; make; make install

2.3 기본 설정파일 복사

cp EXAMPLE.conf /usr/local/share/snmp/snmpd.conf

2.4 펄 확장 모듈 설치

cd perl/SNMP/ perl Makefile.PL make; make test; make install

2.5 파일들의 위치

--prefix 옵션으로 특별한 디렉토리을 지정하지 않았다고 가정한다면 아래와 같은 디렉토리에 파일들이 생성된다.
  • /usr/local/bin 일반적인 명령어들
  • /usr/local/sbin 데몬들
  • /usr/local/lib 라이브러리들
  • /usr/local/include/ucd-snmp 헤더파일들

  • 3 ucd-snmp 설 정

    /usr/local/share/snmp/snmpd.conf
    com2sec local localhost private com2sec mynetwork 192.168.119.128/29 public sysservices 76 syslocation skku syscontact leejonghyouk <webmaster@hurryon.org> 

    4 ucd-snmp 사 용

    4.1 라이브러리 이용하기

    -I/usr/local/include/ucd-snmp -lsnmp -lcrypto 옵션을 붙여서 컴파일해야 한다.

    4.2 ucd-snmp 에서 제공되는 명령어 이용하기

    4.2.1 snmptest
    snmptest 명령어을 이용하여 제대로 설치가 되었는지 테스트해 볼수 있다.
    [root@note snmp]# snmptest 192.168.119.128 public Variable: system.sysDescr.0 Variable: system.sysName.0 Variable: Received Get Response from 192.168.119.128 requestid 0x456B696C errstat 0x0 errindex 0x0 system.sysDescr.0 = Linux note.wmware.org 2.4.18-3 #1 Thu Apr 18 07:37:53 EDT 2002 i686 system.sysName.0 = note.wmware.org Variable: [root@note snmp]# 
    4.2.2 snmpget
    snmpget 명령어는 명령어 이름에서 알수 있듯이 에이전트로부터 정보을 얻어 오는데 사용되는 명령어 있다. 인자값으로 MIB의 계층이름이나 OID 번호을 넣을수 있다. snmpget 명령어는 snmp get의 기능을 구현한 명령어이기 때문에 하위 계층의 정보는 가져 오지 않는다.
    [root@note bin]# snmpget localhost public system.sysDescr.0 system.sysDescr.0 = Linux note.wmware.org 2.4.18-3 #1 Thu Apr 18 07:37:53 EDT 2002 i686 [root@note bin]# snmpget localhost public 1.1.0 system.sysDescr.0 = Linux note.wmware.org 2.4.18-3 #1 Thu Apr 18 07:37:53 EDT 2002 i686 [root@note bin]# snmpget localhost public 1.2.0 system.sysObjectID.0 = OID: enterprises.ucdavis.ucdSnmpAgent.linux [root@note bin]# snmpget localhost public 1.3.0 system.sysUpTime.0 = Timeticks: (837696) 2:19:36.96 [root@note bin]# snmpget localhost public 1.4.0 system.sysContact.0 = root@ [root@note bin]# snmpget localhost public 1.5.0 system.sysName.0 = note.wmware.org [root@note bin]# snmpget localhost public 1.6.0 system.sysLocation.0 = Unknown [root@note bin]# snmpget localhost public 1.7.0 Error in packet Reason: (noSuchName) There is no such variable name in this MIB. Failed object: system.sysServices.0 [root@note bin]# snmpget localhost public 1.8.0 system.sysORLastChange.0 = Timeticks: (1) 0:00:00.01 [root@note bin]# snmpget localhost public 1.9.0 Error in packet Reason: (noSuchName) There is no such variable name in this MIB. Failed object: system.sysORTable.0 [root@note bin]# snmpget localhost public 1.10.0 Error in packet Reason: (noSuchName) There is no such variable name in this MIB. Failed object: system.10.0 [root@note bin]# 
    4.2.3 snmpgetnext
    snmpgetnext 명령어는 snmp next의 기능을 구현한 명령어이다. 하지만 하위 계층의 정보을 모두 가져 오는것이 아니라 바로 다음 계층의 정보을 가져오게 된다. 결론적으로 1개의 정보을 가져오게 되는것이다. 예을 들어 system.sysDescr.0 에 대한 정보을 요청하면 하위 계층의 정보인 system.sysObjectID.0 의 정보을 가져 온다.
    [root@note bin]# snmpgetnext localhost public 1.1.0 system.sysObjectID.0 = OID: enterprises.ucdavis.ucdSnmpAgent.linux 
    4.2.4 snmpwalk
    snmpwalk 명령어도 snmp next의 기능을 구현한 명령어로 하위 계층의 정보을 모두 가져 온다. -Of 옵션은 Full OID output -On 옵션은 OID number output 이다.
    [root@note bin]# snmpwalk localhost public 1 system.sysDescr.0 = Linux note.wmware.org 2.4.18-3 #1 Thu Apr 18 07:37:53 EDT 2002 i686 system.sysObjectID.0 = OID: enterprises.ucdavis.ucdSnmpAgent.linux system.sysUpTime.0 = Timeticks: (47405) 0:07:54.05 system.sysContact.0 = root@ system.sysName.0 = note.wmware.org system.sysLocation.0 = Unknown system.sysORLastChange.0 = Timeticks: (0) 0:00:00.00 system.sysORTable.sysOREntry.sysORID.1 = OID: ifMIB system.sysORTable.sysOREntry.sysORID.2 = OID: .iso.org.dod.internet.snmpV2.snmpModules.snmpMIB system.sysORTable.sysOREntry.sysORID.3 = OID: tcpMIB system.sysORTable.sysOREntry.sysORID.4 = OID: ip system.sysORTable.sysOREntry.sysORID.5 = OID: udpMIB system.sysORTable.sysOREntry.sysORID.6 = OID: .iso.org.dod.internet.snmpV2.snmpModules.snmpVacmMIB.vacmMIBConformance.vacmMIBGroups.vacmBasicGroup system.sysORTable.sysOREntry.sysORID.7 = OID: .iso.org.dod.internet.snmpV2.snmpModules.snmpFrameworkMIB.snmpFrameworkMIBConformance.snmpFrameworkMIBCompliances.snmpFrameworkMIBCompliance system.sysORTable.sysOREntry.sysORID.8 = OID: .iso.org.dod.internet.snmpV2.snmpModules.snmpMPDMIB.snmpMPDMIBConformance.snmpMPDMIBCompliances.snmpMPDCompliance system.sysORTable.sysOREntry.sysORID.9 = OID: .iso.org.dod.internet.snmpV2.snmpModules.snmpUsmMIB.usmMIBConformance.usmMIBCompliances.usmMIBCompliance system.sysORTable.sysOREntry.sysORDescr.1 = The MIB module to describe generic objects for network interface sub-layers system.sysORTable.sysOREntry.sysORDescr.2 = The MIB module for SNMPv2 entities system.sysORTable.sysOREntry.sysORDescr.3 = The MIB module for managing TCP implementations system.sysORTable.sysOREntry.sysORDescr.4 = The MIB module for managing IP and ICMP implementations system.sysORTable.sysOREntry.sysORDescr.5 = The MIB module for managing UDP implementations system.sysORTable.sysOREntry.sysORDescr.6 = View-based Access Control Model for SNMP. system.sysORTable.sysOREntry.sysORDescr.7 = The SNMP Management Architecture MIB. system.sysORTable.sysOREntry.sysORDescr.8 = The MIB for Message Processing and Dispatching. system.sysORTable.sysOREntry.sysORDescr.9 = The management information definitions for the SNMP User-based Security Model. system.sysORTable.sysOREntry.sysORUpTime.1 = Timeticks: (0) 0:00:00.00 system.sysORTable.sysOREntry.sysORUpTime.2 = Timeticks: (0) 0:00:00.00 system.sysORTable.sysOREntry.sysORUpTime.3 = Timeticks: (0) 0:00:00.00 system.sysORTable.sysOREntry.sysORUpTime.4 = Timeticks: (0) 0:00:00.00 system.sysORTable.sysOREntry.sysORUpTime.5 = Timeticks: (0) 0:00:00.00 system.sysORTable.sysOREntry.sysORUpTime.6 = Timeticks: (0) 0:00:00.00 system.sysORTable.sysOREntry.sysORUpTime.7 = Timeticks: (0) 0:00:00.00 system.sysORTable.sysOREntry.sysORUpTime.8 = Timeticks: (0) 0:00:00.00 system.sysORTable.sysOREntry.sysORUpTime.9 = Timeticks: (0) 0:00:00.00 [root@note snmp]# snmpwalk -Of localhost private memory .iso.org.dod.internet.private.enterprises.ucdavis.memory.memIndex.0 = 0 .iso.org.dod.internet.private.enterprises.ucdavis.memory.memErrorName.0 = swap .iso.org.dod.internet.private.enterprises.ucdavis.memory.memTotalSwap.0 = 264560 .iso.org.dod.internet.private.enterprises.ucdavis.memory.memAvailSwap.0 = 261656 .iso.org.dod.internet.private.enterprises.ucdavis.memory.memTotalReal.0 = 191272 .iso.org.dod.internet.private.enterprises.ucdavis.memory.memAvailReal.0 = 13140 .iso.org.dod.internet.private.enterprises.ucdavis.memory.memTotalFree.0 = 274796 .iso.org.dod.internet.private.enterprises.ucdavis.memory.memMinimumSwap.0 = 16000 .iso.org.dod.internet.private.enterprises.ucdavis.memory.memShared.0 = 0 .iso.org.dod.internet.private.enterprises.ucdavis.memory.memBuffer.0 = 28148 .iso.org.dod.internet.private.enterprises.ucdavis.memory.memCached.0 = 129248 .iso.org.dod.internet.private.enterprises.ucdavis.memory.memSwapError.0 = 0 .iso.org.dod.internet.private.enterprises.ucdavis.memory.memSwapErrorMsg.0 = [root@note snmp]# snmpwalk -On localhost private memory .1.3.6.1.4.1.2021.4.1.0 = 0 .1.3.6.1.4.1.2021.4.2.0 = swap .1.3.6.1.4.1.2021.4.3.0 = 264560 .1.3.6.1.4.1.2021.4.4.0 = 261656 .1.3.6.1.4.1.2021.4.5.0 = 191272 .1.3.6.1.4.1.2021.4.6.0 = 13132 .1.3.6.1.4.1.2021.4.11.0 = 274788 .1.3.6.1.4.1.2021.4.12.0 = 16000 .1.3.6.1.4.1.2021.4.13.0 = 0 .1.3.6.1.4.1.2021.4.14.0 = 28152 .1.3.6.1.4.1.2021.4.15.0 = 129248 .1.3.6.1.4.1.2021.4.100.0 = 0 .1.3.6.1.4.1.2021.4.101.0 = [root@note snmp]# 


    5 자주 사용되는 OID

    5.1 시스템의 상태을 확인하기 위해 사용되는 OID

  • system info system.sysUpTime.0 system.sysName.0

  • network info interfaces.ifTable.ifEntry.ifSpeed interfaces.ifTable.ifEntry.ifPhysAddress interfaces.ifTable.ifEntry.ifInOctets interfaces.ifTable.ifEntry.ifOutOctets interfaces.ifTable.ifEntry.ifInUcastPkts interfaces.ifTable.ifEntry.ifOutUcastPkts

  • process info enterprises.ucdavis.prTable.prEntry.prNames enterprises.ucdavis.prTable.prEntry.prCount

  • system stat enterprises.ucdavis.systemStats.ssSwapIn.0 enterprises.ucdavis.systemStats.ssSwapOut.0 enterprises.ucdavis.systemStats.ssIOSent.0 enterprises.ucdavis.systemStats.ssIOReceive.0 enterprises.ucdavis.systemStats.ssSysInterrupts.0 enterprises.ucdavis.systemStats.ssSysContext.0 enterprises.ucdavis.systemStats.ssCpuUser.0 enterprises.ucdavis.systemStats.ssCpuSystem.0 enterprises.ucdavis.systemStats.ssCpuIdle.0

  • cpu load(1분/5분/15분 평균 로드) enterprises.ucdavis.laTable.laEntry.laLoad.1 enterprises.ucdavis.laTable.laEntry.laLoad.2 enterprises.ucdavis.laTable.laEntry.laLoad.3

  • disk(마운트이름/블록크기/디스크블록수/디스크사용량) host.hrStorage.hrStorageTable.hrStorageEntry.hrStorageDescr host.hrStorage.hrStorageTable.hrStorageEntry.hrStorageAllocationUnits host.hrStorage.hrStorageTable.hrStorageEntry.hrStorageSize host.hrStorage.hrStorageTable.hrStorageEntry.hrStorageUsed
  • 5.2 인터페이스 카드와 관련된 OID

  • device details (rfc 1213) .iso.3.6.1.2.1.1.1.0 #description .iso.3.6.1.2.1.1.4.0 #contact .iso.3.6.1.2.1.1.5.0 #name .iso.3.6.1.2.1.1.6.0 #location .iso.3.6.1.2.1.1.7.0 #services

  • interface table & interface table extensions (rfc 1213 & 1573) .iso.3.6.1.2.1.2.2.1.5 #ifSpeed .iso.3.6.1.2.1.2.2.1.2 #ifDescr .iso.3.6.1.2.1.2.2.1.3 #ifType .iso.3.6.1.2.1.2.2.1.8 #ifOperStatus .iso.3.6.1.2.1.2.2.1.6 #ifPhysAddress .iso.3.6.1.2.1.31.1.1.1.1 #ifName .iso.3.6.1.2.1.31.1.1.1.18 #ifDescription

  • ip addresses for interfaces (rfc 1213) .iso.3.6.1.2.1.4.20.1.2 #ipAdEntIfIndex

  • routing table (rfc 1213) .iso.3.6.1.2.1.4.21.1.2 #ipRouteIfIndex .iso.3.6.1.2.1.4.21.1.11 #ipRouteMask .iso.3.6.1.2.1.4.21.1.7 #ipRouteNextHop .iso.3.6.1.2.1.4.21.1.8 #ipRouteType

  • ip address table (rfc 1213) .iso.3.6.1.2.1.4.22.1.2 #ipNetToMediaPhysAddress

  • bridge table (rfc 1493) .iso.3.6.1.2.1.17.1.4.1.2 #dot1dBasePortIfIdx .iso.3.6.1.2.1.17.4.3.1.1 #dot1dTpFdbAddress .iso.3.6.1.2.1.17.4.3.1.2 #dot1dTpFdbPort

  • 6 기타

    6.2 푸 념

  • 냠냠냠...이걸 언제 다 익혀서 NMS 을 만든다냐? 냠냠냠...인생은 괴로운것이여. T.T
  • 6.3 원본 문서

  • 원본 문서는 본인의 위키에서 구할수 있을것이다. 냠냠...주로 본인의 위키에서 작업을 하는지라 이곳의 문서가 조금 늦게 업데이트 되거나 업데이트 되지 않을수도 있다.
  • http://hurryon.org/wiki/index.php/ucd-snmp%20%BB%E7%BF%EB%B9%FD