[시스템] 리소스 모니터링[MRTG] – 아랑
<<<< LINUX 서버에 대한 리소스 모니터링 >>>>
UNIX 계열의 장비에 대한 리소스를 MRTG 를 이용하여 모니터링 하는 방법에 대해
알아보자.
필요한 것으로는 SNMP 와 MRTG 이다. 이 툴들을 설치하기 위해선 몇가지 부수적
인 프로그램이 필요하다. zlib,gd,libpng,libjpeg 등이다.
자 그럼 간단히 설치 과정을 살펴보자.
먼저 ucd-snmpd 를 설치하자. 배포판을 설치시 기본적으로 셋팅이 되어져 있는
경우도 있는데 이를 그대로 사용시에는 가끔 골치 아픈 문제가 생기게 되는 처음
부터 깔끔하게 소스로 설치하도록 하자.
먼저 패키지를 제거하고 ..
# rpm -e ucd-snmp-devel
# rpm -e ucd-snmp-utils
# rpm -e –nodeps ucd-snmp
ucd-snmp 의 사이트는 http://ucd-snmp.ucdavis.edu/이며, 최근 NET-SNMP 이라는
이름으로 바뀌었습니다.
최신버전은 http://sourceforget.net
에서 받을수 있습니다.
적절한 위치에 소스를 풀고 (난 /usr/local/src ) configure 를 한다.
# ./configure
중간에 몇가지 질문이 나온다. 적당한 정보를 입력하기 바랍니다.
System Contact Information (root@): loveme at wowlinux.com
…
System Location (Unknown): wowlinux/seoul/korea
….
# make
# umask 022
# make install
Perl/SNMP 모듈인스톨을 하자.
ucd-snmp/perl/SNMP 디렉토리내에 Perl/SNMP 모듈이 포함되어져 있으므로함께
인스톨 해야 한다.
# cd perl/SNMP/
# perl Makefile.PL
# make
# make test
# make install
테스트 중간에 1~2개 정도 실패할수도 있지만 설치에는 큰 문제는 없다.
snmp 설치가 끝났으면 snmpd 데몬을 실행하고 확인한다.
이상 기본 설정으로는 snmp 서비스를 이용할수 있는것은 localhost 와
public 커뮤니티 뿐이다. 하지만 이는 표준화 되어져 있으므로 보안상
꼭 커뮤니티는 바꾸어 주어야 한다.
snmp 소스 디렉토리에서
# cp EXAMPLE.conf /usr/local/share/snmp/snmpd.conf
# cd /usr/local/share/snmp
# vi snmpd.conf
—————————————————————————–
.
.
####
# First, map the community name (COMMUNITY) into a security name
# (local and mynetwork, depending on where the request is coming
# from):
# sec.name source community
com2sec local localhost xxxxxxxxxxxxx
com2sec mynetwork NETWORK/24 xxxxxxxxxxxxx
.
.
—————————————————————————–
이시스템 자체에서 모니터툴인 MRTG 가 설치 되어져 있는 경우에는 local 부분의
community 를 바꾸어 주어야 하고, 원격 시스템에 MRTG 가 설치되어져 있는 경우
에는 mynetwork 부분의 NETWOK/24 부분에 원격시스템의 주소를 적어주고 community
를 변경해 주면 된다.
자 이제 snmp 의 동작유무를 확인합니다.
# snmpwalk localhost xxxxxxxxxxxx system
————
(춤ommunity )
여러가지 시스템 정보가 출력되면 정상입니다.
MRTG 설치
먼저 MRTG 를 설치하기 위해서 apache+PHP 에 gd 와 libpng,zlib가 연동되어져
있어야 합니다. 그런후 MRTG 를 설치하시는게 좋을것입니다.
MRTG 설치전에 몇가지 확인을 해보자.
PERL 확인 : perl 5.005 이후
zlib 설치유무
libpng 설치유무
gd 설치유무 (/usr/local/gd 에서 ./configure && make && make install)
탨MRTG 설치 (/usr/local에서 작업)
# tar xzvf mrtg-2.9.10.tar.gz
# mv mrtg-2.9.10 mrtg
# cd mrtg
# ./configure –with-gd=/usr/local/gd –with-zlib=/usr/lib \\
–with-libpng=/usr/lib
(보통 rpm 으로 설치시 /usr/lib 에 zlib,libpng 등의 라이브러리가 있다.
만일 소스로 직접 설치시에는 설치 경로를 적어주면 된다.)
# make
MRTG 가 이상없이설치 완료 되었으면 bin 디렉토리 밑에 mrtg,cfgmaker 와
같은 실행파일이 만들어 져 있다.
cfg 파일 생성
# cd bin
# ./cfgmaker xxxxxxx@localhost (xxxxxxx는 snmp 설치시 community 이고 localhost
에는 ip address 혹은 domain name 을 적어준다. )
그러면 앞으로 만들어질 cfg 파일의 내요이 보일것이다. 만일
SNMPWALK Problem for 1.3.6.1.2.1.2.2.1.3 on xxxxxxxxx@localhost:
와 같은 메세지가 뜨면 이는 community 가 틀리거나 snmp 데몬이 정상적으로 동작
하지 않는 경우이다. 앞의 셋팅 과정에 이상이 없는지 확인하라.
정상적으로 나오면 cfg 파일을 만들어 보자.
# ./cfgmaker xxxxxxxx@localhost > mrtg.cfg
# vi mrtg.cfg (몇가지 수정 추가를 해준다. )
Language: korean (사용언어)
Options[_]: bits
WorkDir: /home/xxxx/www/mrtg ( mrtg 정보를 보여줄 홈페이지 절대경로)
등을 추가 한다.
그리고 리포트가 만들어질 작업 디렉토리를 생성해주고 apache 를 셋팅해준다.
# mkdir /home/xxxxx/www/mrtg
그런후 mrtg 를 실행한다.
# ./mrtg mrtg.cfg
위 명령을 치면 처음에 몇가지 warning 메세지가 뜨는데 이는 비교할수 있는
log 값이 없기 때문에 나타나는 것으로 위명령을 2,3 번 정도 반복하면 더이상
나오지 않을것이다.
이제 주기적으로mrtg 를 실행할수 있도록 cron 데몬에 등록 시켜주면 된다.
cpu 와 메모리 등도 모니터링이 가능한데 이는 여러가지 기반 지식이 필요하니
전제적은 설명은 생략하고 다음 cfg 파일을 이용하도록 하자.
CPU 모니터링
먼저 CPU 는 snmp 의 mib 에서 정보유출 형식이 소수점으로 나오기 때문에 100을
곱하여 백분율식으로 변경해 주어야 한다. 그레서 perl 스크립트를 이용하여 사용
하도록 한다.
# vi cpumonitoring.pl
—————————————————————————-
#!/usr/bin/perl
system “/usr/local/bin/snmpget 211.201.133.135 \\
muchunalang .1.3.6.1.4.1.2021.10.1.3.1 | awk ‘{print \\$3}’ > temp”;
system “/usr/local/bin/snmpget 211.201.133.135 \\
muchunalang .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>;
$value2=<fileHandle>;
chop($value1);
chop($value2);
close(fileHandle);
$one_minute = $value1 * 100;
$five_minute = $value2 * 100;
print “$one_minute\\n$five_minute\\n”;
——————————————————————————-
# chmod 755 cpumonitoring.pl
# vi cpu.mrtg
——————————————————————————-
#######################################################################
# CPU load config for www3
#
Target[cpu]:’/usr/local/mrtg/bin/cpumonitoring.pl’
Language: korean
WorkDir: /home/muchun/www/mrtg
Options[cpu]: growright, gauge, absolute, nopercent
MaxBytes[cpu]: 100
Title[cpu]: CPU 평균사용률
Ylegend[cpu]: Load Avg
ShortLegend[cpu]: %
Legend1[cpu]: 1min. CPU load average
Legend2[cpu]: 5min. CPU load average
LegendI[cpu]: 1min:
LegendO[cpu]: 5min:
PageTop[cpu]:<H1>CPU 평균 사용률</H1>
<table>
<tr><td>System:</td><td>RedHat 7.0</td></tr>
<tr><td>Variables:</td><td>Green:1분평균,Blue:5분평균</td></tr>
</table>
#######################################################################
# CPU load config for www3
#
Target[cpu]:’/usr/local/mrtg/bin/cpumonitoring.pl’
Language: korean
WorkDir: /home/muchun/www/mrtg
Options[cpu]: growright, gauge, absolute, nopercent
MaxBytes[cpu]: 100
Title[cpu]: CPU 평균사용률
Ylegend[cpu]: Load Avg
ShortLegend[cpu]: %
Legend1[cpu]: 1min. CPU load average
Legend2[cpu]: 5min. CPU load average
LegendI[cpu]: 1min:
LegendO[cpu]: 5min:
PageTop[cpu]:<H1>CPU 평균 사용률</H1>
<table>
<tr><td>System:</td><td>RedHat 7.0</td></tr>
<tr><td>Variables:</td><td>Green:1분평균,Blue:5분평균</td></tr>
</table>
——————————————————————————-
# ./mrtg cpu.cfg
메모리 모니터링
# vi mem.cfg
——————————————————————————
#######################################################################
# memory load config for zzang911.net
#
Target[mem]:.1.3.6.1.4.1.2021.4.4.0&.1.3.6.1.4.1.2021.4.6.0:muchunalang@zzang911
.net
Language: korean
WorkDir: /home/muchun/www/mrtg
Options[mem]: growright, gauge, absolute, nopercent
MaxBytes[mem]: 646864
Title[mem]: Memory 평균사용률
Ylegend[mem]: Avaiable memory
ShortLegend[mem]:
kilo[mem]: 1024
KMG[mem]: ,M,G,T,P
Legend1[mem]: swap free
Legend2[mem]: real free
LegendI[mem]: swap
LegendO[mem]: real
PageTop[mem]:<H1>Memory 사용률 모니터링 </H1>
<table>
<tr><td>System:</td><td>RedHat 7.0</td></tr>
<tr><td>Totals:</td><td>Real = 640MBytes and Swap =
600MBytes </td></tr>
<tr><td>Variables:</td><td>Avaiable memory: Real and
Swap</td></tr>
</table>
——————————————————————————-
# ./mrtg mem.cfg
이와 같이 하면 모니터링이 가능하다.
그럼…이만..휘리릭~~~~