MRTG(Multi Router Traffic Grapher)를 이용한 네트웍 트래픽 모니터링

MRTG(Multi Router Traffic Grapher)를 이용한 네트웍 트래픽 모니터링

글쓴날 : 2000년 2월 17일(목)
글쓴이 : 문태준
(http://www.taejun.pe.kr, taejun@taejun.pe.kr, taejun@hitel.net) 

참고자료 

리눅스월드(이건 국내판입니당)  97년 11월호 MRTG 자료

http://ee-staff.ethz.ch/~oetiker/webtools/mrtg/mrtg.html
(mrtg 홈페이지입니다. www.mrtg.org 해도 됩니다)

TCP/IP  관련 서적

http://www.taejun.pe.kr/board2/include/linuxinfo/files/php1ua66O/mrtg-japan.html
(이건 무식하게 MRTG 일본번역자료를 다시 한일번역프로그램으로 돌린 것입니다.
 이런것을 이용하여 일본리눅스 문서 프로젝트 자료를 번역하는 것도
 재미있을듯. 저도 예전에 좀 해보고 말았지요. 잡담이 길었네용~~)

0. 들어가며

네트웍이 점차 보편화되고 이제 조그만 사무실에서도 보통 전용선을
사용하는 많이 사용하고 있지요.  그러면서 체계적으로 네트웍에 대한
모니터링을 하는 것도 중요해질 것입니다.

상용 네트웍 관리툴말고로 리눅스(및 기타 유닉스)에서는 MRTG라는
공개툴을 이용하여 네트웍 상황을 모니터링할 수 있습니다.

이전에 SNMP에 대해서 설명합니다.

ㅇ SNMP(Simple Network Management Protocol)
네트웍에 연결되어 있는 장치에서 네트웍에 관련된 정보를 모으고
문제점등을 보고할 수 있는 기능을 제공하는 프로토콜입니다.
C/S 모델을 기반으로 작동하며 각 네트웍 장비에 Agent 가 있고
중앙(클라이언트)의 Manager에서 정보를 관리합니다.
자세한 내용은 TCP/IP 관련 서적을 참고하세요.

ㅇ MRTG란 무엇인가?
The Multi Router Traffic Grapher (MRTG)는 네트워크의 부하를 감시하는
툴입니다. MRTG는 현재 네트워크의 상태를 HTML로 만들어서 사용자가
쉽게 볼 수 있지요.
http://www.ee.ethz.ch/stats/mrtg/ 에서 예를 볼 수 있습니다.
(설정을 조정하면 웹출력화면에서 한글도 지원이 됩니다.)

대부분의 UNIX와 NT에서 작동합니다. 당근 리눅스도 지원되니깐 제가
이 글을 쓰는 것이겠지요?
라우터에서 트래픽 카운터를 읽는 SNMP를 사용하는 펄 스크립트와
트래픽 데이타를 수집하고 쉽게 읽을 수 있도록 그래픽 화면으로
변환하는 C로 구성되어있답니다. 속도가 요구되는 부분을 C로 작성
한 것이지요. 리눅스에서 넷스케이프로 보면 되겠지요?

MRTG는 매일매일의 트래픽 상황, 과거 7일간, 4주간, 1년간 트래픽
상황을 그래프로 생성합니다. 로그를 효율적으로 관리하기 때문에
로그가 커질 염려는 하지 않아도 되고 2년간의 자료를 보관합니다.
그래서 비교적 저스펙의 하드웨어에서도 50개 이상의 네트웍 링크를
모니터링할 수 있습니다.

또한 네트웍 트래픽뿐만 아니라 모든 SNMP 변수에 대해서도 모니터링이
가능합니다. 외부 프로그램을 이용해서 MRTG가 모니터링할 수 있는
자료를 모을 수도 있습니다. 또한 시스템 부하, 로그인세션 , 모뎀의
가용성 등도 mrtg를 이용해 모니터링할 수 있다. 2개이상의 데이터 소스를
하나의 그래프로 나타낼 수도 있습니다. MRTG를 이용해 squid도
모니터링가능한데 doc 디렉토리에 참고 문서가 있답니다. 

ㅇ MRTG의 특징 

  1.대부분의 Unix플랫폼과, WindowsNT상에서 동작 합니다
  2.간단하게 커스터마이즈할 수 있도록 Perl를 사용하고 있습니다.
  3.이식성이 좋은 펄을 사용해 SNMP 부분을 프로그래밍했습니다.
    그래서 별도로 SNMP 패키지를 설치할 필요가 없습니다.
  4.로그를 정리하기 위한 독자의 알고리즘의 채용을 하고
     있으므로, MRTG의 로그파일의 사이즈가 커지지 않습니다.
  5.MRTG에는 반자동의 설정용툴을 지원합니다.
  6.MRTG는 라우터 포트설정이 변경되면 자동으로 체크하여
   사용자에게 알려줍니다.(메일)
  7. 속도가 중요한 부분은 C로 작성되었습니다.
  8.Thomas Boutell의  GD library 를 사용합니다. 그래프는
    GIF 포맷으로 만들어집니다.
  9. MRTG가 생성하는 HTML파일을 상세하게 설정하는것이 가능.
  10.MRTG는 GNU PUBLIC LICENSE 로 제공됩니다.

MRTG의 역사, 릴리즈 노트 등응 생략합니다.

contrib 디렉토리에 위에서 말한 cpu부하등의 정보를 모니터링하는
툴과 문서가 있습니다.

00INDEX          cfgmaker_cisco/      get-multiserial/  mrtgindex.cgi/
00INDEX~         cisco_ipaccounting/  ircstats/         mrtgmk/
14all/           cisco_tftp/          jm/               ovmrtg/
GetSNMPLinesUP/  ciscoindex/          mrtg-archiver/    ping-probe/
NSI/             cpuinfo/             mrtg-blast/       portmasters/
PMLines/         cpumon/              mrtg-dynip/       rdlog2/
TCH/             diskmon/             mrtg-ipacc/       rumb-stat/
ascendget/       distrib/             mrtg-ipget/       stat/
atmmaker/        forecd/              mrtg-mail/        whodo/
cfgmaker_ATM/    get-active/          mrtgidx/          xlsummary/

1. mrtg 설치하기

http://ee-staff.ethz.ch/~oetiker/webtools/mrtg/mrtg.html

    1.MRTG의 최신판을 다운 로드
       http://ee-staff.ethz.ch/~oetiker/webtools/mrtg/pub/

       mrtg-2_8_9_tar.gz

	tar xvfz mrtg-2_8_9_tar.gz 하면 풀리겠지요?

	[root@taejun mrtg-2.8.9]# ls
	 ANNOUNCE
	 CHANGES
	 COPYING
	 COPYRIGHT
	 MANIFEST
	 Makefile.in
	 README
	 configure*          ------>> 첫 환경설정
	 configure.in
	 contrib/          ----->> 각충 추가 프로그램
	 doc/              ------>> 문서
	 images/           -------->> 이미지 파일.
	 install-sh*
	 run/             ---->> 실행스크립트. 제일 중요
	 src/
	 translate/        --->> 지원언어

       제가 사용할때는 2.8.9 였습니다. 이전버전는 모르겠는데
       HTML 생성시 한글을 지원해서 좋더라구요. 최근에 추가된듯.

	Kensoon Hwang <lovesh@static.co.kr>

       사용하는 분들 이분에게 감사의 편지라도....

    2. GD 라이브러리가 없으면 아래 사이트에서 받아서 컴파일
       http://www.boutell.com/gd/

    3. Perl 5.004_4 이상 버전이 있어야합니다.
       http://www.perl.com/perl/info/software.html

    4. ./configure
	시스템에 맞는 Makefile을 만들어주지요.
        펄이나 GD경로가 맞는지 확인해보아야하는데 아마 자동으로
        찾아줄 것입니다. 저도 변경하지 않고 그냥 했지요. ok

    5. make
       rateup실행 파일을 만들기 위해서 make 를 실행합니다.
	rateup 프로그램은 db 파일을 업데이트하고 그래픽 이미지등을
	생성하는 프로그램이라고 하네요. 신경쓰지 말고 그냥 make

   6. MRTG에서 생성할 웹페이지 디렉토리를 정합니다.
	/usr/local/www/htdocs/mrtg 라고 가정하지요.
	그러면 여기에 imags 디렉토리 밑의 mrtg*.gif 파일을 다 복사해
	줍니다.

    7. run 디렉토리에 실행파일이 있습니다. 확인합시다.
	BER.pm  SNMP_Session.pm  SNMP_util.pm  cfgmaker*  cfgmaker_ip*
	cfgmaker_phys  indexmaker*  locales_mrtg.pm  mrtg*

    8. 다음에 자신의 mrtg.cfg파일을 작성 합니다.
	이 파일에 관한 정보는config.html에 있습니다.
	아마 처음에는 익숙하지 않은 것입니다.
	doc 디렉토리에 샘플파일이 있으니 이것을 참고하는 것도 좋습니다.

	이걸  자동으로 만드는 툴이 cfgmaker입니다.
	(라우터의 포트번호를 알아내는 프로그래이랍니다)

       cfgmaker <community>@<router-host-name or IP > mrtg.cfg

	라우터의 community@route 주소 를 지정해야지요.
	라우터의 community 이름을 모른다면 public을 사용해보고
	그래도 안되면 관리자에게 문의하세요.

	./cfgmaker public@203.239.148.193    > mrtg.cfg
	이런 식으로 하면 됩니다. 보통 라우터는 gateway주소겠지요?

	여기서 mrtg.cfg 설정하는 것이 좀 여러운 부분입니다.

	위에서 자동으로 생성된 파일을 다음과 같이 수정합니다.
	이건 제일 윗줄에 적으면 되죠. Language는 직접 추가해야합니다.

	WorkDir: /usr/local/www/htdocs/mrtg/
	Language: korean           --->> 한글 설정

	대략 이런 형태로 설정될 것입니다.

	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>

        WorkDir: /usr/local/www/htdocs/mrtg
	--> 웹 파일이 생성될 디렉토리

        Target[love]: 2:public@myrouter.somplace.edu
	--> [love] -> 체크하고자하는 라우터의 포트에 붙이는 이름.
	              나중에 보면 love.html로 됩니당.
	--> 2 : 라우터의 포트번호
	--> public : 라우터의 commnunity 이름
	--> myrouter.somplace.edu : 라우터 주소지정

        MaxBytes[love]: 64000
	-->> 전송속도를 나타냅니다.	

        Title[love]: Traffic Analysis ISDN
	-->> 말그대로 이에 대한 제목이라고 보면 됩니다.

        PageTop[love]: <H1>Stats for our ISDN Line</H1>
	-->> 웹페이지 제일 위에 올라가는 말입니다.

	쩝. 위 설명을 좀 빈약하군요.
	doc 밑의 config.html 이나 config.txt를 참고하세요.

	그리고 한국사람들은 한글 지원을 추가합시다!!!	

    9. 이제 MRTG를 실행해야겠지요?
	run 디렉토리에서 

	./mrtg mrtg.cfg 

	만약 설정파일에 에러가 있다면 에러를 냅니다.
	에러가 없다면 이제 라우터에서 트래픽 자료를 수집하지요.
	그런데 처음에 실행하면 MRTG가 로그 파일이 없다고 에러
	메시지가 나오는데 두세번 실행하면 없어지니 너무
	놀라지 마세요.

   10. MRTG를 crontab에 등록합니다. 

       0,5,10,15,20,25,30,35,40,45,50,55 * * * * 
       /usr/local/mrtg/run/mrtg /usr/local/mrtg/run/mrtg.cfg 

	(실제로 작성할때는 위에서  는 빼야겠지요? 여러줄의미)

	첫컬럼이 무지 긴데 */5 로 해도 되겠지요.
	이제 /usr/local/www/htdocs/mrtg/ 로 가서 웹에서 확인해보세요.

	여기까지 하였다면 축하~~~~~~~

2. 기타

2.1. 개요 페이지 만들기
링크가 많다면 페이지가 여러개 필요합니다.
위에서 Target[love] 라고 되어있는데 이렇게 [ ] 안에 들어가 있는
문자열로 웹의 mrtg 디렉토리 밑에 love.html 과 관련 그래픽파일이
생깁니다. 그렇다면 이러한 타겟에 대한 개요 페이지를 만들면 편리할
것입니다.  그러니깐 여러가지 링크에 대한 주메뉴화면이라고나 할까요.

indexmaker <mrtg.cfg> <regexp for router-names>

이렇게 설명이 되어있는데요.

저의 경우는 이렇게 했습니다.

indexmaker -t 'All My Router' -r . -o 
/usr/local/www/htdocs/mrtg/index.html mrtg.cfg

(실제로 작성할때는 위에서  는 빼야겠지요? 여러줄의미)

명령어의 도움말 보시면 이해가 갑니다. 여기까지 설명하기에는 헥헥~

2.2. 프락시, 로컬 캐쉬 문제
MRTG는 기본적으로 5분마다 그래프를 업데이트합니다.
그런데 프락시나 로컬 캐쉬때문에 문제가 생길 수 있다고 합니다.
아파치 서버를 사용한다면 mrtg.cfg 에서 WriteExpire와
아파치 웹서버의 MetaDir 키워드를 적절히 세팅해야합니다.
이에 대해선 MRTG 홈페이지 참고. 제가 잘 되니깐 별로 고민안하게
되네요.

2.3. 추가기능
MRTG의 본래의 목적은 트래픽 감시입니다만, 어떤
SNMP변수도 모니터링할 수 있습니다. 모뎀 뱅크 상황,
서버의 부하, 인터페이스의 에러율 등. 

이에 대해서는 mibhelp.txt 와 contrib 디렉토리를 참고하세요.

4. 마치며

대략 이정도로 정리를 합니다.
설정 파일에 대한 설명은 이후로 미룹니다. 물론 몇십년이 될지
장담은 못 하겠지요.

네트웍에 대해 정확히 모니터링해서 쓸데없이 대용량의 회선쓰지말고
돈을 절약합시다. SNMP에 대해서는 관련 서적을 참고하시구요.
저도 잘 모릅니다.

RRDTool 의 이해 #2

6. 이용 사례

http://kornet.hanirc.org/chanstat/

HanIRC의 채널별 사용자 통계를 보여준다. 5분간격의 데이터를 1시간 단위로 자동 업데이트한다.
장혜식님의 py-rrdtool을 사용한 페이지

http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/gallery/

* 참고 자료

RRDtool 매뉴얼

http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/manual/index.html

itup님의 RRDtool 튜토리얼, 논문 자료

http://myhome.hanafos.com/~itup/index.html

이은태님의 ‘RRDTool로 서버의 상황을 파악하자.’

http://kltp.kldp.org/stories.php?story=03/02/13/1717339
출처 : Tong – 안토_통님의 모니터링 프로그램통

RRDtool의 이해

제  목 : 서버 모니터링 툴의 강자, RRDtool 가이드 (작성중. alpha 버전)
작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
작성일 : 2003.9.22(월)~

그래픽 모니터링 툴인 RRDtool과 그 프론트엔드 툴 HotSaNIC의 설치, 운영가이드이다.

1. RRDtool의 이해
2. RRDtool 설치
3. HotSaNIC 설치
4. RRDtool 직접 다루기
5. 문제 해결
6. 이용 사례


1. RRDtool의 이해

RRDtool에 대해 들어가기 전에 먼저 MRTG 툴을 설명할 필요가 있을 듯 하다.
MRTG(Multi Router Traffic Grapher)는 이름에서도 드러난대로, SNMP 프로토콜을 사용하여
라우터를 거쳐가는 트래픽을 실시간 그래픽을 통해 모니터링하는데 가장 많이 사용한다.
이외에 시스템을 모니터링하는 여러 addon들이 있다.
DISK 사용량, CPU사용량, 메모리 사용량, 데몬, 세션 개수 등..
심지어는 P2P인 당나귀의 트래픽, 프락시 서버인 Squid 트래픽까지 실시간(실시간이라기
보다는 특정 시간간격으로 변화하여 보여준다는게 더 정확하지만)으로 웹에서 볼 수 있다.

RRDtool은 MRTG처럼 실시간 그래픽 모니터링 기능을 가지고 있으면서 보다 더 개선된 형태의
툴이다. 보다 빠르고 시스템 로드를 덜 잡아먹는다. 또한 MRTG의 제약이었던 2개 이상의 데이터를
하나의 그래픽을 통해 표시할 수 있다. 그래픽의 유연성(?)면에서도 단연 RRDtool이 압도한다.

[ MRTG로 트래픽 모니터링하는 화면 ]
MRTG

[ RRDtool과 HotSaNIC으로 CPU 사용률을 모니터링하는 화면 ]

2. RRDtool 설치

RRDtool : http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/

RRDtool의 시스템 요구사항은 다음과 같다.

Perl 5.005 (컴파일시에 문제가 발생하면 더 최신 것을 설치해본다.)
GNU make
GNU gcc

위 RRDtool 사이트에서 최신 버전을 받아온다. /usr/local/rrdtool에 하는 것으로 가정한다.

# tar xvfz rrdtool-1.0.45.tar.gz
# cd rrdtool-1.0.45
# ./configure –prefix=/usr/local/rrdtool
# make install
# make site-perl-install
… 중략 …
Installing /usr/lib/perl5/site_perl/5.8.0/RRDp.pm
Installing /usr/share/man/man3/RRDp.3pm
… 생략 …

3. HotSaNIC 설치

HotSaNIC : http://hotsanic.sourceforge.net/archive/

HotSaNIC은 RRDtool을 사용하는 툴로 시스템 통계정보를 그래프로 생성해준다.

* 시스템 요구 사항

– RRDtool
– iptables 또는 ipchains (네트워크 트래픽 통계용으로 쓰기 위함)

위 사이트에서 받은 최신 버전은 컴파일없이 환경설정만으로 바로 사용하므로
/usr/local에서 압축을 푼다.

# cd /usr/local
# tar xvf HotSaNIC-0-5-0-pre3.tgz ( HotSaNIC/ 디렉토리가 생성된다. )
# cd HotSaNIC

1) 제공하는 모듈

HotSaNIC은 어떤 모듈을 통해 시스템 통계를 제공하는지 알아보고,
그 모듈을 사용할 것인지 안할 것인지를 판단해보자.


———  ———————————————————–  ———————
모듈       처리하는 통계 정보                                           truefeel의 권장
———  ———————————————————–  ———————
APCUSV     APC UPS의 현황 (apcaccess 툴 사용)                       N
(APC UPS를 사용하지 않고 또한 있더라도 서버와 연결하여 모니터링중이 아니라면 N)
APPS      데몬, 응용프로그램별 프로세스 현황            Y
(프로세스 이름 별도 설정 필요)
DISKIO     각 HDD별(파티션별이 아님) 입출력            Y
(별도 설정 필요)
DNET       Distributed.Net관련 RC5, OGR,  DES, CSC ???         N
NETWORKS   네트워크 트래픽 (별도 설정 필요)            Y
PART      파티션별 사용량                  Y
PING      지정한 서버로 ping time 결과 (ping서버 설정 필요)      ping할 서버가 있다면
SENSORS    CPU, 마더보드 등의 온도, 전압등의 수치         원하는대로
SHOUTCAST  지정한 서버와 포트로의 스트링 현황 (서버, 포트 설정 필요)   N
SYSTEM     시스템의 프로세스 수, CPU 사용률, load, 메모리 사용률, …   Y
TRAFFIC    네트워크 인터페이스별(eth0, …) 트래픽         Y
(SNMP를 통해 라우터나 다른 서버의 트래픽도 모니터링 가능,
물론 이 때는 별도 설정 필요)
WORMS      웹로그 파일을 이용한 님다, 코드레드 등의 웜 공격 건수   Y
(웹로그 경로 설정 필요. 문자열 지정으로 다른 웜 공격도 설정 가능)
———  ———————————————————–  ———————

2) setup.pl로 기본 환경 파일 생성

이제 setup.pl 으로 기본 환경 설정을 해보자.
과정은 길지만 간단하다. 모듈을 보고 Y로 할 것인, N로 할 것인지를 결정한다.
이 설정은 나중에 ./setup.pl으로 변경할 수 있으므로 맘 편하게 진행해라.
(반복되는 내용이라 메시지 중간중간 생략하였다.)

# ./setup.pl
Configuring modules:

Module found: APCUSV
—————————————-
Do you want to use this module ? (Y)es / (n)o > n

Module found: APPS
—————————————-
Do you want to use this module ? (Y)es / (n)o >
Do you want to show this module’s graphs on the webpage ? (Y)es / (n)o >

… 중략 …

Module found: DISKIO   … 중략 …
Module found: DNET     … 중략 …
Module found: NETWORKS
—————————————-
Do you want to use this module ? (Y)es / (n)o >
Do you want to show this module’s graphs on the webpage ? (Y)es / (n)o >

setting up networks …

Configuring local interfaces.
(i)nternal means an interface pointiong to your local machines (intranet)
(e)xternal means an interface connecten with the internet
(n)one means you don’t want to account this interface.

Please answer these:
found: eth0  –  (i)nternal, (e)xternal or (n)one ? e

found: lo  –  (i)nternal, (e)xternal or (n)one ? n

… 중략 …

Module found: PART      … 중략 …
Module found: PING      … 중략 …
Module found: SENSORS   … 중략 …
Module found: SHOUTCAST … 중략 …
Module found: SYSTEM    … 중략 …
Module found: TRAFFIC
—————————————-
Do you want to use this module ? (Y)es / (n)o >
Do you want to show this module’s graphs on the webpage ? (Y)es / (n)o >

setting up traffic …

Configuring local interfaces. Please answer these:
found: eth0  –  (y)es or (n)o ? y

found: lo  –  (y)es or (n)o ? n

Please check the settings file and adapt it to satisfy your needs.
If you have any interfaces slower than 100 MBit, please change the
corrosponding default values.

… 중략 …

Module found: WORMS   … 중략 …
—————————————-
Ok.
Writing main settings …
checking for OS-type (current: not configured)
OSTYPE=”Linux”
checking path to “rrdtimer” (current: not configured)
DAEMONDIR=”/usr/local/HotSaNIC”
checking path to “rrdtool” (current: not configured)
the following possibilities have been detected:
0  /usr/bin
1  /usr/local/rrdtool/bin

which one shall i use (0=default … 1) ? > 1 ( rrdtool이 2군데 설치된 경우이다.)
BINPATH=”/usr/local/rrdtool/bin”  (RRDtool 실행이 있는 디렉토리)
LOGDIR=”$DAEMONDIR/var/log/”      (로그가 저장될 디렉토리)
PIDFILE=”$DAEMONDIR/var/rrdtimer.pid”
DIAGRAMLOG=”last”
LOGSIZE=”200000″
LOGBACKUPS=”5″
DEBUGLEVEL=”-1″
STIME=”120″
SCHEDULE_MIN=”100″
SCHEDULE_MAX=”200″
RUN=”apcusv apps diskio dnet networks part ping sensors shoutcast system traffic worm
s”
WEBDIR=”not configured”
WIDTH=”600″
HEIGHT=”200″
IMAGEFORMAT=”gif”
SHOW=”apcusv apps diskio dnet networks part ping sensors shoutcast system traffic wor
ms”
ORDER=”traffic system part ping dnet sensors”
DTIME=”15″ (15분 간격으로 이미지를 갱신한다.)
CTIME=”24″ (24시간 간격으로 통계화면 메인에 표시될 작은 크기의 이미지를 갱신한다.)
guessing convert method…
checking for Image::Magick perl module… not found
checking path to “convert” from ImageMagick (current: not configured)
detected: /usr/bin/convert
is this corrrect? (y)
checking path to “snmpwalk” (current: not configured)
detected: /usr/bin/snmpwalk
is this corrrect? (y)
SNMPWALK=”/usr/bin/snmpwalk”
checking path to “snmpget” (current: not configured)
detected: /usr/bin/snmpget
is this corrrect? (y)
SNMPGET=”/usr/bin/snmpget”
checking path to “snmpbulkwalk” (current: not configured)
detected: /usr/bin/snmpbulkwalk
is this corrrect? (y)
SNMPBULKWALK=”/usr/bin/snmpbulkwalk”

— Main settings generated. —

Writing start/stop script “rrdgraph” … Ok.

Now adapt all settings files to satisfy your needs.
They are all linked to the directory  /var/settings .

3) 필요한 디렉토리 생성

이제 RRDtool의 웹용 이미지와 html이 저장될 디렉토리와 로그 파일 저장 디렉토리를 생성한다.
디폴트로 로그는 HoSaNIC 홈의 var/log에 생성된다.
(html 홈은 /usr/local/apache/htdocs/ 라고 가정)

# mkdir /usr/local/apache/htdocs/rrdtool
# mkdir var/log

4) 환경 파일의 주요 설정

HoSaNIC 홈/settings가 주 설정 파일이고
HoSaNIC 홈/modules/모듈명/settings는 각 모듈별 설정 파일이다.

주 settings 파일에서 주요 설정을 살펴보자.(반드시 확인할 것에 * 표시해둠)

# BINPATH    = rrdtool 실행 파일이 있는 경로 (*)
BINPATH=”/usr/local/rrdtool/bin”

# LOGDIR     = HoSaNIC의 로그 파일 경로
# LOGSIZE    = 로그 파일 크기
# LOGBACKUPS = 지정한 개수만큼 로그는 로데이터션되어 백업된다.
#              로그 파일명은 HotSaNIC.log, HotSaNIC.log.1, …
LOGDIR=”$DAEMONDIR/var/log/”
LOGSIZE=”200000″
LOGBACKUPS=”5″

# RUN   = 실행할 모듈 목록 (*)
# SHOW  = 웹페이지로 표시할 모듈 목록 (*)
# ORDER = 표시할 모듈의 순서를 지정(먼저 쓴 것부터 왼쪽에 표시함)
RUN=”apps diskio networks part ping sensors system traffic”
SHOW=”apps diskio networks part ping sensors system traffic”
ORDER=”traffic system part ping sensors”

# WEBDIR      = 생성된 이미지, html이 저장될 디렉토리 (*)
# IMAGEFORMAT = 이미지 파일 형식 (gif 또는 png)
WEBDIR=”/usr/local/apache/htdocs/rrdtool”
IMAGEFORMAT=”gif”

# DTIME = 지정한 간격으로 이미지를 생성한다. (단위는 분)
# CTIME = 지정한 간격으로 모니터링 메인화면의 작은 이미지를 생성한다. (단위는 시간)
#         따라서 처음 설치한 후 지정한 시간내에 convert.pl 명령을 하지 않으면 메인화면의
#         이미지는 최소 지정 시간동안 볼 수 없다.
DTIME=”15″
CTIME=”24″

# CONVERTPATH = ImageMagick 를 사용하여 이미지를 생성한다. convert 경로를 지정한다.
CONVERTPATH=”/usr/bin/convert”

# REFRESH = 지정한 초단위로 웹페이지를 리프레쉬해서 보여준다. 기본 300초(5분)
REFRESH=”300″

각 모듈별 설정은 해당 디렉토리의 settings을 보면 자세히 설명이 되어 있다.
여기서는 ping, diskio, apps에 대해서만 예를 들어본다.

* ping 모듈 ( HoSaNIC홈/modules/ping/settings )

192.168.123.15(파일서버)에 대해 ping을 한다면, 다음을 추가하면 된다.

HOST=192.168.123.15,File Server

설정했는데 ping 이미지가 생성안된다면 ‘5. 문제해결’에 해결방법을 설명해뒀다.

* diskio 모듈 ( HoSaNIC홈/modules/ping/settings )

/proc/stat 에서 disk_io 라인을 살펴보면 다음과 같이 되어 있다.

disk_io: (2,0):(1,1,2,0,0) (3,0):(306090,39930,942826,266160,5212040)
(3,1):(55015,28746,1435800,26269,909568) (8,0):(50,50,253,0,0)

여기서 (3,0) = hda, (3,1) = hdb, (8,0) = sda를 각각 의미한다.
따라서 hda와 hdb의 disk 입출력을 보려면 다음과 같이 설정한다.

DEV=3_0,hda
DEV=3_1,hdb

* apps 모듈 ( HoSaNIC/modules/apps/settings )

APP=httpd,Apache
APP=sendmail,Sendmail
APP=mysqld,Mysql Server
APP=hanterm,hanterm
APP=xmms,xmms
APP=MozillaFirebird-bin,Mozilla Web Browser

5) 실행

자~ 이제 웹페이지를 생성하고 rrdgraph만 실행하면 모니터링할 수 있다.

# ./makeindex.pl
# ./rrdgraph start

이제 웹브라우저를 띄우고 보면 된다. 아직 이미지도 안나온는데 뭘 보라는 것일까?
최소 15분(settings의 DTIME)이 지내야 모듈내의 큰 이미지들이 생성되고
24시간(CTIME)이 지나면 메인의 작은 이미지가 보일 것이다.
24시간 전이라도 적당한 시기에 ./convert.pl을 실행하면 메인에서도 이미지를 볼 수 있다.

부팅할 때 자동으로 rrdgraph가 실행되록 하려면 어떻게 해야할까?
rrdgraph 스크립트를 /etc/rc.d/init.d 에 복사를 한 후 chkconfig로 서비스를 추가한다.

# cp rrdgraph /etc/rc.d/init.d
# chkconfig -add rrdgraph

4. RRDtool 직접 다루기

HoSaNIC은 이미 정해진 모듈을 통해서 RRDtool을 다루는 것이다.
이제 시스템관리자가 원하는 데이터를 RRDtool로 직접 조작하여 통계용 이미지를 생성하는
방법을 알아본다. 간단히 과정을 정리해보면.

– RRDtool용 자체 DB(일반적으로 .rrd로 지정)를 생성한다.(create) ->
– 데이터를 업데이트하거나 (update) 가져온다.(fetch) ->
– 이미지를 생성한다. (graph)

1) rrdtool 명령 익히기

DB 생성, 이미지 만드는 것은 모두 RRDtool홈/bin/rrdtool 명령을 통해서 한다.

* 형식 : rrdtool [명령] [명령 옵션…]
* 예   : rrdtool create  coffeenix_status.rrd DS:….

rrdtool에서 사용 가능한 명령은 무엇이 있을까?


———-  ———————————————————————–
명  령      설  명
———-  ———————————————————————–
create      새로운 RRD DB를 만든다.
update      DB에 새 데이터를 저장한다.
graph       저장된 DB자료를 이용해서 이미지를 생성한다. (.gif 또는 .png)
dump        RRD DB의 데이터를 XML 포맷으로 뽑아준다.
restore     XML 포맷에서 RRD DB로 저장한다.
fetch       RRD DB에서 데이터를 얻어온다.
tune        RRD DB의 설정을 변경한다.
last        RRD DB의 최종 업데이트 시간을 알려준다.
info        RRD DB의 헤더 정보를 보여준다. (파일명, 최근업데이트일, 설정값…)
rrdresize   RRA 크기를 변경한다. 가능하면 사용하지 말기를
xport       RRD DB의 데이터를 XML 포맷으로 뽑아준다. (출력 포맷 지정)
———-  ———————————————————————–

2) 샘플 DB 생성

3) 이미지 만들기

5. 문제 해결

1) HoSaNIC 로그 파일을 보니 Can’t locate RRDs.pm in @INC (@INC contains… 오류가 있습니다.

RRDtool 설치할 때 make site-perl-install 를 하지 않아 RRDs.pm 펄 모듈이
설치되지 않아서 입니다.
RRDtool 소스 디렉토리에 가서 make site-perl-install을 하세요.

2) makeindex.pl 실행할 때 다음 오류가 발행합니다.
WEBDIR (path to HotSaNIC’s output directory) does not exist.

시스템 모니터링 결과가 저장될 웹디렉토리를 생성하지 않았다.
위 글중 ‘3 – 3) 필요한 디렉토리 생성’을 확인해봐라.

3) 시간이 한참지났는데 ping 이미지가 생성이 안됩니다. 물론 ping설정은 했습니다.
로그를 보니 Can’t locate asm/unistd.ph in @INC (did you run h2ph?).. 가 있습니다.

펄용 헤더 파일이 없기 때문입니다. 펄 헤더로 변환해주는 h2ph로 해결할 수 있습니다.

cd /usr/include; h2ph -r -l .

gDesklets 에서 iWeather 설정하기.

gDesklets 에서는 기본적으로 날씨 정보를 확인 할 수 있는 모듈이 있다.

하지만 날씨 정보를 제공하는 Yahoo 에서 더이상의 날씨 제공을 하지 않는 듯 하다.

그래서 별 수 없이 별도로 iWeather 설치 작업을 해 주어야 한다.

먼저 ~/.gdesklets 디렉토리에 iWeather_0.1-ayo.tar.gz 파일을 다운 받는다.

이곳에 해당 파일이 업로드 되어 있다.

iWeather_0.1-ayo.tar
그리고 그자리에서 압축을 푼다.

cd ~/.gdesklets
tar xvfz iWeather_0.1-ayo.tar.gz

압축을 풀면 iWeather 의 설치는 끝이 난다.

그리고 원하는 도시의 날씨를 보기 위해서는 Location Code 값이 필요하다.

먼저 weather.com 에 접속하여 해당 도시를 검색한다.

검색 후 주소창을 보면…

http://www.weather.com/outlook/travel/businesstraveler/local/KSXX0037?from=search_city

과 같은 주소가 나온다.

여기서…. KSXX0037 가 Location Code 값이다.

해당값을 Location Code 에 넣어준다.

그러면 끝~~~

완성된 나의 Desktop~!!!

[webalizer] 한글깨짐 문제시 참고 글

원래 webalizer는 미약하기는 하나 오래전부터 한글을 잘 지원하던 프로그램이었던 것으로 기억한다.

그러나 오늘 서버에 apt-get install webalizer로 설치하고 깜짝 놀랐다.
영어로 나왔다고 해도 패키징이 나쁘구나..라고 생각하는데.. 어절시구리? 한글이 다 깨져보인다. 웹브라우저의 텍스트 인코딩 옵션을 이리저리 바꿔도 깨지는 건 마찬가지다.

언 제나 그렇듯히 구글사마의 힘을 빌었으나 데비안 유저 그룹에서 그 문제로 webalizer를 다시 패키징 했다는 양반만 있을 뿐, 별 반 답이 없었다. 다시 컴파일 하란 말인가? 데비안 쓴지 얼마 되지 않아.. 그런걸 모르는데다가…..

결국 눈물을 머금고 소스를 받아 .configure해보니… 이게 왠일..png라이브러리가 없다고 한다 – dpkg로 보니 깔려 있긴 깔려 있는데… 먼가 빠진게 있는 모양…

그 래도 포기할 소냐.. 여기 저기 뒤져보니깐 이런 점을 알 수 있었다. webalizer는 C인지 perl인지의 코드를 컴파일해서 생성이 되는 프로그램이고, 예전에 1.0 버전때는 있었던거 같은데 2.0에서는 언어 설정을 할 수 있는 내용이 설정파일에도 없고.. 엄청 난감한 사태에 빠져들었다.

이 상황에서 눈여겨 본것은 webalizer가 실행을 시작할 때 시스템의 로케일을 불러온다는 생각이 드는 것이다. 그리고 html을 만들어 낼 때 webalizer가 한국어라고 인식하면 euc-kr로 만들어 내는 것 같다고 생각이 드는 거다.(우분투와 쿠분투는 utf-8디펄트고, 나는 utf-8을 쓰고 있다.)

그래서 이렇게 해봤다.

#LANG=”POSIX” webalizer

결과는.. 모든 메시지가 영문으로 빠지고.. url에 한글이 있는 부분들도 잘 표시됨을 확인할 수 있었다.
ubuntu패키지에서 webalizer패키지엔 cron 스크립트도 함께 있다. 앞으로 그넘이 자동으로 돌아가게 하려면 그쪽도 수정해 줄 필요가 있다.

/etc/cron.daily/webalizer에서 해당 부분을 찾아서 아래와 같이 수정한다.

# Run webalizer quietly
LANG=”POSIX” ${WEBALIZER_BIN} -c ${WEBALIZER_CONF} -q
LANG=”POSIX” ${WEBALIZER_BIN} -c ${WEBALIZER_CONF} -q ${nonrotatedlog}

EUC-KR을 사용하지 않는 웹서버라면.. 한번쯤 꼭 참고하면 좋을 것 같다.

나의 Debian-Linux system에서 Webalizer 설치시 한글 깨짐 현상이 발생하였다.

위의 글처럼 /etc/cron.daily/webalizer 파일을 수정 후 다시 시작해 보았다.

하지만…실패!

-c 옵션을 알아듣지 못하는 듯 하였다. 결국 -c 옵션 이후 부분을 주석 처리 후 실행했다.

결과는 성공.

단순히 /etc/cron.daily/webalizer 파일에 LANG=”POSIX” ${WEBALIZER_BIN}

만 추가해도 되는 듯 하다.