UNIX 및 Linux 서버에 대한 Resource 모니터링<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
(CPU, Memory, Disk)
Unix계열(Linux포함)의 장비에 대한 Resource를 MRTG를 이용하여 모니터링하는 방법에 대한 질문을 많이 해주셨는데, 이에 대한 확실한 답변을 드리지 못했던 것이 사실입니다. 그래서 이번에 <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />이우경님(whamsay)이 알려주신 방법과 제가 알고 있는 방법을 같이 소개하고자 합니다. 많이 활용해 보시기 바랍니다.
1. UCD-SNMP를 설치하여 SUN의 Solaris 모니터링하기
① UCD-SNMP 설치
i. 다운받기 : http://net-snmp.sourceforge.net/ 에서 [Download]로 들어가셔서 최신버전으로 다운받으시기 바랍니다. 여기서는 ucd-snmp-4.2.tar.gz를 다운받아서 설치한다.
ii. gzip –d ucd-snmp-4.2.tar.gz
tar -xvf ucd-snmp-4.2.tar
mv ./ucd-snmp*/ /usr/local/ucd-snmp/
cd /usr/local/ucd-snmp
./configure (몇 가지 설정을 물어보는데 기본값을 그대로 사용하면 됩니다.)
make
umask 022
make install
② snmpd.conf 파일 및 데몬 실행
i. cp EXAMPLE.conf /usr/local/share/snmp/snmpd.conf
ii. cd /usr/local/share/snmp
iii. vi snmpd.conf
여기서 ‘com2sec’와 관련된 부분은 community와 관련된 부분으로 수정을 하시던지 아니면 ‘#’으로 아래와 같이 주석처리를 하시면 됩니다.
#com2sec local localhost COMMUNITY
#com2sec mynetwork NETWORK/24 COMMUNITY
iv. /usr/local/sbin/snmpd -> 이렇게 snmp 데몬을 실행을 하시면 되는데, 그전에 기존의 snmp데몬은 다음과 같이 찾으신 후에 kill –9로 죽이시면 됩니다.
v. ps -ef | grep snmp
/usr/lib/snmp/snmpdx -y -c /etc/snmp/conf
③ MIB설명
이제 UCD-SNMP가 제공하는 MIB을 이용하여 SUN Solaris에 대한 모니터링이 가능하다.
참조 MIB파일 : /usr/local/ucd-snmp/mibs/UCD-SNMP-MIB.txt
기본 MIB: .iso.org.dod.internet.private.enterprises.ucdavis (.1.3.6.1.4.1.2021)
i. MEMORY관련 MIB : .1.3.6.1.4.1.2021.4.x.x
‘top’ 명령 결과 : Memory:1024M real, 259M free, 409M swap in use, 3595M swap free
|
OID |
MIB |
결과값(Kbytes) |
Description |
|
memTotalSwap |
.1.3.6.1.4.1.2021.4.3.0 |
4079424 |
Swap영역의 전체 크기 |
|
memAvailSwap |
.1.3.6.1.4.1.2021.4.4.0 |
3680792 |
사용 가능한 Swap영역 |
|
memTotalReal |
.1.3.6.1.4.1.2021.4.5.0 |
1026312 |
물리적 메모리 크기 |
|
memAvailReal |
.1.3.6.1.4.1.2021.4.6.0 |
293704 |
사용 가능한 물리적 메모리 크기 |
|
memTotalFree |
.1.3.6.1.4.1.2021.4.11.0 |
3973968 |
전체 사용가능한 메모리 크기 |
l 위의 top과 결과값은 측정한 시간이 차이가 있으므로 정확하게 일치하지는 않는다.
ii. PROCESSOR관련 MIB : .1.3.6.1.4.1.2021.10.1.3.x
|
OID |
MIB |
결과값 |
Description |
|
laLoad-1 |
.1.3.6.1.4.1.2021.10.1.3.1 |
0.49 |
지난 1분 동안의 평균 load |
|
laLoad-5 |
.1.3.6.1.4.1.2021.10.1.3.2 |
0.38 |
지난 5분 동안의 평균 load |
|
laLoad-15 |
.1.3.6.1.4.1.2021.10.1.3.3 |
0.41 |
지난 15분 동안의 평균 load |
l 결과값에 100을 곱하면 백분율이 된다.
iii. DISK관련 MIB : .1.3.6.1.4.1.2021.9.1.x.x
|
OID |
MIB |
결과값(Kbytes) |
Description |
|
dskTotal |
.1.3.6.1.4.1.2021.9.1.6.1 |
5043518 |
분할된 디스크의 전체 크기 |
|
dskAvail |
.1.3.6.1.4.1.2021. 9.1.7.1 |
2440233 |
사용 가능한 영역 |
|
dskUsed |
.1.3.6.1.4.1.2021. 9.1.8.1 |
2552850 |
사용된 영역 |
l 위의 MIB을 snmpwalk을 이용해서 확인해 보면, ‘/’로 파티션된 영역에 대해서만 값을 가져옴을 알 수 있다.
iv. sample cfg파일 – CPU Load
CPU사용률에 대한 결과값이 소수점이므로 이를 백분율로 나타내기 위해서 간단히 perl프로그램을 이용하여 작성하였고, 이 작성된 perl 프로그램을 Target에서 실행하도록 하였다.
[주의]실행 가능하도록 다음과 같이 속성을 변경해야 합니다. ‘chmod 755 cpumonitoring.pl’
[perl 프로그램 : cpumonitoring.pl]
mrtg# cat cpumonitoring.pl
------------------------------- cut here --------------------------------
#!/usr/local/bin/perl/perl
system "/usr/local/bin/snmpget 211.39.35.131 public .1.3.6.1.4.1.2021.10.1.3.1 | awk '{print \$3}' > temp";
system "/usr/local/bin/snmpget 211.39.35.131 public .1.3.6.1.4.1.2021.10.1.3.2 | awk '{print \$3}' >> temp";
open( fileHandle, "<temp" ) || die "Cannot open $fileName.\n";
$value1 = <fileHandle> ; # 1분 평균 load
$value2 = <fileHandle> ; # 5분 평균 load
chop($value1); # 개행문자 버림
chop($value2); # 개행문자 버림
close( fileHandle );
$one_minute = $value1 * 100 ; # 백분율로 변경
$five_minute = $value2 * 100 ;
print "$one_minute\n$five_minute\n"; # 결과출력
------------------------------- cut here --------------------------------
[cfg파일]
############################################
# CPU load config for www3
Target[cpu]:`/usr/local/mrtg/cpumonitoring.pl `
Options[cpu]: growright, gauge, absolute, nopercent
MaxBytes[cpu]: 100
Title[cpu]: CPU 평균사용률
Ylegend[cpu]: Load Avg
ShortLegend[cpu]: %
Legend1[cpu]: 1 min. CPU load average
Legend2[cpu]: 5 min. CPU load average
LegendI[cpu]: 1min:
LegendO[cpu]: 5min:
PageTop[cpu]:<H1>CPU 평균 사용률</H1>
<TABLE>

댓글목록
등록된 댓글이 없습니다.