bandwidthd로 시스템 트래픽 모니터링
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 3,722 조회
- 0 추천
- 목록
본문
bandwidthd로 시스템 트래픽 모니터링
우리 같은 서버관리자들이 시스템이나 네트워크를 운영하다 보면 특정 서비스에 대한 트래픽을 모니터링 해야 할 필요성을 절실히 느끼게 된다.
이러한 경우 대부분 시스템이나 네트워크 장비에 snmp 데몬을 띄우고 mrtg를 이용하여 input/output 트래픽을 매5분, 매시간 등의 단위로 모니터링 할 것이다.
그러나 어떤 IP에서 얼마만큼의 트래픽이 유발되고 있고, 또 해당 트래픽이 어떤 프로토콜 또는 어떤 포트에 대한 트래픽인지 알고자 한다면 어떻게 하여야 할까? 기본적으로 snmp는 L2 정보만 제공하며 프로토콜이나 포트와 같은 L4 정보는 제공하지 못하므로 snmp로는 이러한 정보를 모니터링 할 수 없다.
물론 전체 네트워크 트래픽에 대해서는 뒤에서 다룰 네트워크 모니터링 부분에서 라우터나 스위치에서 제공하는 netflow 및 flowscan을 이용하면 다양한 모니터링이 가능하지만, 각 서버에 대해서 또는 리눅스를 게이트웨이로 사용하는 경우에는 마땅한 방법이 없는 것이 사실이다.
그러나 오픈소스로 개발되고 있는 bandwidthd라는 프로그램을 이용하면 위에서 요구하는 바를 모두 구현할 수 있어 효율적인 트래픽 관리가 가능하게 된다.
따라서 이번 장에서는 bandwidthd를 이용하여 서버자체 트래픽과 서버 내에서 서비스 되고있는 각 서비스별 트래픽등과 같은 다양한 트래픽 모니터링에 대해서 알아보고자 한다.
9.8.1 bandwidthd의 특징
2003년말부터 오픈소스로 개발되고 있는 bandwidthd는 mrtg가 제공하는 그래프와 비슷한 기능을 제공하지만 mrtg보다 더욱 유용한 기능을 제공하고 있으며 설치 방법도 매우 간단하다.
bandwidthd는 각각의 IP별로 사용량을 2일, 8일, 40일, 400일을 기준으로 보여주며 특히 http나 tcp, udp, icmp, vpn, p2p 트래픽은 미리 지정된 색으로 표현된다.
그리고 bandwidthd가 설치되고 작동하기 위해서는 libpcap와 libgd 그리고 libpng만 설치되어 있으면 된다.
9.8.2 다운로드 및 설치
bandwidthd의 홈페이지는 http://bandwidthd.sourceforge.net/인데, 위 사이트에서 최신 버전의 소스 파일을 다운로드 한 후 설치할 시스템에서 압축 해제 후 컴파일만 하면 된다.
아래 설치 예를 참고하여 설치하기 바란다.
[root@server src]# tar zxvfp bandwidthd-2.x.x.tgz [root@server src]# cd bandwidthd-2.x.x [root@server bandwidthd-2.x.x]# ./configure; make install |
주의할 것은 bandwidthd가 정상적으로 컴파일 되려면 아래의 라이브러리가 설치되어 있어야 한다는 것이다.
libpcap이나 libpng는 rpm으로 설치해도 되지만 libgd는 최신의 gd 소스파일을 가져와서 설치하여야 한다.
libpcap : http://www.tcpdump.org/
libpng : http://www.libpng.org/
libgd : http://www.boutell.com/gd/
정상적으로 설치되면 /usr/local/bandwidthd/ 디렉토리에 bandwidthd라는 실행파일과 설정파일인 /etc/bandwidthd.conf, 그리고 html과 그래프 파일이 저장될 htdocs/ 디렉토리가 생성된다.
설정파일은 특별히 수정할 것 없이 그대로 사용해도 되지만 간략하게 살펴보자.
다음은 bandwidthd의 설정파일인 bandwidthd.conf 파일내의 각 설정항목들을 설명한 것이다.
subnet 127.0.0.0 255.0.0.0 subnet 211.47.68.0 255.255.255.0 |
이 부분은 subnet에 대한 트래픽을 측정하기 위한 부분인데, 설치 시 자동으로 라우팅 테이블 정보를 읽어와 설정하므로 그대로 두면 된다.
dev "eth0" |
리슨할 인터페이스 정보이다.
대부분 eth0을 사용할 것이다.
#skip_intervals 0 |
bandwidthd는 기본적으로 매 2.5분마다 4000개까지의 IP를 그래프화한다.
만약 더 늘리고자 한다면 bandwidthd.h 파일에 있는 IP_NUM 변수를 변경 후 재 컴파일 해 주면 된다.
가능한 기본값을 그대로 사용한다.
#graph_cutoff 1024 |
1M(1024kbyte) 이상의 트래픽을 유발하는 IP에 대해서만 그래프에 남기도록 한다.
이 값은 각자의 환경에 따라 적절히 설정하면 될 것이다.
#promiscuous true |
인터페이스를 promiscuous 모드로 할 것인지 여부를 지정한다.
promiscuous 모드인 경우 인터페이스에서 보이는 모든 패킷을 모니터링하게 되고 false인 경우에는 해당 IP에 관계된 트래픽만 모니터링하게 된다.
#output_cdf false |
로그 데이터를 htdocs/log.cdf에 남길 것인지 지정한다.
로그데이터는 다음과 같은 형식으로 남게 되는데, 이 데이터를 이용하면 각자 원하는 기능을 더 추가할 수 있을 것이다.
IP Address,Timestamp,Total Sent,Icmp Sent,Udp Sent,Tcp Sent,Ftp Sent,Http Sent, P2P Sent,Total Received,Icmp Received,Udp Received,Tcp Received,Ftp Received,H
ttp Received, P2P Received
#recover_cdf false |
시작 시 cdf 로그 파일을 읽을 것인지 지정한다.
#filter "ip" |
기본값 그대로 사용한다.
#graph true |
그래프를 나타낼 것인지에 대해 정한다.
9.8.3 실행 및 결과
설정이 끝난 후 이제 bandwidthd를 실행할 차례이다.
단지 옵션 없이 bandwidthd를 실행하기만 하면 되는데, /usr/local/bandwidthd와 같이 전체경로를 지정하여 실행하면 작동하지 않으므로 반드시 해당 디렉토리로 이동한 후 ./bandwidthd와 같이 실행하여야 한다.
[root@server bandwidthd]# ./bandwidthd Monitoring subnet 127.0.0.0 with netmask 255.0.0.0 Monitoring subnet 211.47.68.0 with netmask 255.255.255.0 [root@server bandwidthd]# Opening eth0 Packet Encoding: Ethernet Opening eth0 Packet Encoding: Ethernet Opening eth0 Packet Encoding: Ethernet Opening eth0 Packet Encoding: Ethernet |
실행 시 출력되는 메시지는 위와 같으며 log.cdf, log2.cdf .. 등과 같이 로그가 생기게 되고 결과는 htdocs/ 디렉토리에 생긴다. 따라서 웹브라우저를 이용하여 htdocs/ 디렉토리 이하를 브라우징 하면 된다.
아래는 출력되는 내용 중 일부를 보여주고 있다.
[그림] top20 IP 목록 및 트래픽 정보
[그림] 모든 subnet에 대한 송수신 트래픽
[그림] 특정 IP에 대한 송수신 트래픽
만약 mrtg나 bandwidthd와 같이 그래프로 보여 지는 누적 트래픽이 아닌 현재 유발되고 있는 트래픽에 대해서 알고 싶으면 7장에서 잠시 언급한 iptraf를 이용하면 쉽게 해결된다.
iptraf의 홈페이지는 http://iptraf.seul.org/인데, 실시간으로 ip별, 프로토콜별, 포트별로 트래픽을 모니터링 할 수 있다.
특히 bps와 pps를 실시간으로 확인할 수 있다는 장점이 있다.
이외 더 많은 모니터링 프로그램은 아래의 사이트를 참고하기 바란다.
http://www.ubuntugeek.com/bandwidth-monitoring-tools-for-linux.html
관련자료
-
이전
-
다음