주 제 : MRTG 구축
작성자 : 김마현. mail : mapoo@ㄴㅔㅇㅣ트.컴, web : http://mapoo.kr
최초작성일 : 2012-03-29, SerialNo : 20120329A51
< 목 차 >
> 시작말
> 1. 설치환경
> 2. 설치하기
> 3. 세팅하기
> 4. 다른 장비의 MIB 가져오기
> 5. 모니터링 웹보기
> 맺음말
n 시작말 :
MRTG는 ‘Multi Router Traffic Grapher’의 약자로써, SNMP(Simple Network Management Protocol)를 지원하는 장비(서버, 스위치 등)로부터 MIB(Management Information Base)값을 가져와서 C와 Perl을 이용하여 웹에 그래프를 구현해 주는 유틸리티이다. MRTG를 잘 활용한다면 NMS( Network Management System)를 구축할 수 있다.
1. 설치환경
1) H/W 사양
CPU : VM
M/B : VM
RAM : 512MB
HDD : 10G
NIC : VM – Fast Ethernet
2) S/W 사양
OS : CentOS 4.7 ServerCD i386
Host Name : CentOS47-VM
GCC : gcc-3.4.6-10
Perl : perl-5.8.5-36.el4_6.3
MRTG : mrtg-2.14.7
Apache : httpd-2.2.2
ZLIB : zlib-1.2.1
LIBPNG : libpng-1.2.18
GD : gd-2.0.33
SNMP : net-snmp-5.1.2
2. 설치하기
1) 라이브러리 설치
1> Zlib 설치 - 데이터 압축 라이브러리
[root@CentOS47-VM ~]# tar zxvf zlib-1.2.1.tar.gz –C /usr/local [root@CentOS47-VM ~]# /usr/local/zlib-1.2.1/configure –prefix=/usr/local/zlib [root@CentOS47-VM ~]# /usr/local/zlib-1.2.1/make [root@CentOS47-VM ~]# /usr/local/zlib-1.2.1/make install |
2> Libpng 설치 - png 포맷 이미지파일 사용을 위한 라이브러리
[root@CentOS47-VM ~]# tar zxvf libpng-1.2.18.tar.gz –C /usr/local [root@CentOS47-VM ~]# cp /usr/local/libpng/scripts/makefile.linux /usr/local/libpng/makefile [root@CentOS47-VM ~]# /usr/local/libpng/make install |
3> GD 설치 - 동적이미지 생성 ANSI C라이브러리
[root@CentOS47-VM ~]# tar zxvf gd-2.0.33.tar.gz –C /usr/local [root@CentOS47-VM ~]# /usr/local/gd-2.0.33/configure –prefix=/usr/local/gd [root@CentOS47-VM ~]# /usr/local/gd-2.0.33/make [root@CentOS47-VM ~]# /usr/local/gd-2.0.33/make install |
2) Apache 설치
[root@CentOS47-VM ~]# tar zxvf httpd-2.2.2 –C /usr/local [root@CentOS47-VM ~]# /usr/local/httpd-2.2.2/configure --prefix=/usr/local/apache2 --enable-so --with-mpm=worker --enable-rewrite [root@CentOS47-VM ~]# /usr/local/httpd-2.2.2/make [root@CentOS47-VM ~]# /usr/local/httpd-2.2.2/make install |
3) MRTG 설치
[root@CentOS47-VM ~]# tar zxvf mrtg-2.14.7.tar.gz –C /usr/local [root@CentOS47-VM ~]# /usr/local/mrtg-2.14.7/configure --prefix=/usr/local/mrtg --with-gd=/usr/local/gd --with-z=/usr/local/zlib --with-png=/usr/local/libpng [root@CentOS47-VM ~]# /usr/local/httpd-2.2.2/make [root@CentOS47-VM ~]# /usr/local/httpd-2.2.2/make install |
4) SNMP 설치
[root@CentOS47-VM ~]# rpm -ivh /usr/local/net-snmp-5.1.2-18.el4.rpm [root@CentOS47-VM ~]# rpm -ivh /usr/local/net-snmp-libs-5.1.2-18.el4.rpm |
3. 세팅하기
1) SNMP 세팅
1> 기존 snmp 파일 백업
[root@CentOS47-VM ~]# mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf_old |
2> snmp.conf 파일 아래처럼 작성
[root@CentOS47-VM ~]# cat /etc/snmp/snmpd.conf com2sec notConfigUser default abc-mrtg #group notConfigGroup v1 notConfigUser group notConfigGroup v2c notConfigUser view systemview included .1 access notConfigGroup "" any noauth exact systemview none none disk / 100000 disk /home 100000 proc afpd proc proftpd |
3> snmp 데몬 start 및 서비스에 등록
[root@CentOS47-VM ~]# /etc/init.d/snmpd start [root@CentOS47-VM ~]# chkconfig snmpd on |
2) MRTG 세팅
1> mrtg 관련 디렉토리 생성
[root@CentOS47-VM ~]# mkdir -p /home/mrtg/conf [root@CentOS47-VM ~]# mkdir /home/mrtg/www [root@CentOS47-VM ~]# mkdir /home/mrtg/www/localhost |
2> cfg 파일 생성
[root@CentOS47-VM ~]# /usr/local/mrtg/bin/cfgmaker --global 'WorkDir: /home/mrtg/www/localhost' --global 'Options[_]: bits,growright' --output /home/mrtg/conf/localhost.cfg abc-mrtg@127.0.0.1 |
* 옵션설명
- WorkDir : index파일과 png(그래프)파일이 위치할 곳
- bits : 비트단위로 표시
- growright : 그래프가 오른쪽에서 왼쪽으로 흐르게 표시
- abc-mrtg@127.0.0.1 : abc-mrtg - 커뮤니티값(snmp.conf값과 일치해야됨) 기본은 public
127.0.0.1 - MIB 값을 가져올 호스트의 도메인 또는 IP
* 처음실행시 경고 문구가 나오나 무시해도 된다. 기존의 로그가 없어 비교할 값이 없어서 그렇다.
3> index 생성하기
[root@CentOS47-VM ~]# /usr/local/mrtg/bin/indexmaker --title "CentOS47-VM" /home/mrtg/conf/localhost.cfg > /home/mrtg/www/localhost/index.html |
4> mrtg 실행하기 - MIB값을 가져온다.
[root@CentOS47-VM ~]# /usr/local/mrtg/bin/mrtg /home/mrtg/conf/localhost.cfg |
3) 스케쥴링 등록
1> cron을 통해서 - 1분에 한번씩 MIB 값을 가져온다
[root@CentOS47-VM ~]# crontab -l */1 * * * * /usr/local/mrtg/bin/mrtg /home/mrtg/conf/localhost.cfg |
2> mrtg를 데몬으로 실행하기 - cfg 파일의 global 세팅 부분에 아래처럼 추가
[root@CentOS47-VM ~]# cat /home/mrtg/conf/localhost.cfg RunAsDaemon: yes Refresh : 300 |
* Refesh : 300초에 한번씩 MIB 값을 가져온다. 단점은 300초(5분) 미만으론 안된다.
* cron이나 mrtg 데몬 둘중 하나를 선택하면되지만, cron을 더 추천한다.
4) Apache 세팅
1> httpd.conf 수정 - mrtg index파일 위치하는 곳 설정 추가
[root@CentOS47-VM ~]# cat /usr/local/apache2/conf/httpd.conf . . Alias /morn-abc /home/mrtg/www/localhost |
2> apache 데몬 start
[root@CentOS47-VM ~]# /usr/local/apache2/bin/apachectl start |
4. 다른 장비의 MIB 가져오기
1) 가져오기에 앞서
위 내용은 CentOS47-VM 서버에서 자신의 MIB 값을 가져오는 방식이다.
다른 장비에서 MIB 값을 가져오기 위해선 아래 조건이 맞아야 한다.
1> 해당 장비가 SNMP를 지원
2> Agent 서버(CentOS47-VM)와 장비간 SNMP 버전 호환
3> Agent 서버(CentOS47-VM)와 장비간 커뮤니티값 맞추기
4> 방화벽에서 인바운드 포트개방 - udp 161
2) 장비에서 세팅
snmp.conf 파일을 위에서 한것처럼 세팅
3) mrtg 관련 디렉토리 생성
Agent 서버(CentOS47-VM)에서
[root@CentOS47-VM ~]# mkdir /home/mrtg/www/test-local |
4) cfg 파일 생성
Agent 서버(CentOS47-VM)에서
* WorkDir의 경로와 SNMP를 가져올 장비의 IP또는 도메인 변경
5) mrtg 실행하기
해당 장비로부터 MIB값을 가져온다.
[root@CentOS47-VM ~]# /usr/local/mrtg/bin/mrtg /home/mrtg/conf/test-local.cfg |
6) Apache 세팅
1> httpd.conf 수정 - mrtg index파일 위치하는 곳 설정 추가
[root@CentOS47-VM ~]# cat /usr/local/apache2/conf/httpd.conf . . Alias /morn-abc2 /home/mrtg/www/testlocal |
2> apache 데몬 restart
[root@CentOS47-VM ~]# /usr/local/apache2/bin/apachectl restart |
5. 모니터링 웹보기
1) 브라우져를 띄우고 주소줄에 아래주소 입력 - 서버의 IP가 192.168.0.100라고 가정.
http://192.168.0.100/morn-abc2
n 맺음말 :
대부분의 네트워크, 서버 등의 장비들은 SNMP를 지원한다. SNMP 프로토콜을 이용해 분석해주는 대표적인 모니터링 툴인 MRTG는 많은 시스템 관리자가 모니터링을 위해 사용하는 툴이다. MRTG를 잘 활용하여 장비의 상황을 중앙집중식으로 모니터링할 수 있는 시스템을 갖추도록 하자.