2. mrtg.cfg 설정
ftp://mirror.oops.org 에서 제공하는 mrtg package에서는 CPU 사용량, Ethernet 전송
량, Load average, daemon의 process 수와 열린 session 수, HDD 사용량, Memory 사용
량, Swap 사용량에 대한 resource를 측정을 기본적으로 할수 있게 되어 있다.
설치시 생성이 되어 있는 mrtg.cfg에서는 이러한 것들을 기본적으로 설정이 되어 있으
며 자신의 시스템에 맞게끔 조금씩만 수정을 해 주면 된다.
mrtg.cfg 에서 사용되는 기본 문법에 대해서는 manual을 참고하기 바란다. 그리고 간
단한 설명에 대해서는 마지막 section 에서 resource 측정 script 만들기 편을 참조하
면 간단한 지시자 설명이 있을 것이다. 여기서는 기존의 설정들을 편집 하여 사용하는
법만 다루도록 한다.
아래는 mrtg.cfg 의 설정 파일 예제이다.
Hanterm - cat /etc/mrtg2/mrtg.cfg
[root@bbuwoo etc]$ cat /etc/mrtg2/mrtg.cfg
###################################################################################
# MRTG Configuration file
# created by JoungKyun Kim in OOPS Development Organizationo
# 2000.2.15 http://oops.org
###################################################################################
WorkDir: /home/httpd/html/MRTG-data
Language: korean
IconDir: /MRTG-data/img/
위의 부분은 변경을 할 필요가 없다. 그냥 그대로 두도록 하자. 만약 apaceh를 rpm으로
설치를 하지 않았을 경우에는 이 부분을 조금 손을 봐줘야 한다. 간단히 설명을 하자면
WorkDir 은 mrtg 가 변환한 data file 을 위치 시킬 곳이다. mrtg 의 경우 html 문서로
data를 변환하기 때문에 웹루트의 경로에 지정을 해야 한다. source compile을 했을 경
우 보통 /usr/local/apache/htdocs 가 web root 가 되므로
WorkDir: /usr/local/apache/htdocs/MRTG-data
Language: korean
IconDir: /MRTG-data/img/
정도로 지정을 하면 된다. IconDir 은 web root 를 기준으로 path 를 지정한다. 만약
WorkDir 을 변경했을 경우에는 /usr/sbin/mrtg 에서도 동일하게 변경해 줘야 한다.
### % of Cpu Usage
#
Target[PUTHOSTNAME_cpu]: `/usr/bin/mrtg2/cpuinfo`
Title[PUTHOSTNAME_cpu]: PUTHOSTNAME : % OF CPU USAGE
MaxBytes[PUTHOSTNAME_cpu]: 100
Options[PUTHOSTNAME_cpu]: gauge, integer, nopercent
Unscaled[PUTHOSTNAME_cpu]: dwym
WithPeak[PUTHOSTNAME_cpu]: my
YLegend[PUTHOSTNAME_cpu]: % Of CPU used
ShortLegend[PUTHOSTNAME_cpu]: %
LegendO[PUTHOSTNAME_cpu]: CPU System:
LegendI[PUTHOSTNAME_cpu]: CPU User:
Legend1[PUTHOSTNAME_cpu]: 5분간 평균 CPU User Percentage
Legend2[PUTHOSTNAME_cpu]: 5분간 평균 CPU System Percentage
Legend3[PUTHOSTNAME_cpu]: 5분간 최대 CPU User Percentage
Legend4[PUTHOSTNAME_cpu]: 5분간 최대 CPU System Percentage
PageTop[PUTHOSTNAME_cpu]: <H1>CPU usage for PUTHOSTNAME</H1>
<TABLE><TR><TD>System:</TD><TD>PUTHOSTNAME</TD></TR></TABLE>
이 부분은 CPU 사용량을 측정한다. 건드리지 말고 그대로 사용하면 된다. 이 설정 파
일의 경우 각 resource설정 부분 아래에서 수정할 필요가있는 부분만 설명을 붙일 것
이며 그대로 사용할수 있는 부분에 대해서는 아무런 언급을 하지 않을테니 수정치 말
고 그대로 사용하기 바란다.
이 부분은 설정의 처음 부분이니 간략하게 설명을 넣을 것이다. 일단 설정에서
PUTHOSTNAME 이라는 문자열은 설치시 rpm script 가 system 의 hostname 을 얻어와서
PUTHOSTNAME 대신 hostname으로 대체를 할것이다. 즉 나의 hostname이 oops.org 라면
Target[oops.org_cpu]: `/usr/bin/mrtg2/cpuinfo`
와 같은 형식으로 설정이 되어 있을 것이다. 그럼 간단하게 각 지시자에 대해서 언급
을 하도록 하겠다.
설정의 형식은 Directive[mrtg_tag]: value 의 형식을 취한다. 즉 위의 Target 지시
자를 예로 들면 Directive 는 Target, mrtg_tag 는 PUTHOSTNAME_cpu 그리고 value 는
`/usr/bin/mrtg2/cpuinfo` 이 된다. 주의 할 것은 mrtg_tag 는 중복이 되면 안된다는
점이다.
그럼 각 지시자에 대해서 간단하게 설명을 해 보자.
Target[mrtg_tag] -> mrtg가 data를 얻어올 target을 지정한다. 주로 snmp 를 이용하
지만 여기서는 shell script로 얻어온다. snmp를 이용하지 않을
경우 즉, shell script 나 perl 또는 다른 C 로 만든 binary 를
사용할 경우에는 `` 문자열로 해당 명령어를 감싸주면 된다. ``
는 작은 따옴표(single quote) 가 아니라 tab key 바로 위에 있
는 `를 의미한다.
Title[mrtg_tag] -> 별 의미가 없다. 다만 이 mrtg_tag의 설정이 무엇인가를 구분하
기 위한 tag 정도라고 여기면 되겠다.
MaxBytes[mrtg_tag] -> 원래의 의미는 network전송량의 최대값을 의미 하지만 여기서
는 조금씩 틀리다. 이 부분에 대해서 지정을 할 필요가 있는 부
분에 대해서는 각각의 설정에서 이값을 어떻게 구하는지 설명을
붙여 놓을 것이다.
Options[mrtg_tag] -> Options 에는 여러가지 옵션이 있지만 보통 많이 사용 하는 것
은 3가지 즉, gauge, integer, nopercent 정도이다. gauge는 얻
어진 값을 절대값으로 평가를 하며, 주로 network 과 상관이 없
는 system 의 resouce 즉 disk, process 같은 것들을 측정할 때
많이 사용이 되어진다. integer 는 측정 graph에 들어가는 수치
와 측정 graph 하단의 수치를 정수로 보여주는 것을 의미한다.
지정치 않을 경우 소숫점 1자리로 표현이 된다. nopercent는 위
에서 지정한 MaxBytes 의 값을 기준으로 몇 % 를 사용하고 있다
고 나타내는 것을 출력하지 않게 한다.
Unscaled[mrtg_tag] -> mrtg는 기본적으로 Y축은 측정값의 최대 수치에 맞추어서 Y축
의 최대값을 보여준다. 즉 Y 축의 좌표가 유동적으로 표현이 된
다는 의미이다. 하지만 이 지시자를 설정을 하면 Y 축의 좌표의
최대값은 MaxBytes 에서 설정한 값으로 고정이 된다. 이 지시자
의 value는 d,w,m,y 4개의 값을 가지며 이들은 각각 day graph,
week graph, month graph, year graph (mrtg는 기본적으로 이 4
개의 graph로 구성이 된다.) 를 의미한다.
WithPeak[mrtg_tag] -> WithPeak 는 5분간의 최대 수치를 graph로 나타내게 된다. 이
것 역시 d,w,m,y 의 값을 가지며 month graph와 year graph 에서
만 Peak 값을 graph로 그리려면 m,y 로 지정을 하면 된다.
YLegend[mrtg_tag] -> YLegend 는 graph 의 Y 축의 tag 를 지정한다. 즉 Y 축의 이름
을 지정한다고 생각하라.
ShortLegend[mrtg_tag] -> X 축 아래의 평균 수치를 나타내는 단위를 적는다. 이 부
분은 상당히 유동적이기 때문에 운영 하면서 어떻게 사용되는지
판단해 보기 바란다.
LegendO[mrtg_tag] -> Output data 의 tag 이다. 그래프에서 파란색 문자열에 해당
한다.
LegendI[mrtg_tag] -> Input data 의 tag 이다. 그래프에서 초록색 문자열에 해당한
다.
Legend1,2,3,4[mrtg_tag] -> year graph 하단의 그래프 설명을 지정한다. 차례대로
1,2,3,4 가 되며, 지정을 하지 않으면 나타나지 않는다.
PageTop[mrtg_tag] -> html 로 변환할때 가장 상단의 title을 지정한다. 이 부분은
꼭 <H1> tag 로 감싸줘야 한다. PageTop지시자의 아래에
는 필요한 문자열 같은 것을을 html 양식으로 지정할수도 있다.
### EtherNET 0 Usage
#
Target[PUTHOSTNAME_eth0]: `/usr/bin/mrtg2/ethernet eth0`
MaxBytes[PUTHOSTNAME_eth0]: 13107200
kilo[PUTHOSTNAME_eth0]: 1024
Title[PUTHOSTNAME_eth0]: PUTHOSTNAME : EtherNet 0 transfer usage
PageTop[PUTHOSTNAME_eth0]: <H1>EtherNet 0 transfer usage for PUTHOSTNAME</H1>
<TABLE><TR><TD>System:</TD><TD>PUTHOSTNAME</TD></TR></TABLE>
네트워크 카드의 전송량을 측정한다. MaxBytes 만 자신의 네트워크 속도로
수정을 하고 그대로 사용을 하면 되겠다.
### Load Average
#
Target[PUTHOSTNAME_load]: `/usr/bin/mrtg2/loadaverage`
Title[PUTHOSTNAME_load]: PUTHOSTNAME : Load Average
MaxBytes[PUTHOSTNAME_load]: 100
AbsMax[PUTHOSTNAME_load]: 10000
Options[PUTHOSTNAME_load]: gauge, integer, nopercent
WithPeak[PUTHOSTNAME_load]: my
YLegend[PUTHOSTNAME_load]: Load Average
ShortLegend[PUTHOSTNAME_load]:
LegendI[PUTHOSTNAME_load]: 5 min:
LegendO[PUTHOSTNAME_load]: 15 min:
Legend1[PUTHOSTNAME_load]: 5분간 평균 Load AVG.
Legend2[PUTHOSTNAME_load]: 15분간 평균 Load AVG.
Legend3[PUTHOSTNAME_load]: 5분간 최대 Load AVG.
Legend4[PUTHOSTNAME_load]: 15분간 최대 Load AVG.
#YTicsFactor[PUTHOSTNAME_load]: 0.01
YTicsFactor[PUTHOSTNAME_load]: 1
PageTop[PUTHOSTNAME_load]: <H1>Load Average for PUTHOSTNAME</H1>
<TABLE><TR><TD>System:</TD><TD>PUTHOSTNAME</TD></TR></TABLE>
System의 Load Average 를 측정을 한다. 그대로 사용을 한다.
### httpd process no and session no
#
# web daemon의 프로세스 수와 열려진 세션 수를 구함.
# Target 에서 noprocess daemon_name 의 형식으로 다른 프로세스와
# 세션수를 구할수도 있음. 현재는 httpd와 ftpd, mysql 만 지원함.
#
# noprocess 를 이용하여 MySQL 을 설정할 경우에는 /etc/my.cnf 에서
# client 설정의 패스워드 설정이 되어 있어야만 가능하다. 또한
# LegendO[PUTHOSTNAME_httpd]: Session: 은
# LegendO[PUTHOSTNAME_httpd]: Connection: 으로 설정을 해야
# 한다.
#
#Target[PUTHOSTNAME_httpd]: `/usr/bin/mrtg2/noprocess httpd`
#Title[PUTHOSTNAME_httpd]: PUTHOSTNAME : HTTPd Information
#MaxBytes[PUTHOSTNAME_httpd]: 1000
#AbsMax[PUTHOSTNAME_httpd]: 10000
#Options[PUTHOSTNAME_httpd]: gauge,integer, nopercent
#WithPeak[PUTHOSTNAME_httpd]: my
#YLegend[PUTHOSTNAME_httpd]: Number of HTTPd
#ShortLegend[PUTHOSTNAME_httpd]: EA
#LegendI[PUTHOSTNAME_httpd]: Process:
#LegendO[PUTHOSTNAME_httpd]: Session:
#Legend1[PUTHOSTNAME_httpd]: 5분간 평균 Process 수
#Legend2[PUTHOSTNAME_httpd]: 5분간 평균 Session 수
#Legend3[PUTHOSTNAME_httpd]: 5분간 최대 Process 수
#Legend4[PUTHOSTNAME_httpd]: 5분간 최대 Session 수
#YTicsFactor[PUTHOSTNAME_httpd]: 1
#PageTop[PUTHOSTNAME_httpd]: <H1>HTTPd for PUTHOSTNAME</H1>
# <TABLE><TR><TD>System:</TD><TD>PUTHOSTNAME</TD></TR></TABLE>
이 부분은 http daemon의 process 수와 열려진 session 의 수를 측정을 한다. 현재
는 주석 처리가 되어 있으므로 그래프를 생성을 하려면 제일 앞열의 # 표시를 제거
를 해 주도록 한다.
또한 이 설정을 응용하면 다른 daemon 들의 프로세스와 열려진 세션을 구할수도 있
다. 다만 다른 daemon 들 까지 체크를 하려면 Target 에서 지정된 script들을 약간
수정해 줘야 한다.
수정을 하지 않고 사용할 수 있는 데몬으로는 httpd 와 ftpd가 있다. 만약 MySQL을
tcp/ip 로 접근을 하고 있다면 MySQL 역시 사용을 할수가 있다.
ftpd 를 측정을 하기 위해서는 httpd 의 설정을 그대로 복사를 한뒤에 mrtg tag 를
일단 수정을 해 주고 Target, Title, YLegend만 수정을 하여 사용을 하면 된다. 다
음과 같이 수정을 해주면 무난 할 것이다.
Target[host_ftpd] = `/usr/bin/mrtg2/noprocess ftpd`
Title[host_ftpd] = hostname : FTPd Information
YLegend[host_ftpd] = Number of FTPd
정도로만 변경을 해 주면 ftpd 의 graph는 바로 사용을 할수가 있다. MySQL 은 예제
설정 바로위의 주의 사항을 잘 읽어 보기 바란다.
## Disk Usage
#
# 총 디스크 양과 현재 사용량을 출력해줌.
# Target 에서 disk device_name 의 형식으로 여러개를 지정할수도 있음
# MaxBytes 의 값은 df | grep devicename (옵션없이) 명령으로 알수가 있다.
#
#Target[PUTHOSTNAME_disk]: `/usr/bin/mrtg2/disk hda4`
#Title[PUTHOSTNAME_disk]: PUTHOSTNAME: DISK USAGE
#kilo[PUTHOSTNAME_disk]: 1024
#Unscaled[PUTHOSTNAME_disk]: dwym
#Options[PUTHOSTNAME_disk]: gauge
#LegendI[PUTHOSTNAME_disk]: home:
#LegendO[PUTHOSTNAME_disk]: total:
#Legend1[PUTHOSTNAME_disk]: /home
#Legend2[PUTHOSTNAME_disk]: total
#MaxBytes[PUTHOSTNAME_disk]: 15068496
#ShortLegend[PUTHOSTNAME_disk]: B
#kMG[PUTHOSTNAME_disk]: K,M,G,T,P
#PageTop[PUTHOSTNAME_disk]: <H1>PUTHOSTNAME: DISK USAGE</H1>
# <TABLE><TR><TD>System:</TD><TD>PUTHOSTNAME</TD></TR></TABLE>
이 부분은 HDD 의 용량을 체크하는 설정이다. 이 부분은 각 system 마다 또는 각
관리자마다 측정을 원하는 device 가 틀리기 때문에 기본적으로 주석처리를 해서
배포가 된다. 일단 사용을 하기 위해서는 가장 앞열의 #표시를 제거해 줘야 한다.
# 표시는 주석을 의미한다. 일단 HDD 용량 체크에서 설정을 해 줘야 할 부분은
Target 과 MaxBytes 만 설정을 해 주면 된다. 일단 target에서는 예제와 같이 원
하는 device 명을 제일 마지막에 적으면 된다. 만약 /home partition 을 측정 하
고 싶은데 /home 이 /dev/hdd4 에 mount되어 있다면
Target[mrtg_tag]: `/usr/bin/mrtg2/disk hdd4`
와 같이 지정을 하면 된다. 그리고 MaxBytes 의 값은 df 명령으로 해당 device의
1k-blocks 값을 적어 주면 된다. human readable 기능을 사용하여 보면 안된다.
순수하게 df 의 아무런 옵션 없이 실행시킨 값을 받아야 한다. 즉 hdd 의 용량을
kilobyte로 측정한 값을 넣어준다.
이것을 응용하여 이 설정에서 mrtg tag 와 Target, MaxBytes 값만 조정하여 몇개
의 partition을 측정할수 있다.
만약 커널 2.4 의 DevFS 를 사용하는 경우에는 df의 파티션 이름이 바뀌게 된다.
이때에는 만약 hda2 와 같은 파티션 이름를 안다면 위와같이 그대로 사용해도 무
방하나 만약 모르겠다면 마운트 포지션의 가장 마지막 디렉토리를 지정해 주면된
다. 아래의 예를 참고하라.
shell> df -Ph
Filesystem Size Used Avail Use% Mounted on
/dev/ide/host0/bus0/target0/lun0/part3 3.4G 908M 2.4G 28% /
/dev/ide/host0/bus0/target0/lun0/part2 61M 11M 48M 18% /boot
/dev/ide/host0/bus0/target0/lun0/part5 16G 282M 16G 2% /var
/dev/ide/host0/bus0/target0/lun0/part6 24G 19G 5.1G 79% /home
/dev/ide/host0/bus0/target1/lun0/part2 38G 25G 14G 66% /home/ftproot
tmpfs 251M 0 251M 0% /dev/shm
이경우 /dev/ide/host0/bus0/target1/lun0/part2 는 hdb2를 의미한다. 하지만 이
걸 모르겠다면 위의 설정에서
Target[PUTHOSTNAME_disk]: `/usr/bin/mrtg2/disk devfs ftproot$`
와 같이 지정하여 사용할수 있다.
## Memory Usage
#
# memory의 MaxBytes 는 free -b 로 알수가 있다.
#
Target[PUTHOSTNAME_mem]: `/usr/bin/mrtg2/memory`
MaxBytes[PUTHOSTNAME_mem]: 529661952
Title[PUTHOSTNAME_mem]: PUTHOSTNAME: MEMORY USAGE
Unscaled[PUTHOSTNAME_mem]: dwym
kilo[PUTHOSTNAME_mem]: 1024
WithPeak[PUTHOSTNAME_mem]: my
Options[PUTHOSTNAME_mem]: gauge
YLegend[PUTHOSTNAME_mem]: Memory Usage
LegendI[PUTHOSTNAME_mem]: Used:
LegendO[PUTHOSTNAME_mem]: Cached:
Legend1[PUTHOSTNAME_mem]: 5분간 평균 Used Memory Size
Legend2[PUTHOSTNAME_mem]: 5분간 평균 Cached Memory Size
Legend3[PUTHOSTNAME_mem]: 5분간 최대 Used Memory Size
Legend4[PUTHOSTNAME_mem]: 5분간 최대 Cached Memory Size
ShortLegend[PUTHOSTNAME_mem]: B
PageTop[PUTHOSTNAME_mem]: <H1>PUTHOSTNAME: MEMORY USAGE (512MB)</H1>
<TABLE><TR><TD>System:</TD><TD>PUTHOSTNAME</TD></TR></TABLE>
Memory 사용량을 측정한다. 이 graph에서 free 명령에서의 used값은 이 graph 상
의 used + bufferd+cached 값이 합쳐진 값이다. 실제로 buffer와 cache값은 used
에서 빠져야 실제 메모리 사용량을 알 수가 있는 것이다. 즉 이 graph 에 나오는
used 값이 실제 메모리 사용량이라고 보면 된다. 혹시 free 명령으로 보았을때의
값과 틀리다고 생각하는 사람이 있을것을 대비해 미리 주석을 달아 놓는다.
### Swap Usage
#
# swap의 TotalBytes 는 free (옵션없이) 명령으로 알수가 있다.
#
Target[PUTHOSTNAME_swap]: `/usr/bin/mrtg2/swap`
Title[PUTHOSTNAME_swap]: PUTHOSTNAME : Swap In VS Swap Out
kilo[PUTHOSTNAME_swap]: 1024
MaxBytes[PUTHOSTNAME_swap]: 213815296
Options[PUTHOSTNAME_swap]: gauge, integer
Unscaled[PUTHOSTNAME_swap]: dwym
WithPeak[PUTHOSTNAME_swap]: my
YLegend[PUTHOSTNAME_swap]: Swap Count
ShortLegend[PUTHOSTNAME_swap]: B
kMG[PUTHOSTNAME_swap]: K,M,G,T,P
LegendI[PUTHOSTNAME_swap]: Swap In:
LegendO[PUTHOSTNAME_swap]: Swap Out:
Legend1[PUTHOSTNAME_swap]: 5분간 평균 Swap In
Legend2[PUTHOSTNAME_swap]: 5분간 평균 Swap Out
Legend3[PUTHOSTNAME_swap]: 5분간 최대 Swap In
Legend4[PUTHOSTNAME_swap]: 5분간 최대 Swap Out
PageTop[PUTHOSTNAME_swap]: <H1>Swap usage for PUTHOSTNAME</H1>
<TABLE><TR><TD>System:</TD><TD>PUTHOSTNAME</TD></TR></TABLE>
Swap in 과 out 을 측정한다. SWAP의 MaxBytes 는 free -b 명령으로 Swap의 값을
구할수 있으며 나머지는 수정 없이 그대로 사용을 하면 된다.
### % of I/O Usage
#
Target[PUTHOSTNAME_io]: `/usr/bin/mrtg2/io`
Title[PUTHOSTNAME_io]: WORK.OOPS.ORG : Block In VS Block Out
MaxBytes[PUTHOSTNAME_io]: 1000
Options[PUTHOSTNAME_io]: gauge, integer
Unscaled[PUTHOSTNAME_io]: dwym
WithPeak[PUTHOSTNAME_io]: my
ShortLegend[PUTHOSTNAME_io]: Blocks/s
YLegend[PUTHOSTNAME_io]: Block Count
LegendO[PUTHOSTNAME_io]: Block In:
LegendI[PUTHOSTNAME_io]: Block Out:
Legend1[PUTHOSTNAME_io]: 5분간 평균 Block In
Legend2[PUTHOSTNAME_io]: 5분간 평균 Block Out
Legend3[PUTHOSTNAME_io]: 5분간 최대 Block In
Legend4[PUTHOSTNAME_io]: 5분간 최대 Block Out
Colours[PUTHOSTNAME_io]: 청색#BBBBFF, 적색#FFAAAA, 짙은청색#6666EE, 짙은적색#EE6666
PageTop[PUTHOSTNAME_io]: <H1>I/O usage for PUTHOSTNAME</H1>
<TABLE><TR><TD>System:</TD><TD>PUTHOSTNAME</TD></TR></TABLE>
I/O 의 Block in 과 out 을 측정한다. 수정 없이 그대로 사용을 하면 된다.
[root@bbuwoo etc]$
2. mrtg.cfg 설정
ftp://mirror.oops.org 에서 제공하는 mrtg package에서는 CPU 사용량, Ethernet 전송 량, Load average, daemon의 process 수와 열린 session 수, HDD 사용량, Memory 사용 량, Swap 사용량에 대한 resource를 측정을 기본적으로 할수 있게 되어 있다. 설치시 생성이 되어 있는 mrtg.cfg에서는 이러한 것들을 기본적으로 설정이 되어 있으 며 자신의 시스템에 맞게끔 조금씩만 수정을 해 주면 된다. mrtg.cfg 에서 사용되는 기본 문법에 대해서는 manual을 참고하기 바란다. 그리고 간 단한 설명에 대해서는 마지막 section 에서 resource 측정 script 만들기 편을 참조하 면 간단한 지시자 설명이 있을 것이다. 여기서는 기존의 설정들을 편집 하여 사용하는 법만 다루도록 한다. 아래는 mrtg.cfg 의 설정 파일 예제이다.
Hanterm - cat /etc/mrtg2/mrtg.cfg |
[root@bbuwoo etc]$ cat /etc/mrtg2/mrtg.cfg ################################################################################### # MRTG Configuration file # created by JoungKyun Kim in OOPS Development Organizationo # 2000.2.15 http://oops.org ################################################################################### WorkDir: /home/httpd/html/MRTG-data Language: korean IconDir: /MRTG-data/img/ 위의 부분은 변경을 할 필요가 없다. 그냥 그대로 두도록 하자. 만약 apaceh를 rpm으로 설치를 하지 않았을 경우에는 이 부분을 조금 손을 봐줘야 한다. 간단히 설명을 하자면 WorkDir 은 mrtg 가 변환한 data file 을 위치 시킬 곳이다. mrtg 의 경우 html 문서로 data를 변환하기 때문에 웹루트의 경로에 지정을 해야 한다. source compile을 했을 경 우 보통 /usr/local/apache/htdocs 가 web root 가 되므로 WorkDir: /usr/local/apache/htdocs/MRTG-data Language: korean IconDir: /MRTG-data/img/ 정도로 지정을 하면 된다. IconDir 은 web root 를 기준으로 path 를 지정한다. 만약 WorkDir 을 변경했을 경우에는 /usr/sbin/mrtg 에서도 동일하게 변경해 줘야 한다. ### % of Cpu Usage # Target[PUTHOSTNAME_cpu]: `/usr/bin/mrtg2/cpuinfo` Title[PUTHOSTNAME_cpu]: PUTHOSTNAME : % OF CPU USAGE MaxBytes[PUTHOSTNAME_cpu]: 100 Options[PUTHOSTNAME_cpu]: gauge, integer, nopercent Unscaled[PUTHOSTNAME_cpu]: dwym WithPeak[PUTHOSTNAME_cpu]: my YLegend[PUTHOSTNAME_cpu]: % Of CPU used ShortLegend[PUTHOSTNAME_cpu]: % LegendO[PUTHOSTNAME_cpu]: CPU System: LegendI[PUTHOSTNAME_cpu]: CPU User: Legend1[PUTHOSTNAME_cpu]: 5분간 평균 CPU User Percentage Legend2[PUTHOSTNAME_cpu]: 5분간 평균 CPU System Percentage Legend3[PUTHOSTNAME_cpu]: 5분간 최대 CPU User Percentage Legend4[PUTHOSTNAME_cpu]: 5분간 최대 CPU System Percentage PageTop[PUTHOSTNAME_cpu]: <H1>CPU usage for PUTHOSTNAME</H1> <TABLE><TR><TD>System:</TD><TD>PUTHOSTNAME</TD></TR></TABLE> 이 부분은 CPU 사용량을 측정한다. 건드리지 말고 그대로 사용하면 된다. 이 설정 파 일의 경우 각 resource설정 부분 아래에서 수정할 필요가있는 부분만 설명을 붙일 것 이며 그대로 사용할수 있는 부분에 대해서는 아무런 언급을 하지 않을테니 수정치 말 고 그대로 사용하기 바란다. 이 부분은 설정의 처음 부분이니 간략하게 설명을 넣을 것이다. 일단 설정에서 PUTHOSTNAME 이라는 문자열은 설치시 rpm script 가 system 의 hostname 을 얻어와서 PUTHOSTNAME 대신 hostname으로 대체를 할것이다. 즉 나의 hostname이 oops.org 라면 Target[oops.org_cpu]: `/usr/bin/mrtg2/cpuinfo` 와 같은 형식으로 설정이 되어 있을 것이다. 그럼 간단하게 각 지시자에 대해서 언급 을 하도록 하겠다. 설정의 형식은 Directive[mrtg_tag]: value 의 형식을 취한다. 즉 위의 Target 지시 자를 예로 들면 Directive 는 Target, mrtg_tag 는 PUTHOSTNAME_cpu 그리고 value 는 `/usr/bin/mrtg2/cpuinfo` 이 된다. 주의 할 것은 mrtg_tag 는 중복이 되면 안된다는 점이다. 그럼 각 지시자에 대해서 간단하게 설명을 해 보자. Target[mrtg_tag] -> mrtg가 data를 얻어올 target을 지정한다. 주로 snmp 를 이용하 지만 여기서는 shell script로 얻어온다. snmp를 이용하지 않을 경우 즉, shell script 나 perl 또는 다른 C 로 만든 binary 를 사용할 경우에는 `` 문자열로 해당 명령어를 감싸주면 된다. `` 는 작은 따옴표(single quote) 가 아니라 tab key 바로 위에 있 는 `를 의미한다. Title[mrtg_tag] -> 별 의미가 없다. 다만 이 mrtg_tag의 설정이 무엇인가를 구분하 기 위한 tag 정도라고 여기면 되겠다. MaxBytes[mrtg_tag] -> 원래의 의미는 network전송량의 최대값을 의미 하지만 여기서 는 조금씩 틀리다. 이 부분에 대해서 지정을 할 필요가 있는 부 분에 대해서는 각각의 설정에서 이값을 어떻게 구하는지 설명을 붙여 놓을 것이다. Options[mrtg_tag] -> Options 에는 여러가지 옵션이 있지만 보통 많이 사용 하는 것 은 3가지 즉, gauge, integer, nopercent 정도이다. gauge는 얻 어진 값을 절대값으로 평가를 하며, 주로 network 과 상관이 없 는 system 의 resouce 즉 disk, process 같은 것들을 측정할 때 많이 사용이 되어진다. integer 는 측정 graph에 들어가는 수치 와 측정 graph 하단의 수치를 정수로 보여주는 것을 의미한다. 지정치 않을 경우 소숫점 1자리로 표현이 된다. nopercent는 위 에서 지정한 MaxBytes 의 값을 기준으로 몇 % 를 사용하고 있다 고 나타내는 것을 출력하지 않게 한다. Unscaled[mrtg_tag] -> mrtg는 기본적으로 Y축은 측정값의 최대 수치에 맞추어서 Y축 의 최대값을 보여준다. 즉 Y 축의 좌표가 유동적으로 표현이 된 다는 의미이다. 하지만 이 지시자를 설정을 하면 Y 축의 좌표의 최대값은 MaxBytes 에서 설정한 값으로 고정이 된다. 이 지시자 의 value는 d,w,m,y 4개의 값을 가지며 이들은 각각 day graph, week graph, month graph, year graph (mrtg는 기본적으로 이 4 개의 graph로 구성이 된다.) 를 의미한다. WithPeak[mrtg_tag] -> WithPeak 는 5분간의 최대 수치를 graph로 나타내게 된다. 이 것 역시 d,w,m,y 의 값을 가지며 month graph와 year graph 에서 만 Peak 값을 graph로 그리려면 m,y 로 지정을 하면 된다. YLegend[mrtg_tag] -> YLegend 는 graph 의 Y 축의 tag 를 지정한다. 즉 Y 축의 이름 을 지정한다고 생각하라. ShortLegend[mrtg_tag] -> X 축 아래의 평균 수치를 나타내는 단위를 적는다. 이 부 분은 상당히 유동적이기 때문에 운영 하면서 어떻게 사용되는지 판단해 보기 바란다. LegendO[mrtg_tag] -> Output data 의 tag 이다. 그래프에서 파란색 문자열에 해당 한다. LegendI[mrtg_tag] -> Input data 의 tag 이다. 그래프에서 초록색 문자열에 해당한 다. Legend1,2,3,4[mrtg_tag] -> year graph 하단의 그래프 설명을 지정한다. 차례대로 1,2,3,4 가 되며, 지정을 하지 않으면 나타나지 않는다. PageTop[mrtg_tag] -> html 로 변환할때 가장 상단의 title을 지정한다. 이 부분은 꼭 <H1> tag 로 감싸줘야 한다. PageTop지시자의 아래에 는 필요한 문자열 같은 것을을 html 양식으로 지정할수도 있다. ### EtherNET 0 Usage # Target[PUTHOSTNAME_eth0]: `/usr/bin/mrtg2/ethernet eth0` MaxBytes[PUTHOSTNAME_eth0]: 13107200 kilo[PUTHOSTNAME_eth0]: 1024 Title[PUTHOSTNAME_eth0]: PUTHOSTNAME : EtherNet 0 transfer usage PageTop[PUTHOSTNAME_eth0]: <H1>EtherNet 0 transfer usage for PUTHOSTNAME</H1> <TABLE><TR><TD>System:</TD><TD>PUTHOSTNAME</TD></TR></TABLE> 네트워크 카드의 전송량을 측정한다. MaxBytes 만 자신의 네트워크 속도로 수정을 하고 그대로 사용을 하면 되겠다. ### Load Average # Target[PUTHOSTNAME_load]: `/usr/bin/mrtg2/loadaverage` Title[PUTHOSTNAME_load]: PUTHOSTNAME : Load Average MaxBytes[PUTHOSTNAME_load]: 100 AbsMax[PUTHOSTNAME_load]: 10000 Options[PUTHOSTNAME_load]: gauge, integer, nopercent WithPeak[PUTHOSTNAME_load]: my YLegend[PUTHOSTNAME_load]: Load Average ShortLegend[PUTHOSTNAME_load]: LegendI[PUTHOSTNAME_load]: 5 min: LegendO[PUTHOSTNAME_load]: 15 min: Legend1[PUTHOSTNAME_load]: 5분간 평균 Load AVG. Legend2[PUTHOSTNAME_load]: 15분간 평균 Load AVG. Legend3[PUTHOSTNAME_load]: 5분간 최대 Load AVG. Legend4[PUTHOSTNAME_load]: 15분간 최대 Load AVG. #YTicsFactor[PUTHOSTNAME_load]: 0.01 YTicsFactor[PUTHOSTNAME_load]: 1 PageTop[PUTHOSTNAME_load]: <H1>Load Average for PUTHOSTNAME</H1> <TABLE><TR><TD>System:</TD><TD>PUTHOSTNAME</TD></TR></TABLE> System의 Load Average 를 측정을 한다. 그대로 사용을 한다. ### httpd process no and session no # # web daemon의 프로세스 수와 열려진 세션 수를 구함. # Target 에서 noprocess daemon_name 의 형식으로 다른 프로세스와 # 세션수를 구할수도 있음. 현재는 httpd와 ftpd, mysql 만 지원함. # # noprocess 를 이용하여 MySQL 을 설정할 경우에는 /etc/my.cnf 에서 # client 설정의 패스워드 설정이 되어 있어야만 가능하다. 또한 # LegendO[PUTHOSTNAME_httpd]: Session: 은 # LegendO[PUTHOSTNAME_httpd]: Connection: 으로 설정을 해야 # 한다. # #Target[PUTHOSTNAME_httpd]: `/usr/bin/mrtg2/noprocess httpd` #Title[PUTHOSTNAME_httpd]: PUTHOSTNAME : HTTPd Information #MaxBytes[PUTHOSTNAME_httpd]: 1000 #AbsMax[PUTHOSTNAME_httpd]: 10000 #Options[PUTHOSTNAME_httpd]: gauge,integer, nopercent #WithPeak[PUTHOSTNAME_httpd]: my #YLegend[PUTHOSTNAME_httpd]: Number of HTTPd #ShortLegend[PUTHOSTNAME_httpd]: EA #LegendI[PUTHOSTNAME_httpd]: Process: #LegendO[PUTHOSTNAME_httpd]: Session: #Legend1[PUTHOSTNAME_httpd]: 5분간 평균 Process 수 #Legend2[PUTHOSTNAME_httpd]: 5분간 평균 Session 수 #Legend3[PUTHOSTNAME_httpd]: 5분간 최대 Process 수 #Legend4[PUTHOSTNAME_httpd]: 5분간 최대 Session 수 #YTicsFactor[PUTHOSTNAME_httpd]: 1 #PageTop[PUTHOSTNAME_httpd]: <H1>HTTPd for PUTHOSTNAME</H1> # <TABLE><TR><TD>System:</TD><TD>PUTHOSTNAME</TD></TR></TABLE> 이 부분은 http daemon의 process 수와 열려진 session 의 수를 측정을 한다. 현재 는 주석 처리가 되어 있으므로 그래프를 생성을 하려면 제일 앞열의 # 표시를 제거 를 해 주도록 한다. 또한 이 설정을 응용하면 다른 daemon 들의 프로세스와 열려진 세션을 구할수도 있 다. 다만 다른 daemon 들 까지 체크를 하려면 Target 에서 지정된 script들을 약간 수정해 줘야 한다. 수정을 하지 않고 사용할 수 있는 데몬으로는 httpd 와 ftpd가 있다. 만약 MySQL을 tcp/ip 로 접근을 하고 있다면 MySQL 역시 사용을 할수가 있다. ftpd 를 측정을 하기 위해서는 httpd 의 설정을 그대로 복사를 한뒤에 mrtg tag 를 일단 수정을 해 주고 Target, Title, YLegend만 수정을 하여 사용을 하면 된다. 다 음과 같이 수정을 해주면 무난 할 것이다. Target[host_ftpd] = `/usr/bin/mrtg2/noprocess ftpd` Title[host_ftpd] = hostname : FTPd Information YLegend[host_ftpd] = Number of FTPd 정도로만 변경을 해 주면 ftpd 의 graph는 바로 사용을 할수가 있다. MySQL 은 예제 설정 바로위의 주의 사항을 잘 읽어 보기 바란다. ## Disk Usage # # 총 디스크 양과 현재 사용량을 출력해줌. # Target 에서 disk device_name 의 형식으로 여러개를 지정할수도 있음 # MaxBytes 의 값은 df | grep devicename (옵션없이) 명령으로 알수가 있다. # #Target[PUTHOSTNAME_disk]: `/usr/bin/mrtg2/disk hda4` #Title[PUTHOSTNAME_disk]: PUTHOSTNAME: DISK USAGE #kilo[PUTHOSTNAME_disk]: 1024 #Unscaled[PUTHOSTNAME_disk]: dwym #Options[PUTHOSTNAME_disk]: gauge #LegendI[PUTHOSTNAME_disk]: home: #LegendO[PUTHOSTNAME_disk]: total: #Legend1[PUTHOSTNAME_disk]: /home #Legend2[PUTHOSTNAME_disk]: total #MaxBytes[PUTHOSTNAME_disk]: 15068496 #ShortLegend[PUTHOSTNAME_disk]: B #kMG[PUTHOSTNAME_disk]: K,M,G,T,P #PageTop[PUTHOSTNAME_disk]: <H1>PUTHOSTNAME: DISK USAGE</H1> # <TABLE><TR><TD>System:</TD><TD>PUTHOSTNAME</TD></TR></TABLE> 이 부분은 HDD 의 용량을 체크하는 설정이다. 이 부분은 각 system 마다 또는 각 관리자마다 측정을 원하는 device 가 틀리기 때문에 기본적으로 주석처리를 해서 배포가 된다. 일단 사용을 하기 위해서는 가장 앞열의 #표시를 제거해 줘야 한다. # 표시는 주석을 의미한다. 일단 HDD 용량 체크에서 설정을 해 줘야 할 부분은 Target 과 MaxBytes 만 설정을 해 주면 된다. 일단 target에서는 예제와 같이 원 하는 device 명을 제일 마지막에 적으면 된다. 만약 /home partition 을 측정 하 고 싶은데 /home 이 /dev/hdd4 에 mount되어 있다면 Target[mrtg_tag]: `/usr/bin/mrtg2/disk hdd4` 와 같이 지정을 하면 된다. 그리고 MaxBytes 의 값은 df 명령으로 해당 device의 1k-blocks 값을 적어 주면 된다. human readable 기능을 사용하여 보면 안된다. 순수하게 df 의 아무런 옵션 없이 실행시킨 값을 받아야 한다. 즉 hdd 의 용량을 kilobyte로 측정한 값을 넣어준다. 이것을 응용하여 이 설정에서 mrtg tag 와 Target, MaxBytes 값만 조정하여 몇개 의 partition을 측정할수 있다. 만약 커널 2.4 의 DevFS 를 사용하는 경우에는 df의 파티션 이름이 바뀌게 된다. 이때에는 만약 hda2 와 같은 파티션 이름를 안다면 위와같이 그대로 사용해도 무 방하나 만약 모르겠다면 마운트 포지션의 가장 마지막 디렉토리를 지정해 주면된 다. 아래의 예를 참고하라. shell> df -Ph Filesystem Size Used Avail Use% Mounted on /dev/ide/host0/bus0/target0/lun0/part3 3.4G 908M 2.4G 28% / /dev/ide/host0/bus0/target0/lun0/part2 61M 11M 48M 18% /boot /dev/ide/host0/bus0/target0/lun0/part5 16G 282M 16G 2% /var /dev/ide/host0/bus0/target0/lun0/part6 24G 19G 5.1G 79% /home /dev/ide/host0/bus0/target1/lun0/part2 38G 25G 14G 66% /home/ftproot tmpfs 251M 0 251M 0% /dev/shm 이경우 /dev/ide/host0/bus0/target1/lun0/part2 는 hdb2를 의미한다. 하지만 이 걸 모르겠다면 위의 설정에서 Target[PUTHOSTNAME_disk]: `/usr/bin/mrtg2/disk devfs ftproot$` 와 같이 지정하여 사용할수 있다. ## Memory Usage # # memory의 MaxBytes 는 free -b 로 알수가 있다. # Target[PUTHOSTNAME_mem]: `/usr/bin/mrtg2/memory` MaxBytes[PUTHOSTNAME_mem]: 529661952 Title[PUTHOSTNAME_mem]: PUTHOSTNAME: MEMORY USAGE Unscaled[PUTHOSTNAME_mem]: dwym kilo[PUTHOSTNAME_mem]: 1024 WithPeak[PUTHOSTNAME_mem]: my Options[PUTHOSTNAME_mem]: gauge YLegend[PUTHOSTNAME_mem]: Memory Usage LegendI[PUTHOSTNAME_mem]: Used: LegendO[PUTHOSTNAME_mem]: Cached: Legend1[PUTHOSTNAME_mem]: 5분간 평균 Used Memory Size Legend2[PUTHOSTNAME_mem]: 5분간 평균 Cached Memory Size Legend3[PUTHOSTNAME_mem]: 5분간 최대 Used Memory Size Legend4[PUTHOSTNAME_mem]: 5분간 최대 Cached Memory Size ShortLegend[PUTHOSTNAME_mem]: B PageTop[PUTHOSTNAME_mem]: <H1>PUTHOSTNAME: MEMORY USAGE (512MB)</H1> <TABLE><TR><TD>System:</TD><TD>PUTHOSTNAME</TD></TR></TABLE> Memory 사용량을 측정한다. 이 graph에서 free 명령에서의 used값은 이 graph 상 의 used + bufferd+cached 값이 합쳐진 값이다. 실제로 buffer와 cache값은 used 에서 빠져야 실제 메모리 사용량을 알 수가 있는 것이다. 즉 이 graph 에 나오는 used 값이 실제 메모리 사용량이라고 보면 된다. 혹시 free 명령으로 보았을때의 값과 틀리다고 생각하는 사람이 있을것을 대비해 미리 주석을 달아 놓는다. ### Swap Usage # # swap의 TotalBytes 는 free (옵션없이) 명령으로 알수가 있다. # Target[PUTHOSTNAME_swap]: `/usr/bin/mrtg2/swap` Title[PUTHOSTNAME_swap]: PUTHOSTNAME : Swap In VS Swap Out kilo[PUTHOSTNAME_swap]: 1024 MaxBytes[PUTHOSTNAME_swap]: 213815296 Options[PUTHOSTNAME_swap]: gauge, integer Unscaled[PUTHOSTNAME_swap]: dwym WithPeak[PUTHOSTNAME_swap]: my YLegend[PUTHOSTNAME_swap]: Swap Count ShortLegend[PUTHOSTNAME_swap]: B kMG[PUTHOSTNAME_swap]: K,M,G,T,P LegendI[PUTHOSTNAME_swap]: Swap In: LegendO[PUTHOSTNAME_swap]: Swap Out: Legend1[PUTHOSTNAME_swap]: 5분간 평균 Swap In Legend2[PUTHOSTNAME_swap]: 5분간 평균 Swap Out Legend3[PUTHOSTNAME_swap]: 5분간 최대 Swap In Legend4[PUTHOSTNAME_swap]: 5분간 최대 Swap Out PageTop[PUTHOSTNAME_swap]: <H1>Swap usage for PUTHOSTNAME</H1> <TABLE><TR><TD>System:</TD><TD>PUTHOSTNAME</TD></TR></TABLE> Swap in 과 out 을 측정한다. SWAP의 MaxBytes 는 free -b 명령으로 Swap의 값을 구할수 있으며 나머지는 수정 없이 그대로 사용을 하면 된다. ### % of I/O Usage # Target[PUTHOSTNAME_io]: `/usr/bin/mrtg2/io` Title[PUTHOSTNAME_io]: WORK.OOPS.ORG : Block In VS Block Out MaxBytes[PUTHOSTNAME_io]: 1000 Options[PUTHOSTNAME_io]: gauge, integer Unscaled[PUTHOSTNAME_io]: dwym WithPeak[PUTHOSTNAME_io]: my ShortLegend[PUTHOSTNAME_io]: Blocks/s YLegend[PUTHOSTNAME_io]: Block Count LegendO[PUTHOSTNAME_io]: Block In: LegendI[PUTHOSTNAME_io]: Block Out: Legend1[PUTHOSTNAME_io]: 5분간 평균 Block In Legend2[PUTHOSTNAME_io]: 5분간 평균 Block Out Legend3[PUTHOSTNAME_io]: 5분간 최대 Block In Legend4[PUTHOSTNAME_io]: 5분간 최대 Block Out Colours[PUTHOSTNAME_io]: 청색#BBBBFF, 적색#FFAAAA, 짙은청색#6666EE, 짙은적색#EE6666 PageTop[PUTHOSTNAME_io]: <H1>I/O usage for PUTHOSTNAME</H1> <TABLE><TR><TD>System:</TD><TD>PUTHOSTNAME</TD></TR></TABLE> I/O 의 Block in 과 out 을 측정한다. 수정 없이 그대로 사용을 하면 된다. [root@bbuwoo etc]$ |