|
|
|
리눅스 및 유닉스에서는 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 까지 나오게 된다. |