MRTG 소개 및 사용방법
그렇다면 MRTG란 무엇인가? The Multi Router Traffic Grapher (MRTG)는 네트워크의 부하를 감시하는 툴이다. MRTG는 현재 네트워크의 상태를 HTML로 만들어서 사용자가 쉽게 볼수록 한다. MRTG 사이트에 있는http://www.stat.ee.ethz.ch/mrtg/ 화면이나 필자의 사이트에 있는 그래프를 본다면 쉽게 이해가 갈 것이다.
MRTG는 대부분의 운영체제에서 작동을 하며 리눅스도 지원이 된다.라우터에서 트래픽 카운터를 읽는 SNMP를 사용하는 펄 스크립트와 트래픽 데이타를 수집하고 쉽게 읽을 수 있도록 그래픽 화면으로 변환하는 C로 구성되어있다. 속도가 요구되는 부분은 C로 작성하였다.
MRTG는 매일매일의 트래픽 상황, 과거 7일간, 4주간, 1년간 트래픽 상황을 그래프로 생성한다. 로그를 효율적으로 관리하기 때문에 로그가 커질 염려는 하지 않아도 되고 2년간의 자료를 보관한다. 비교적 저스펙의 하드웨어에서도 50개 이상의 네트웍 링크를 모니터링할 수 있다.
또한 네트웍 트래픽뿐만 아니라 모든 SNMP 변수에 대해서도 모니터링이 가능하다. 외부 프로그램을 이용해서 MRTG가 모니터링할 수 있는 자료를 모을 수도 있다. 시스템 부하, 로그인세션 , 모뎀의 가용성 등도 MRTG를 이용해 모니터링할 수 있다. 2개 이상의 데이터 소스를 하나의 그래프로 나타낼 수도 있다.
MRTG의 특징은 다음과 같다.
1. 대부분의 Unix플랫폼과, WindowsNT상에서 동작한다.
2. 간단하게 커스터마이즈할 수 있도록 Perl를 사용하고 있다.
3. 이식성이 좋은 펄을 사용해 SNMP 부분을 프로그래밍했다. 그래서 별도로 SNMP 패키지를 설치할 필요가 없다.
4. 로그를 정리하기 위한 독자의 알고리즘을 채용하고 있으므로, MRTG의 로그파일의 사이즈가 커지지 않는다.
5. 반자동의 설정용 툴을 지원한다.
6. 속도가 중요한 부분은 C로 작성되었다.
7. MRTG가 생성하는 HTML파일을 상세하게 설정하는 것이 가능하다
8. MRTG는 GNU PUBLIC LICENSE 로 제공된다.
mrtg 설치하기
MRTG 사이트는 아래와 같다.
http://people.ee.ethz.ch/~oetiker/webtools/mrtg/pub/에서 MRTG 최신판을 다운받는다.
그래프를 그려주기 위해서는 GD 라이브러리가 필요하며 리눅스의 경우 보통 기본으로 설치가 되어 있지만 없는 경우http://www.boutell.com/gd/에서 다운받아 설치를 하면 된다. 물론 rpm으로 설치를 하여도 된다. Perl은 v.5.005 이상이 필요하며 펄도 일반적으로는 리눅스에 설치가 되어 있다.
$ tar xvfz mrtg-2.9.17.tar.gz
$ cd mrtg-2.9.17
$ ./configure
$ make
일반적인 공개 소프트웨어 설치 방법과 비슷하다. 이제 MRTG를 컴파일하여 사용할 준비를 다 하였다. 이제 MRTG를 사용할 수 있도록 환경파일을 설정하면 된다. 처음 접하는 사람에게는 설정파일을 만드는 것이 익숙치 않을 것이다. 이런 사람을 위하여 cfgmaker라는 자동 설정툴이 있다.
cfgmaker <community>@<router-host-name or IP > mrtg.cfg
$ ./cfgmaker --global 'Workdir:/home/httpd/html/mrtg' public@router_ip > mrtg.cfg
일단 먼저 라우터 트래픽부터 모니터링을 한다고 가정하고 router_ip에는 라우터의 ip주소를 넣으면 된다. community는 장바마다 SNMP 값을 가져올 때 사용하는 고유값으로 기본적으로는 public을 사용하지만 설정에 따라 다를 수도 있으며 SNMP 기능을 꺼 두었다면 사용할 수가 없다. 라우터에서 적절한 반응이 오지 않는다면 현재 사용하는 라우터에 SNMP기능이 활성화되었는지 먼저 확인을 하거나 네트웍 관리자에게 문의해야 한다.
--global 'Workdir:/home/httpd/html/mrtg' 은 MRTG에서 모니터링한 결과가 만들어질 디렉토리를 의미하며 이외에도 여러 가지 옵션이 많다. 그렇지만 여기서는 MRTG 자체를 설명하는 것이 목적이 아니기 때문에 상세한 내용은 인터넷에서 자료를 찾아보기 바란다. 최소한 WorkDir은 적절하게 설정을 해야 하고 Language: korean 을 설정해놓으면 MRTG 결과를 한글로 볼 수 있다.
MRTG는 mrtg를 설치한 디렉토리의 하위 bin 디렉토리에 있으며 위에서 생성한 설정파일을 옵션으로 하여 실행시키면 된다.
$ ./mrtg mrtg.cfg
만약 설정파일에 에러가 있다면 에러를 내는데 에러가 없다면 이제 라우터에서 트래픽 자료를 수집한다. 처음에 실행하면 MRTG가 로그 파일이 없다고 에러 메시지가 나오는데 두세번 실행하면 없어지니 너무 놀라지 말기를 바란다. 이는 MRTG가 로그값을 비교하여 통계를 내는데 처음에는 아무런 자료가 없기 때문에 그렇다. 이제 설정이 다 되었다면 cron 등에 등록을 하고 주기적으로 시스템 모니터링을 하면 된다.
참고로 모니터링하는 장비가 여러대라면 이러한 여러개의 타겟에 대한 내용을 편리하게 볼 수 있도록 인덱스 페이지를 만들어주는 기능이 있다.
$ indexmaker mrtg.cfg > /home/httpd/html/mrtg/index.html
MRTG 설치 디렉토리의 contrib 디렉토리에는 위에서 말한 cpu부하등의 정보를 모니터링하는 툴과 문서가 있어 참고하기에 좋다. 여기에는 라우터 트래픽 모니터링, CPU 모니터링, 디스크 모니터링, TCP 관련 모니터링 등 다양한 소스가 들어있다. MRTG를 어떻게 응용할 것인지에 대한 좋은 아이디어가 생길 것이다.
$ ls
00INDEX cisco_tftp/ ircstats2/ mrtgrq/
14all/ ciscoindex/ jm/ net-hosts/
GetSNMPLinesUP/ cpuinfo/ linux_stat/ nt-services/
IxDisk/ cpumon/ meminfo/ nt_n_cisco/
NSI/ diskmon/ monitor/ ovmrtg/
PMLines/ distrib/ mrtg-archiver/ ping-probe/
TCH/ forecd/ mrtg-archiver-script/ portmasters/
TTrafic/ gentcucci-1.0.0/ mrtg-blast/ procmem/
TotalControlModem/ get-active/ mrtg-dynip/ rdlog2/
accesslistmon/ get-equi/ mrtg-ipacc/ routers/
apc_ups/ get-multiserial/ mrtg-ipget/ rumb-stat/
ascendget/ ipchainacc/ mrtg-mail/ snmpping/
atmmaker/ ipchains/ mrtg.php/ stat/
cfgmaker_ATM/ ipfilter/ mrtg_php_portal/ stfc/
cfgmaker_cisco/ iptables-accounting/ mrtgidx/ switchmaker/
cfgmaker_dlci/ iptables_acc/ mrtgindex.cgi/ whodo/
cisco_BPX_MGX/ iptables_acc_snmp/ mrtglog/ xlsummary/
cisco_ipaccounting/ ircstats/ mrtgmk/