// 제 목: ucd-snmp 설치
// 작성자: 김영대( http://www.howto.pe.kr )
0.설치환경
O/S: Linux 2.4.18-3 (Redhat 7.3)
1.소개
SNMP(Simple Network Management Protocol)는 네트웍 장비들로 부터 필요한 정보를 가져와 장비상태를
모니터링하거나 해당 장비의 관련 설정값을 변경하는 등의 작업을 하여 네트웍 장비의 전체상황을 관리
할수 있는 프로토콜이다. 관리대상이 되는 장비들에는 Agent 가 설치되어 있어야 하고 이들 Agent 로부터
정보를 받는 호스트를 Manager 라 한다. SNMP는 RFC-1157에 정의되어 있으며 네트웍 장비를 생산하는
대부분의 업체에서는 RFC-1157 을 따라 생산함으로써 다른 네트웍 장비와의 호환성을 유지하게 한다
SNMP의 RFC-1157 문서는 아래의 URL에서 볼수 있다
ftp://ftp.isi.edu/in-notes/rfc1157.txt
ucd-snmp 는 망관리 프로토콜인 SNMP 를 이용할수 있도록 해주는 공개 소프트웨어이다. ucd-snmp 는
현재 버전 5대로 올라가면서 프로젝트의 이름을 net-snmp 로 변경한 상태이다. 일반적으로 많이 사용되고
있는 ucd-snmp의 버전은 4대이다.
0.다운받기(소스)
ucd-snmp-4.2.6.tar.gz ( http://net-snmp.sourceforge.net )
1.설치하기
이전에 Redhat 설치시 RPM 형태로 설치된 snmp 가 있는지 확인하고 이를 제거한다.
또한 실행중인 snmpd 데몬도 종료시킨다
기본으로 설치된 ucd-snmp 는 전체 패키지가 설치된것이 아니므로 다시 설치해야 한다. 소스로 설치할 것이다
다운받은 파일을 임의의 디렉토리에서 압축을 풀고 생성된 디렉토리로 이동한다
[root root]# tar xvfz ucd-snmp-4.2.6.tar.gz
[root root]# cd ucd-snmp-4.2.6
configure 를 하게되면 몇가지 질문들이 나오는데 그냥 기본값을 사용할것이므로 엔터키를 치고 넘어간다
[root ucd-snmp-4.2.6]# ./configure
configure 작업이 끝났으므로 이제 컴파일을 한다
[root ucd-snmp-4.2.6]# make
[root ucd-snmp-4.2.6]# make install
설치가 완료되면 아래의 위치에 파일들이 설치된다
/usr/local/bin 일반적인 명령어들
/usr/local/sbin 데몬들
/usr/local/lib 라이브러리들
/usr/local/include/ucd-snmp 헤더파일들
2.SNMP Agent(snmpd)를 위한 환경설정
/usr/local/share/snmp 에 snmpd.conf 파일을 만들어야 하는데 미리 만들어진것을 복사하여 사용하면 된다
[root ucd-snmp-4.2.6]# cp EXAMPLE.conf /usr/local/share/snmp/snmpd.conf
/usr/local/share/snmp 로 이동하여 좀전에 복사한 파일을 일부 수정한다
[root ucd-snmp-4.2.6]# cd /usr/local/share/snmp
[root snmp] vi snmpd.conf
...
com2sec local localhost private
com2sec mynetwork 211.225.118.0/24 public
...
group MyRWGroup v1 local
group MyRWGroup v2c local
group MyRWGroup usm local
group MyROGroup v1 mynetwork
group MyROGroup v2c mynetwork
group MyROGroup usm mynetwork
위의 내용은 private 라는 그룹(community) 의 IP 는 localhost 이고 접근 권한은 Read/Write 이며,
public 이라는 그룹의 IP는 211.225.118.0/255.255.255.0 이고 접근 권한은 Read Only 를 의미한다
Agent 로 동작할 경우 아무데서나 접근하지 못하도록 하는것이다
3.테스트
snmpd 데몬을 아래와 같이 띄운다
[root root]# /usr/local/sbin/snmpd
아래처럼 하여 private 그룹 권한으로 localhost를 system OID 의 정보를 읽을 수 있다
[root root]# snmpwalk localhost private system
아래처럼 하여 public 그룹 권한으로 외부의 211.255.118.38 의 system OID 의 정보를 읽을 수 있다
물론 211.255.118.38 의 snmpd.conf 에 pubic 그룹이 위와 같이 같은 네트워크 대의 접근을 허용했어야 한다
[root root]# snmpwalk 211.255.118.38 public system
4.유용한 OID 모음
1.CPU
1.1 정보
[root root]# snmpwalk localhost private systemStats
enterprises.ucdavis.systemStats.ssIndex.0 = 1
enterprises.ucdavis.systemStats.ssErrorName.0 = systemStats
enterprises.ucdavis.systemStats.ssSwapIn.0 = 0
enterprises.ucdavis.systemStats.ssSwapOut.0 = 0
enterprises.ucdavis.systemStats.ssIOSent.0 = 7
enterprises.ucdavis.systemStats.ssIOReceive.0 = 8
enterprises.ucdavis.systemStats.ssSysInterrupts.0 = 131
enterprises.ucdavis.systemStats.ssSysContext.0 = 62
enterprises.ucdavis.systemStats.ssCpuUser.0 = 0
enterprises.ucdavis.systemStats.ssCpuSystem.0 = 0
enterprises.ucdavis.systemStats.ssCpuIdle.0 = 98
enterprises.ucdavis.systemStats.ssCpuRawUser.0 = Counter32: 31282
enterprises.ucdavis.systemStats.ssCpuRawNice.0 = Counter32: 102
enterprises.ucdavis.systemStats.ssCpuRawSystem.0 = Counter32: 10047
enterprises.ucdavis.systemStats.ssCpuRawIdle.0 = Counter32: 3421252
1.2 부하(1/5/15 분)
[root root]# snmpwalk localhost private enterprises.ucdavis.laTable.laEntry
[root root]# snmpwalk localhost private enterprises.ucdavis.laTable.laEntry.laLoad.1
[root root]# snmpwalk localhost private enterprises.ucdavis.laTable.laEntry.laLoad.2
[root root]# snmpwalk localhost private enterprises.ucdavis.laTable.laEntry.laLoad.3
2.Disk
[root root]# snmpwalk localhost private dskEntry
enterprises.ucdavis.dskTable.dskEntry.dskIndex.1 = 1
enterprises.ucdavis.dskTable.dskEntry.dskPath.1 = /
enterprises.ucdavis.dskTable.dskEntry.dskDevice.1 = /dev/hda2
enterprises.ucdavis.dskTable.dskEntry.dskMinimum.1 = 10000
enterprises.ucdavis.dskTable.dskEntry.dskMinPercent.1 = -1
enterprises.ucdavis.dskTable.dskEntry.dskTotal.1 = 38574396
enterprises.ucdavis.dskTable.dskEntry.dskAvail.1 = 33272604
enterprises.ucdavis.dskTable.dskEntry.dskUsed.1 = 3342264
enterprises.ucdavis.dskTable.dskEntry.dskPercent.1 = 9
enterprises.ucdavis.dskTable.dskEntry.dskPercentNode.1 = 3
enterprises.ucdavis.dskTable.dskEntry.dskErrorFlag.1 = 0
enterprises.ucdavis.dskTable.dskEntry.dskErrorMsg.1 =
3.Memory
[root root]# snmpwalk localhost private memory
enterprises.ucdavis.memory.memIndex.0 = 0
enterprises.ucdavis.memory.memErrorName.0 = swap
enterprises.ucdavis.memory.memTotalSwap.0 = 779144
enterprises.ucdavis.memory.memAvailSwap.0 = 779144
enterprises.ucdavis.memory.memTotalReal.0 = 385112
enterprises.ucdavis.memory.memAvailReal.0 = 19064
enterprises.ucdavis.memory.memTotalFree.0 = 798208
enterprises.ucdavis.memory.memMinimumSwap.0 = 16000
enterprises.ucdavis.memory.memShared.0 = 0
enterprises.ucdavis.memory.memBuffer.0 = 33460
enterprises.ucdavis.memory.memCached.0 = 236116
enterprises.ucdavis.memory.memSwapError.0 = 0
enterprises.ucdavis.memory.memSwapErrorMsg.0 =
5.Network
5.1 bandwidth
[root root]# snmpwalk localhost private interfaces.ifTable.ifEntry.ifSpeed
interfaces.ifTable.ifEntry.ifSpeed.1 = Gauge32: 10000000 -> lo
interfaces.ifTable.ifEntry.ifSpeed.2 = Gauge32: 10000000 -> eth0
[root root]# snmpwalk localhost private interfaces.ifTable.ifEntry.ifPhysAddress
interfaces.ifTable.ifEntry.ifPhysAddress.1 =
interfaces.ifTable.ifEntry.ifPhysAddress.2 = 0:1:2:fd:17:45
5.2 traffic
[root root]# snmpwalk localhost private interfaces.ifTable.ifEntry.ifInOctets
interfaces.ifTable.ifEntry.ifInOctets.1 = Counter32: 39057 -> lo
interfaces.ifTable.ifEntry.ifInOctets.2 = Counter32: 43247592 -> eth0
[root root]# snmpwalk localhost private interfaces.ifTable.ifEntry.ifOutOctets
interfaces.ifTable.ifEntry.ifOutOctets.1 = Counter32: 39509
interfaces.ifTable.ifEntry.ifOutOctets.2 = Counter32: 2168525
[root root]$ snmpwalk localhost private interfaces.ifTable.ifEntry.ifInUcastPkts
interfaces.ifTable.ifEntry.ifInUcastPkts.1 = Counter32: 574
interfaces.ifTable.ifEntry.ifInUcastPkts.2 = Counter32: 592010
[root root]$ snmpwalk localhost private interfaces.ifTable.ifEntry.ifOutUcastPkts
interfaces.ifTable.ifEntry.ifOutUcastPkts.1 = Counter32: 580
interfaces.ifTable.ifEntry.ifOutUcastPkts.2 = Counter32: 18896
6.성능측정시 자주 사용되는 OID
Network I/O:
incoming network traffic: .1.3.6.1.2.1.2.2.1.10
outgoing network traffic: .1.3.6.1.2.1.2.2.1.16
Sysyem Load:
Load5, Load10 and Load15:.1.3.6.1.4.1.2021.10.1.3
CPU Usage:
CPU_usr, CPU_nice, CPU_nice and CPU_idle:.1.3.6.1.4.1.2021.11
Memory Usage:
MEM_free, Swap_MEM_Free:.1.3.6.1.4.1.2021.4
Disk Usage:
FreeDSK, UsedDsk:.1.3.6.1.4.1.2021.9
work/snmp