|  | 
		
			|  | 
		
			|  | 
		
			| 리눅스 및 유닉스에서는 MRTG라는 공개 툴을 이용하여 네트웍 상황을 모니터링할 수 있다. MRTG에 대해 설명하기 전에 SNMP에 대한 개념을 설명한다. | 
		
			|  | 
		
			| 1) SNMP(Simple Network Management Protocol) | 
		
			| 네트웍에 연결되어 있는 장치에서 네트워크에 관련된 정보를 모으고 문제점 등을 보고할 수 있는 기능을 제공하는 프로토콜이다. | 
		
			| C/S 모델을 기반으로 작동하며 각 네트워크 장비에 Agent가 있고 중앙(클라이언트)의 Manager에서 정보를 관리한다. | 
		
			|  | 
		
			| 2) MRTG란 무엇인가? | 
		
			| The Multi Router Traffic Grapher (MRTG)는 네트워크의 부하를 감시하는 툴이다. MRTG는 현재 네트워크의 상태를 HTML로 만들어서 사용자가 쉽게 볼 수 있다. | 
		
			| http://www.ee.ethz.ch/stats/mrtg/ 에서 예를 볼 수 있다. | 
		
			| (설정을 조정하면 웹출력화면에서 한글도 지원됨.) | 
		
			|  | 
		
			| MRTG는 매일매일의 트래픽 상황, 과거 7일간, 4주간, 1년간 트래픽 상황을 그래프로 생성한다. 로그를 효율적으로 관리하기 때문에 로그가 커질 염려는 하지 않아도 되며 2년간의 | 
		
			| 자료를 보관한다. 그래서 비교적 저사양의 하드웨어에서도 50개 이상의 네트웍 링크를 모니터링할 수 있다. | 
		
			|  | 
		
			| 또한 MRTG는 네트워크 트래픽뿐만이 아니라 모든 SNMP 변수에 대해서도 모니터링이 가능하며 외부 프로그램을 이용해서 MRTG가 모니터링할 수 있는 자료를 모을 수도 있다. | 
		
			|  | 
		
			| 3) MRTG의 특징 | 
		
			|  | 
		
			| * 대부분의 Linux/Unix 플랫폼과, Windows NT 기반에서 동작한다. | 
		
			| * 간단하게 커스터마이징할 수 있도록 Perl을 사용하고 있습니다. | 
		
			| * 이식성이 좋은 펄을 사용해 SNMP 부분을 프로그래밍함으로 인해 별도로 SNMP 패키지를 설치할 필요가 없다. | 
		
			| * 로그를 정리하기 위한 독자 알고리즘을 채용하고 있으므로, MRTG의 로그파일 사이즈가 커지지 않는다. | 
		
			| * MRTG에는 반자동의 설정용 툴을 지원한다. | 
		
			| * MRTG는 라우터 포트 설정이 변경되면 자동으로 체크하여 사용자에게 메일 등으로 알려준다. | 
		
			| * Thomas Boutell의  GD library를 사용하며 그래프는 GIF 포맷으로 만들어진다. 따라서 시스템에 GD 라이브러리가 설치되어 있어야 한다. | 
		
			| * MRTG가 생성하는 HTML파일을 상세하게 설정하는 것이 가능하며 | 
		
			| * MRTG는 GNU PUBLIC LICENSE로 제공된다. | 
		
			|  | 
		
			| 4) MRTG 설치하기 | 
		
			|  | 
		
			| 소스는 http://ee-staff.ethz.ch/~oetiker/webtools/mrtg/pub/ 에서 최신 버전을 다운받아 압축을 푼다. | 
		
			| GD 라이브러리가 시스템에 설치되어 있지 않을 경우 http://www.boutell.com/gd/ 에서 최신 버전을 다운받아 설치한다. | 
		
			| Perl 5.004_4 이상 버전이 있어야 하며 없을 경우에는 | 
		
			| http://www.perl.com/perl/info/software.html 에서 받아 설치한다. | 
		
			| GD 라이브러리 및 펄 버전이 맞을 경우 MRTG 소스를 푼 디렉터리에서 ./configure 를 실행한 후 make를 실행한다. | 
		
			|  | 
		
			| 다음에는 MRTG에서 생성할 웹 페이지의 디렉터리를 정한다. | 
		
			| /usr/local/www/htdocs/mrtg 라고 가정하면 여기에 imags 디렉토리 밑의 mrtg*.gif 파일을 다 복사해 준다. | 
		
			| run 디렉터리에 실행파일이 생성되면 이를 확인한다. 파일 목록은 다음과 같다. | 
		
			|  | 
		
			| BER.pm  SNMP_Session.pm  SNMP_util.pm  cfgmaker*  cfgmaker_ip* | 
		
			| cfgmaker_phys  indexmaker*  locales_mrtg.pm  mrtg* | 
		
			|  | 
		
			| 다음에는 자신의 mrtg.cfg파일을 작성한다. 이 파일에 관한 정보는 config.html에 있으며 이 파일 작성에 익숙하지 않는 사람은 doc 디렉터리에 샘플 파일이 있으니 | 
		
			| 이것을 참고하는 것이 좋다. | 
		
			| mrtg.cfg 파일을 자동으로 생성해 주는 프로그램이 바로 cfgmaker이며 이 명령의 문법은 다음과 같다. | 
		
			|  | 
		
			| cfgmaker < community >@< router-host-name or IP > mrtg.cfg | 
		
			|  | 
		
			| 스위치의 community 이름을 모른다면 public을 사용해 보고 그래도 되지 않으면 네트워크 관리자에게 문의한다. | 
		
			|  | 
		
			| 예) ./cfgmaker public@210.107.145.1    > mrtg.cfg | 
		
			|  | 
		
			| 이런 명령어 형식으로 사용하면 된다. | 
		
			|  | 
		
			| cfgmaker에서 자동으로 파일이 생성되면 약간의 수정이 필요하다. | 
		
			|  | 
		
			| 대략 이런 형태로 설정이 되는데 | 
		
			|  | 
		
			| WorkDir: /usr/local/www/htdocs/mrtg | 
		
			| Target[love]: 2:public@myrouter.somplace.edu | 
		
			| MaxBytes[love]: 64000 | 
		
			| Title[love]: Traffic Analysis ISDN | 
		
			| PageTop[love]: < H1 >Stats for our ISDN Line< /H1 > | 
		
			|  | 
		
			| Language: korean --->> 한글 설정 (이 부분은 사용자가 추가해 주어야 한다) | 
		
			|  | 
		
			| 5) MRTG 실행 | 
		
			|  | 
		
			| run 디렉터리에서 | 
		
			|  | 
		
			| ./mrtg mrtg.cfg | 
		
			|  | 
		
			| 만약 설정파일에 에러가 있다면 에러를 내며, 에러가 없으면 스위치에서 트래픽 자료를 수집하게 된다. | 
		
			|  | 
		
			| 6) crontab에 등록 | 
		
			|  | 
		
			| */5 * * * * /usr/local/mrtg/run/mrtg /usr/local/mrtg/run/mrtg.cfg | 
		
			| (5분 단위로 갱신한다는 뜻) | 
		
			|  | 
		
			| /usr/local/www/htdocs/mrtg/ 로 가서 웹페이지에서 확인하면 모든 설정이 완료된다. | 
		
			|  | 
		
			|  | 
		
			|  | 
		
			| 1) 개요 | 
		
			| 여러 호스팅을 같이 하는 서버에서 일정 호스트에 요청되는 리퀘스트가 많을 경우 다른 호스트에 영향을 주게 되는데 | 
		
			| 리퀘스트가 많은 호스트에 bandwidth를 걸어 두게 되면 해당 호스트에 과도한 요청을 요구해도 다른 호스트에는 영향을 주지 않도록 하는 기법이다. | 
		
			|  | 
		
			| 2) 설치 | 
		
			| 먼저 아파치 1.3.x용 bandwidth 모듈을 ftp://ftp.cohprog.com/pub/apache/module/1.3.0/mod_bandwidth.c 에서 구한다. | 
		
			| 소스를 구했으면 아파치 소스와 함께 컴파일하면 되는데, 아파치 소스의 src/modules/extra/ 디렉터리로 mod_bandwidth.c를 복사한 후 | 
		
			| 아파치의 configure 옵션에 --add-module=mod_bandwidth.c 옵션을 추가하여 컴파일하면 간단하게 설치할 수 있다. | 
		
			|  | 
		
			| 3) 설정 | 
		
			| 아파치를 컴파일했으면 컴파일된 모듈인 mod_bandwidth.so를 아파치 모듈이 위치하는 디렉터리로 복사한다. | 
		
			| 아파치가 Static으로 컴파일된 경우에는 httpd.conf 에서 LoadModule bandwidth_module modules/mod_bandwidth.so 부분을 추가해야 하며 | 
		
			| 만약 httpd.conf 설정에 ClearModuleList가 있다면(DSO로 컴파일한 경우) AddModule mod_bandwidth.c 를 httpd.conf에 추가하면 된다. | 
		
			| 이제 전송 속도 제한 기능을 하는 모듈을 사용하겠다는 것을 지정해 주어야 하는데, 디렉터리별 설정 위에 다음 줄을 추가하면 된다. | 
		
			|  | 
		
			| BandWidthModule On | 
		
			|  | 
		
			| Bandwidth 모듈을 사용하기 위해서는 데이터를 기록할 장소가 필요하며, 기본값으로 /tmp/apachebw 에 저장된다. | 
		
			| /tmp/apachebw/link와 /tmp/apachebw/master 디렉터리를 생성해 주어야 하며, 퍼미션은 nobody 사용자가 쓸 수 있는 권한이 있어야 한다. | 
		
			| 다음 명령을 실행하면 간단하게 설정할 수 있다. | 
		
			|  | 
		
			| chown root.nobody /tmp/apachebw | 
		
			| chmod -R 770 /tmp/apachebw/ | 
		
			|  | 
		
			| 4) 전송 속도 제한의 옵션 | 
		
			|  | 
		
			| Bandwidth 모듈에는 BandWidth, LargeFileLimit, MinBandWidth 이렇게 세가지의 지시자를 사용한다. 각각에 대해서 살펴보도록 한다. | 
		
			|  | 
		
			| * BandWidth | 
		
			|  | 
		
			| 문  법: BandWidth < 도메인|IP주소|all > < 속도 > | 
		
			| 기본값: 없음 | 
		
			| 사용처: 전체 설정, 디렉토리별 설정, .htaccess | 
		
			|  | 
		
			| 호스트에 따라 속도의 제한을 걸 수 있다. all은 모든 호스트에 대해서 제한을 거는 것이며 도메인이나 IP주소로 접속 호스트를 지정할 수 있다. | 
		
			| 그리고 네트워크/마스크 포맷*으로 지정할 수도 있다. (예: 192.168.0.0/24) | 
		
			|  | 
		
			| 속도는 Bytes/second로 나타내며 속도가 0인 경우는 제한이 없는 것이다. | 
		
			| 디렉터리별 설정에서 사용한 예를 들면 다음과 같다. | 
		
			|  | 
		
			| BandWidth 192.168.1 0 | 
		
			| BandWidth foobar.net 0 | 
		
			| BandWidth all 1024 | 
		
			|  | 
		
			| 이 옵션은 192.168.1.* IP주소를 가진 호스트와 *.foobar.net이라는 도메인명을 사용하는 호스트에 대해서는 제한을 걸지 않으며 그 외 모든 접속에 대해서는 1024Bytes/sec으로 | 
		
			| 제한을 건다는 뜻이다. | 
		
			|  | 
		
			| * LargeFileLimit | 
		
			|  | 
		
			| 문  법: LargeFileLimit < 파일크기 > < 속도 > | 
		
			| 기본값: 없음 | 
		
			| 사용처: 전체 설정, 디렉토리별 설정, .htaccess | 
		
			|  | 
		
			| 일정 이상의 크기를 가진 파일을 누군가가 받아 가려 할 때 그 속도의 제한을 걸 수 있다. 파일크기는 KByte 기준이며 속도는 역시 Bytes/second다. | 
		
			|  | 
		
			| LargeFileLimit 1024 4096 | 
		
			| LargeFileLimit 2048 2048 | 
		
			|  | 
		
			| 위 예제는 1024 ~ 2047KB 크기의 파일을 받아가려 할 때 속도를 4KB/sec으로 제한하고 2048KB 이상의 파일은 2KB/sec으로 제한한다. | 
		
			|  | 
		
			| * MinBandWidth | 
		
			|  | 
		
			| 문  법: MinBandWidth < 도메인|IP주소|all > < 속도 > | 
		
			| 기본값: all, 256 | 
		
			| 사용처: 전체 설정, 디렉토리별 설정, .htaccess | 
		
			| 데이타 전송의 최저 속도를 지정하는 옵션이다. | 
		
			|  | 
		
			| 예를 들어 BandWidth를 4096 (4KBytes/sec)으로 지정하고 MinBandWidth가 1024로 지정이 되어 있을 때 지정된 호스트에서 하나만 접속할 경우, 4096bytes/sec | 
		
			| 이 최고의 속도가 된다. | 
		
			| 지정된 호스트에서 두개가 동시에 접속할 경우, 각각의 세션에 대해 2048Bytes/sec이 최고의 속도가 되며 더 많은 동시 접속이 일어나도 세션 당 최고 속도는 1024Bytes/sec | 
		
			| 이하로는 줄지 않는다. (MinBandWidth 값이 1024기 때문에) | 
		
			|  | 
		
			| MinBandWidth가 "-1"로 지정되면 모든 세션에 대해 최고 속도는 BandWidth나 LageFileLimit에서 지정한 속도가 나오며, BandWidth를 4096으로 지정하고 | 
		
			| MinBandWidth가 -1이라면 동시에 지정된 호스트에서 몇개의 접속을 하더라도 각 세션의 속도는 4096Bytes/sec 까지 나오게 된다. |