ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ucd-snmp 사용하기
    분류전 2010. 2. 10. 15:22
    반응형
    저자: 이종혁(Internet Management Technology Lab, Sungkyunkwan University. webmaster at hurryon.org)

    목차
    1 ucd-snmp 소 개
    2 ucd-snmp 설 치
    2.1 다운로드
    2.2 컴파일
    2.3 기본 설정파일 복사
    2.4 펄 확장 모듈 설치
    2.5 파일들의 위치
    3 ucd-snmp 설 정
    4 ucd-snmp 사 용
    4.1 라이브러리 이용하기
    4.2 ucd-snmp 에서 제공되는 명령어 이용하기
    4.2.1 snmptest
    4.2.2 snmpget
    4.2.3 snmpgetnext
    4.2.4 snmpwalk
    5 자주 사용되는 OID
    5.1 시스템의 상태을 확인하기 위해 사용되는 OID
    5.2 인터페이스 카드와 관련된 OID
    6 기타
    6.1 레퍼런스
    6.2 푸 념
    6.3 원본 문서


    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       privatecom2sec mynetwork 192.168.119.128/29      publicsysservices 76syslocation skkusyscontact 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 publicVariable: system.sysDescr.0Variable: system.sysName.0Variable: Received Get Response from 192.168.119.128requestid 0x456B696C errstat 0x0 errindex 0x0system.sysDescr.0 = Linux note.wmware.org 2.4.18-3 #1 Thu Apr 18 07:37:53 EDT 2002 i686system.sysName.0 = note.wmware.orgVariable: [root@note snmp]# 
4.2.2 snmpget #
snmpget 명령어는 명령어 이름에서 알수 있듯이 에이전트로부터 정보을 얻어 오는데 사용되는 명령어 있다. 인자값으로 MIB의 계층이름이나 OID 번호을 넣을수 있다. snmpget 명령어는 snmp get의 기능을 구현한 명령어이기 때문에 하위 계층의 정보는 가져 오지 않는다.

[root@note bin]# snmpget localhost public system.sysDescr.0system.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 packetReason: (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 packetReason: (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 packetReason: (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 i686system.sysObjectID.0 = OID: enterprises.ucdavis.ucdSnmpAgent.linuxsystem.sysUpTime.0 = Timeticks: (47405) 0:07:54.05system.sysContact.0 = root@system.sysName.0 = note.wmware.orgsystem.sysLocation.0 = Unknownsystem.sysORLastChange.0 = Timeticks: (0) 0:00:00.00system.sysORTable.sysOREntry.sysORID.1 = OID: ifMIBsystem.sysORTable.sysOREntry.sysORID.2 = OID: .iso.org.dod.internet.snmpV2.snmpModules.snmpMIBsystem.sysORTable.sysOREntry.sysORID.3 = OID: tcpMIBsystem.sysORTable.sysOREntry.sysORID.4 = OID: ipsystem.sysORTable.sysOREntry.sysORID.5 = OID: udpMIBsystem.sysORTable.sysOREntry.sysORID.6 = OID: .iso.org.dod.internet.snmpV2.snmpModules.snmpVacmMIB.vacmMIBConformance.vacmMIBGroups.vacmBasicGroupsystem.sysORTable.sysOREntry.sysORID.7 = OID: .iso.org.dod.internet.snmpV2.snmpModules.snmpFrameworkMIB.snmpFrameworkMIBConformance.snmpFrameworkMIBCompliances.snmpFrameworkMIBCompliancesystem.sysORTable.sysOREntry.sysORID.8 = OID: .iso.org.dod.internet.snmpV2.snmpModules.snmpMPDMIB.snmpMPDMIBConformance.snmpMPDMIBCompliances.snmpMPDCompliancesystem.sysORTable.sysOREntry.sysORID.9 = OID: .iso.org.dod.internet.snmpV2.snmpModules.snmpUsmMIB.usmMIBConformance.usmMIBCompliances.usmMIBCompliancesystem.sysORTable.sysOREntry.sysORDescr.1 = The MIB module to describe generic objects for network interface sub-layerssystem.sysORTable.sysOREntry.sysORDescr.2 = The MIB module for SNMPv2 entitiessystem.sysORTable.sysOREntry.sysORDescr.3 = The MIB module for managing TCP implementationssystem.sysORTable.sysOREntry.sysORDescr.4 = The MIB module for managing IP and ICMP implementationssystem.sysORTable.sysOREntry.sysORDescr.5 = The MIB module for managing UDP implementationssystem.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.00system.sysORTable.sysOREntry.sysORUpTime.2 = Timeticks: (0) 0:00:00.00system.sysORTable.sysOREntry.sysORUpTime.3 = Timeticks: (0) 0:00:00.00system.sysORTable.sysOREntry.sysORUpTime.4 = Timeticks: (0) 0:00:00.00system.sysORTable.sysOREntry.sysORUpTime.5 = Timeticks: (0) 0:00:00.00system.sysORTable.sysOREntry.sysORUpTime.6 = Timeticks: (0) 0:00:00.00system.sysORTable.sysOREntry.sysORUpTime.7 = Timeticks: (0) 0:00:00.00system.sysORTable.sysOREntry.sysORUpTime.8 = Timeticks: (0) 0:00:00.00system.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.ssI?OSent.0
    enterprises.ucdavis.systemStats.ssI?OReceive.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.1 레퍼런스 #

  • http://net-snmp.sourceforge.net
  • http://www.superuser.co.kr
  • http://www.joinc.co.kr
  • http://www.ibr.cs.tu-bs.de/cgi-bin/sbrowser.cgi
  • http://netmon.ncl.ac.uk

    6.2 푸 념 #

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

    6.3 원본 문서 #

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

    파워포인트 플래시 차트 넣는 방법(swiff chart 활용)  (0) 2010.02.11
    플래시 차트~~  (0) 2010.02.11
    snmp 사용법(man snmp)  (0) 2010.02.10
    PHP에서 snmp 사용하기  (0) 2010.02.10
    IP Scanner  (0) 2010.02.10