|
|
|
리눅스팁 Go Unix Power Tools Online Book
Go Bash Guide
|
|
Read No. 123 article |
2002-03-06 11:51:58 |
|
|
|
|
NickName |
simon |
Subject |
MRTG 메뉴얼 |
|
|
MRTG(Multi Router Traffic Grapher) 관련 문서 입니다.
KT-IDC(한국통신 인터넷 데이터 센터)의 운용실에 계시는 이재현씨가 제공해
주신 자료 입니다.
MRTG (Multi Router Traffic Grapher)
MRTG(Multi Router Traffic Grapher)는 SNMP를 지원하는 네트워크장비가 발생
하는 트래픽을 모니터링해 주는 소스가 공개된 프로그램입니다. 지정한시간
(Defaul는 5분)마다 모니터링한 결과값을 GIF(또는 PNG)이미지로 생성하여
HTML페이지로 뿌려주기 때문에 누구나 쉽게 트래픽 현황을 볼 수 있습니다.
MRTG 란
보다 자세히 설명드리면, MRTG는 Perl 언어와 C언어로 구성되어 있고, UNIX와
Windows NT에서 동작을 합니다. 그리고 그래프는 일간 그래프 외에, 주간, 월
간, 년간 그래프가 있으므로 시간대별 추위를 파악하는 데, 좋은 분석도구가
될 수 있습니다.
또 MRTG는 트래픽 모니터링 뿐만 아니라, SNMP값(MIB값)을 이용하여 다양한 모
니터링이 가능합니다. 그리고 외부 프로그램을 사용할 수 있기 때문에 다양한
변형이 가능합니다. 그리고, MRTG가 생성하는 log값을 가공하여 새로운 데이터
베이스를 구축하여 응용할 수 있습니다. log값을 가공하는데는 여러방법이 있
지만, 저는 주로 Perl언어를 사용했습니다. 그러나 PHP를 이용하면 복잡한 CGI
용 프로그램을 이용하지 않아도 쉽게 웹상에서 활용할 수 있습니다. 이에 대해
서도 아래 예에서 설명드리도록 하겠습니다.
대체적으로 MRTG는 다음과 같은 용도로 사용하고 있습니다.
- 네트워크 장비 인터페이스 별 트래픽 분석
- CPU나 메모리 사용률 분석
- 모뎀별 포트사용률 분석 ...
ucd-snmp 제거 및 소스 컴파일 설치
mrtg 를 사용하기 위해서는 SNMP 지원 패키지가 필요합니다.
와우 6.2up에서는 기본적으로
ucd-snmp-4.2-1
ucd-snmp-utils-4.2-1
ucd-snmp-devel-4.2-1
패키지가 포함되어 있으나, 삽질결과 문제가 있음이 밝혀 졌습니다.
따라서, 패키지를 제거 하고 최신 버전의 소스를 직접 설치할 것을 권합니다.
# 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://sourceforge.net/project/showfiles.php?group_id=12694 에서 받을
수 있습니다.
파일명 : ucd-snmp-4.2.tar.gz 사이즈 : 1566073
파일을 /tmp 에 이동하고 설치를 시작합니다.
# zcat ucd-snmp-4.2.tar.gz | tar xvf -
# cd ucd-snmp-4.2
# ./configure
중간에 다음과 같은 질문이 나오면 적당한 관리자 및 위치 정보를 입력하고 나
머지는 디폴트를 선택합니다.
...
System Contact Information (root@): loveme at wowlinux.com
...
System Location (Unknown): wowlinux/seoul/korea
....
# make
# make install
# make clean
snmp를 인스톨 할 때는 대상(서버나 라우터)과 모니터링을 위한 컴퓨터의
snmp 버전이 똑같은 것을 인스톨 해야 합니다.
Perl/SNMP 모듈 인스톨
ucd-snmp/perl/SNMP 디렉토리내에 Perl/SNMP 모듈이 포함되어 있으므로 함께
인스톨 해야 합니다.
#cd perl/SNMP/
#perl Makefile.PL
#make
#make test
#make install
* 테스트 중간에 1~2개 실패 할 수도 있지만 설치에는 큰 문제가 없습니다.
설치가 끝났으면 snmpd 데몬을 실행하고 확인합니다.
# snmpd ;경로는
usrl/local/sbin/snmmd*
# ps -aux | grep snmpd
이상의 기본설정으로는 snmp 서비스를 이용할 수 있는 것은
localhost 의 public 커뮤니티 뿐입니다.
아래 명령으로 snmp 의 동작유무를 확인합니다.
# snmpwalk localhost public system ;경로는 /usr/local/bin/snmpwalk*
여러가지 시스템 정보가 출력되면 정상입니다.
* 만일 snmpd 데몬이 떠 있지 않다면 다음과 같이 타임아웃 오류가 나올 것입
니다.
# killall snmpd
# snmpwalk localhost public system
Timeout: No Response from localhost
* snmp 와 MIB(맨인블랙이 아님!) 그리고 커뮤티니에 대해 알고 싶다면 아래
링크를 참고하세요. (물론 PDF가 첨부파일로 포함되어 있음.)
http://www.ieng.com/univercd/cc/td/doc/cisintwk/ito_doc/snmp.htm
mrtg 설치
mrtg 홈페이지 : http://ee-staff.ethz.ch/~oetiker/webtools/mrtg/
http://www.mrtg.co.kr/
최신 버전 : mrtg-2.9.6.tar.gz
다운로드 : http://ee-staff.ethz.ch/~oetiker/webtools/mrtg/pub/
0. 아파치 설치 확인 : 아파치 설치는 기본으로 되어 있다고 가정 합니다.
# rpm -qa | grep apache
% httpd.conf파일의 DocumentRoot 를 수정했을경우는 반드시 restart를 시킵니
다.
1. 펄 버전 확인 : perl 버전 확인 5.005 이후의 버전이 필요 합니다.
# perl -v
2. zlib 버전확인 :
#rpm -qa | grep zlib
3.libpng 설치 확인
# rpm -qa | grep libpng
4. gd
http://www.boutell.com/gd/ 에서 최신 버전을 받아 설치 합니다.
GIF의 라이센스 변경으로 PNG를 지원하는 1.8.3 버전이 필요합니다.
# zcat gd-1.8.3.tar.gz | tar xvf -
# mv ./gd-1.8.3/ /usr/local/gd/
# make
# make install
5. MRTG 설치
# zcat mrtg-2.9.6.tar.gz | tar xvf -
# mv mrtg-2.9.6 /usr/local/mrtg
# cd /usr/local/mrtg/
#./configure --with-gd=/usr/local/gd --with-z=/usr/lib --with-
png=/usr/lib
(사용자 설치한 gd 이외의 라이브러리는 /usr/lib 에 존재 합니다.)
#make
MRTG가 이상없이 설치되었다면 bin 디렉토리 밑에 mrtg, cfgmaker와 같은 실행
파일이 만들어 집니다.
6. cfg파일 생성
./cfgmaker --global 'WorkDir:/home/httpd/html/mrtg'
--global 'Options[_]:bits,growright' public@localhost >> mrtg.cfg
# ./cfgmaker --global 'WorkDir:/home/httpd/html/mrtg' --global 'Options
[_]:bi
ts,growright' public@localhost >> mrtg.cfg
--base: Get Device Info on public@localhost
--base: Vendor Id:
--base: Populating confcache
--base: Get Interface Info
--base: Walking ifIndex
--base: Walking ifType
--base: Walking ifSpeed
--base: Walking ifAdminStatus
--base: Walking ifOperStatus
*workdir은 결과파일이 만들어질 디렉토리를 말합니다. option은 여러가지가
있는데, 위의 bits를 하지 않으면 byte가 기본값이 되고, growright는 그래프
를 오른쪽으로 순서대로 그리도록 합니다. 마지막 줄은 실제 모니터링 하려고
하는 네트워크 장비를 적어 줍니다. 여기서 community는 장비마다 SNMP값을 가
지고 올 때 사용하는 고유값인데, 기본적으로 public을 사용합니다.
router.abc.zyz는 네트워크 장비의 IP주소나 host명을 적으면 됩니다.
7. 리포트가 만들어질 작업디렉토리 생성
# mkdir /home/httpd/html/mrtg
8. mrtg 실행
# ./mrtg mrtg.cfg
위와같이 하면 결과 값이 /home/httpd/mrtg 디렉토리 밑에 만들어 집니다. 처
음 실행하면 warning 메시지가 뜨는데, 이는 비교할 수 있는 log값이 없기 때
문이므로 걱정을 안해도 됩니다. 위의 명령을 2,3번 정도 반복하면 더 이상
warning 메시지도 나타나지 않고 정상적인 트래픽을 볼 수 있을 것입니다.
9. 결과 확인 테스트
위의 실행결과는 /home/httpd/html/mrtg/ 에 만들어 집니다.
브라우저를 열어 확인해 봅니다.
http://IP Address/mrtg/localhost_2.html
10. index.html 파일 생성
위의 결과 페이지는 파일이름이 불편하므로
설정파일에 따라 인덱스 페이지를 만들어 주는 유틸리티를 이용 할 것을 권합
니다.
# ./indexmaker mrtg.cfg > /home/httpd/html/mrtg/index.html
이제,
http://IP Address/mrtg/
만으로 확인이 가능하며 대표 통계 하나가 나오고,
나머지 주/월/년 간 보고서는 이미지를 클릭하면 보여 질 것입니다.
11. 5분마다 mrtg 실행하기
위의 명령이 주기적으로 실행되게 하기 위해서는 cron과 crontab엔트리 이용하
면 됩니다.
파일명 : mrtg.sh 을 만드세요.
#!/bin/sh
/usr/local/mrtg/bin/mrtg /usr/local/mrtg/bin/mrtg.cfg
------------
# chmod 755 mrtg.sh
# ./mrtg.sh
# crontab -e 명령으로 아래내용을 추가합니다.
*/5 * * * * /usr/local/mrtg/bin/mrtg.sh
시스템 모니터로 활용
http://net-snmp.sourceforge.net/tutorial/mrtg/index.html
를 이용해 네트웍뿐만 아니라 시스템 모니터링에도 응용이 가능합니다.
1. 준비된 all.cfg 를 /usr/local/mrtg/bin 에 복사하고,
파일을 열어 해당 라인의 IP 를 해당서버의 IP로 변경해 줍니다.
2. 그리고 run 디렉토리의 모든 스크립트를
/usr/local/mrtg/bin/run 으로 복사하고 실행퍼미션을 줍니다.
# mv /tmp/run /usr/local/mrtg/run
# chmod 755 /usr/local/mrtg/run/*
# all.cfg파일에 추가하고자 하는 데이터 값을 모두 추가 시킵니다.
ex)
Target
[load]: .1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.1:public@loca
lhost
Options[load]: nopercent,growright,gauge,noinfo
Title[load]: System Load * 100
PageTop[load]: System Load * 100
MaxBytes[load]: 10000
YLegend[load]: loadavg
ShortLegend[load]: loadavg
LegendI[load]: Load Average:
LegendO[load]:
Legend1[load]: Load average, multiplied by 100
% 주의사항
문단과 문단 사이에는 반드시 한라인만 공백이 있어야 하며
첫칸을 들여 쓰면 안됩니다. (지키지 않으면 error 발생함)
다음을 실행합니다.
# ./mrtg all.cfg
3. 적당한 index 패이지를 만들어 줍니다.
# ./indexmaker all.cfg > /home/httpd/html/mrtg/index_all.html
파일명 mrtg.sh 을 수정합니다.
#!/bin/sh
/usr/local/mrtg/bin/mrtg /usr/local/mrtg/bin/mrtg.cfg
/usr/local/mrtg/bin/mrtg /usr/local/mrtg/bin/all.cfg
% 한 서버에서 여러서버를 모니터링 하고자 할때는 all.cfg파일에
모니터링 하고자 하는 부분만 추가 시켜서 IP부분과 대괄호 속에 들어가는
부분만 바꿔주면 무리없이 데이타 값이 출력될 것입니다. (바꿔주지 않으면
error 발생)
ex)
Target
[load]: .1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.1:public@loca
lhost
.
.
.
.
>>load 부분과 localhost 부분 수정해야된다..
>>load_1 이렇게 수정해도된다...localhost==> 해당 IP 적어준다.
* 그래프로 나타나지 않는 서비스는 시스템에서 제공하지 않는 것들입니다.
(혹은 설정이 잘 못 되었거나...)
* /usr/local/mrtg/contrib에 필요한 서비스를 모니터링 하는 참고자료가 있으
니 적당한 것을 이용하면 됩니다.
다음과 같은 것들이 있습니다.
00INDEX cfgmaker_cisco/ get-active/ meminfo/ mrtglog/ routers/
14all/ cfgmaker_dlci/ get-equi/ monitor/ mrtgmk/ rumb-stat/
GetSNMPLinesUP/ cisco_ipaccounting/ get-multiserial/ mrtg-archiver/
mrtgrq/ servers/
IxDisk/ cisco_tftp/ ipchainacc/ mrtg-archiver-script/ net-hosts/
snmpping/
NSI/ ciscoindex/ ipchains/ mrtg-blast/ nt-services/ stat/
PMLines/ cpuinfo/ ipfilter/ mrtg-dynip/ nt_n_cisco/ switchmaker/
TCH/ cpumon/ iptables_acc/ mrtg-ipacc/ ovmrtg/ whodo/
accesslistmon/ diskmon/ ircstats/ mrtg-ipget/ ping-probe/ xlsummary/
ascendget/ distrib/ ircstats2/ mrtg-mail/ portmasters/
atmmaker/ forecd/ jm/ mrtgidx/ procmem/
cfgmaker_ATM/ gentcucci-1.0.0/ linux_stat/ mrtgindex.cgi/ rdlog2/
참고 사이트
- http://www.mrtg.org/
- http://ee-staff.ethz.ch/~oetiker/webtools/mrtg/
- http://www.mrtg.co.kr/
- http://net-snmp.sourceforge.net/tutorial/mrtg/index.html
글쓴이 : 강홍제 ( danjel at wowlinux.com )
출처 : 와우리눅스(주)
URL : http://wowlinux.com/download/specialview.html?db=special&id=57
|
|
Page Loading [ 0.04 Sec ]
SQL Time [ 0 Sec ]
|
|
|