Skip to content

MRTG 소스 설치

조회 수 24028 추천 수 0 2010.05.11 16:47:38

1. 준비작업
: mrtg 설치전에 gd, libpng, zlib 가 설치되어 있어야 된다.

   : 소수 다운 후 압축 풀고 /home/mrtg 로 옮긴다.
   # tar vzfx mrtg-2.9.29.tar.gz
   # mv mrtg-2.9.29.tar.gz /home/mrtg

   : mrtg 를 관리할 계정과 디렉토리를 생성하고 권한을 할당한다.
adduser mrtg
passwd mrtg
chmod 701 mrtg

   # ll
   total 4
   drwx-----x    4 mrtg     mrtg         4096 Aug 24 14:00 mrtg

mkdir cfg
mkdir www
   # chown -R mrtg:mrtg mrtg
   # ll
   total 8
   drwxr-xr-x    2 mrtg     mrtg         4096 Aug 24 14:00 cfg
   drwxr-xr-x    2 mrtg     mrtg         4096 Aug 24 14:00 www

 

2. 설치하기

./configure --prefix=/usr/local/mrtg \
                 --with-gd=/usr/local/gd \
                 --with-z=/usr/local/zlib \
                 --with-png=/usr/local/libpng
make
make install

 

3. cfg 파일 생성

./cfgmaker --global 'WorkDir: /home/mrtg/www' \
                --global 'Language: Korean' \
                --global 'Options[_]: bits,growright' \
                --output /home/mrtg/conf/mrtg.cfg         \
                public@220.85.43.5

   : paran(커뮤티니) 틀릴경우 mrtg 를 못 긁어 온다. snmpd.conf 에서 확인한다.

ls /home/mrtg/cfg/
   mrtg.cfg  mrtg.ok

 

4. index 페이지 만들기
  
   : 버전마다 옵션 주는 방법이 틀리기 때문에 꼭 확인이 필요하다.
   # ./indexmaker --output /home/mrtg/www/index.html /home/mrtg/cfg/mrtg.cfg

 

5. cron 설정
: 5분 마다 자동 실행되게 설정한다. crontab -e 를 입력한 후 아래 내용을 입력한다.

   # crontab -e*/5 * * * * /usr/local/mrtg/bin/mrtg /home/mrtg/cfg/mrtg.cfg
 

 

 

 


 
WorkDir: /home/mrtg/

Options[_]: growright, bits
 
## MRTG 설치하기 ##
## 2003.03.11 기술기획팀/대리 원승민

1)
##필요한 패키지 : 확인후 필요한 패키지는 설치하도록 한다.

ucd-snmp-devel-4.2.4-1
ucd-snmp-4.2.4-1
ucd-snmp-utils-4.2.4-1
gd-1.8.4-4
gd-devel-1.8.4-4
mrtg-2.9.6-6
perl-5.6.1-26.72.4
그리고 Apache 가 설치되있어야 한다.

2)
## snmpd.conf 의 내용이다. default 파일로 동작이 않되면 아래 내용을 그대로 사용한다.
------------------------------------------------------------------------------------
[root@baekdu snmp]# cat /etc/snmp/snmpd.conf
com2sec local  default public
#com2sec local     default       COMMUNITY
#com2sec local     localhost       COMMUNITY
#com2sec local     localhost       public
#com2sec local     localhost       COMMUNITY
#com2sec mynetwork NETWORK/24      COMMUNITY

group MyRWGroup v1         local
group MyRWGroup v2c        local
group MyRWGroup usm        local
group MyROGroup v1         mynetwork
group MyROGroup v2c        mynetwork
group MyROGroup usm        mynetwork

view all    included  .1                               80

access MyROGroup ""      any       noauth    exact  all    none   none
access MyRWGroup ""      any       noauth    exact  all    all    none

syslocation Right here, right now.
syscontact Me <root@kebia.net>

proc mountd

proc ntalkd 4

proc sendmail 10 1

exec echotest /bin/echo hello world

view mib2   included  .iso.org.dod.internet.mgmt.mib-2 fc

# Configuration for DISK Usage Analysis ##############
disk / 100000
disk /home 100000
disk /usr 100000
disk /var 100000
######################################################
# You can add the other partition for usage monitoring
######################################################

load 12 14 14
--------------------------------------------------------------------------------

3)
## snmpd 데몬을 실행후 snmp 가 제대로 동작하는지 확인한다.

[root@baekdu snmp]# snmpwalk localhost public system
.
.
.
system.sysORTable.sysOREntry.sysORUpTime.1 = Timeticks: (0) 0:00:00.00
system.sysORTable.sysOREntry.sysORUpTime.2 = Timeticks: (0) 0:00:00.00
system.sysORTable.sysOREntry.sysORUpTime.3 = Timeticks: (0) 0:00:00.00
system.sysORTable.sysOREntry.sysORUpTime.4 = Timeticks: (0) 0:00:00.00
system.sysORTable.sysOREntry.sysORUpTime.5 = Timeticks: (0) 0:00:00.00
system.sysORTable.sysOREntry.sysORUpTime.6 = Timeticks: (0) 0:00:00.00
system.sysORTable.sysOREntry.sysORUpTime.7 = Timeticks: (0) 0:00:00.00
system.sysORTable.sysOREntry.sysORUpTime.8 = Timeticks: (0) 0:00:00.00
system.sysORTable.sysOREntry.sysORUpTime.9 = Timeticks: (0) 0:00:00.00

끝부분이 위와같이 끝나면 정상 작동중이다.


## 이제부터 mrtg 를 주물러 보자.

4)
## 우선 cfgmaker 를 통해 기본 cfg 파일을 만들도록 한다.
## 생성된 파일을 바탕으로 여러가지 모니터링 설정을 만들도록 한다.
[root@baki bin]# ./cfgmaker --global 'WorkDir: /var/www/html/mrtg' --global 'Options[_]: bits,growright' --output /home/mrtg/baki.cfg
public@xxx.xxx.xxx.xxx
## workDir 과 output 에 관한 내용은 자신의 구미에 맞게 설정해 준도록 한다.

5)
## 이제 처음으로 mrtg를 실행해 보도록 한다.
[root@baekdu snmp]# mrtg /etc/mrtg/baki.cfg

몇가지 WARNING이 나오는데 신경쓸 필요가 없다.
이전 비교데이타가 없어서 나오는 메시지이다.
같은 명령을 몇번 실행하면 사라진다.

[root@baekdu snmp]# mrtg /etc/mrtg/baki.cfg
[root@baekdu snmp]# mrtg /etc/mrtg/baki.cfg
[root@baekdu snmp]# mrtg /etc/mrtg/baki.cfg

6) /var/www/html/mrtg/ 에 가보게 되면 baki와 관계된 여러개의 파을을 확인할수있다.

7) 이제 마지막으로 /etc/crontab 에 mrtg 를 등록한다.

0-59/5 * * * * root /usr/bin/mrtg /etc/mrtg/baki.cfg

그리고 crond 를 재실행 한다.

8) 개요 페이지 만들기
# 아래 예제파일처럼 링크가 많을경우 사용한다.
indexmaker -o /var/www/html/mrtg/index.html /etc/mrtg/baki.cfg

#########
######### 아래 내용은 cfg 파일의 예제이다.
#########
######### snmp 를 않쓰고 스키립트를 이용한 부분도 있다.
######### 마지막부분은 관련스크립트의 예제이다.

[root@baekdu snmp]# cat /etc/mrtg/system.cfg
------------------------------------------------------------------------------
## 작업 디렉토리
WorkDir: /var/www/html/mrtg

#IconDir: /mrtg/images
#Interval: 5

## 한글설정
Language: korean
Refresh: 300
Options[_]: growright

#
## baekdu - network traffic(eth0)
#

###
Target[baekdu.eth0]: 2:air_community@baekdu
#100M
#MaxBytes[baekdu.eth0]: 12500000
#10M
MaxBytes[baekdu.eth0]: 1250000
Unscaled[baekdu.eth0]: ymwd
Options[baekdu.eth0]: bits,growright
Title[baekdu.eth0]: Traffic Analysis : 100Mbyte
PageTop[baekdu.eth0]: <H1>Traffic Analysis</H1>
 <TABLE>
#   <TR><TD>Max Speed:</TD>  <TD>1250.0 kBytes/s</TD></TR>
#   <TR><TD>Max Speed:</TD>  <TD>100 Mbits/s</TD></TR>
#   <TR><TD>Ip:</TD>         <TD>218.55.101.158 ()</TD></TR>
 </TABLE>

#
## baekdu - load average
#
Target[baekdu.load]: .1.3.6.1.4.1.2021.10.1.3.2&.1.3.6.1.4.1.2021.10.1.3.3:air_community@localhost * 100
WithPeak[baekdu.load]: my
MaxBytes[baekdu.load]: 100
absMax[baekdu.load]: 10000
Unscaled[baekdu.load]: ymwd
Title[baekdu.load]: LOAD AVG.
Options[baekdu.load]: growright,gauge,integer,nopercent
YLegend[baekdu.load]: Load Average
LegendI[baekdu.load]: 5 min:
LegendO[baekdu.load]: 15 min:
Legend1[baekdu.load]: Load average for 5 Min
Legend2[baekdu.load]: Load average for 15 Min
Legend3[baekdu.load]: Max load average for 5 Min
Legend4[baekdu.load]: Max Load average for 15 Min
YTicsFactor[baekdu.load]: 1
PageTop[baekdu.load]: <H1>LOAD AVERAGE</H1>
 <TABLE>
#   <TR><TD>System:</TD>     <TD>AIRCUVE 개발서버</TD></TR>
#   <TR><TD>Maintainer:</TD> <TD>baki@aircuve.com</TD></TR>
 </TABLE>

#
## baekdu - cpu usage
#
#User & Idle
LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt
Target[baekdu.cpu1]:ssCpuRawUser.0&ssCpuRawIdle.0:air_community@localhost
MaxBytes[baekdu.cpu1]: 100
Title[baekdu.cpu1]: CPU LOAD : User & Idle
Unscaled[baekdu.cpu1]: ymwd
Options[baekdu.cpu1]: growright,nopercent
YLegend[baekdu.cpu1]: CPU Utilization
LegendI[baekdu.cpu1]:  User:
LegendO[baekdu.cpu1]:  Idle:
Legend1[baekdu.cpu1]: User CPU  in % (Load)
Legend2[baekdu.cpu1]: Idle CPU  in % (Load)
Legend3[baekdu.cpu1]:
Legend4[baekdu.cpu1]:
ShortLegend[baekdu.cpu1]: %
PageTop[baekdu.cpu1]: <H1>Active CPU Load : User & Idle %</H1>
 <TABLE>
#   <TR><TD>System:</TD>     <TD>AIRCUVE 개발서버</TD></TR>
#   <TR><TD>Maintainer:</TD> <TD>baki@aircuve.com</TD></TR>
#   <TR><TD>User & Idle</TD></TR>
 </TABLE>

#System & Nice
LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt
Target[baekdu.cpu2]:ssCpuRawSystem.0&ssCpuRawNice.0:air_community@localhost
MaxBytes[baekdu.cpu2]: 100
Title[baekdu.cpu2]: CPU LOAD : System & Nice
Unscaled[baekdu.cpu2]: ymwd
Options[baekdu.cpu2]: growright,nopercent
YLegend[baekdu.cpu2]: CPU Utilization
LegendI[baekdu.cpu2]:  System :
LegendO[baekdu.cpu2]:  Nice :
Legend1[baekdu.cpu2]: System CPU  in % (Load)
Legend2[baekdu.cpu2]: Nice CPU  in % (Load)
Legend3[baekdu.cpu2]:
Legend4[baekdu.cpu2]:
ShortLegend[baekdu.cpu2]: %
PageTop[baekdu.cpu2]: <H1>Active CPU Load : System & Nice %</H1>
 <TABLE>
#   <TR><TD>System:</TD>     <TD>AIRCUVE 개발서버</TD></TR>
#   <TR><TD>Maintainer:</TD> <TD>baki@aircuve.com</TD></TR>
#   <TR><TD>System & Nice</TD></TR>
 </TABLE>
#
## baekdu - memory usage
#
Target[baekdu.mem]: memAvailReal.0&memAvailReal.0:air_community@localhost * 1024 + memBuffer.0&memBuffer.0:air_community@localhost * 1024 + memCached.0&memCached.0:air_community@localhost * 1024

#### 서버에 맞게 설정
#MaxBytes[baekdu.mem]: 1052483584
MaxBytes[baekdu.mem]: 527654912
Title[baekdu.mem]: MEMORY USAGE(avalable = free+buffers+cached)
kilo[baekdu.mem]: 1024
Unscaled[baekdu.mem]: ymwd
Options[baekdu.mem]: growright,gauge, nopercent
YLegend[baekdu.mem]: Free Memory
LegendI[baekdu.mem]: Free Mem:&nbsp;
LegendO[baekdu.mem]:
Legend1[baekdu.mem]: Free Memory
Legend2[baekdu.mem]:
Legend3[baekdu.mem]:
Legend4[baekdu.mem]:
ShortLegend[baekdu.mem]: B
PageTop[baekdu.mem]: <H1>Free Memory Usage</H1>
 <TABLE>
#   <TR><TD>System:</TD>     <TD>AIRCUVE 개발서버</TD></TR>
#   <TR><TD>Maintainer:</TD> <TD>baki@aircuve.com</TD></TR>
#   <TR><TD>Free memory (Total - 512MB) : </TD>         <TD> Free + buffers + cached </TD></TR>
 </TABLE>

#
## baekdu - disk usage
#
# /, /home
#LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt
Target[baekdu.disk1]: `/etc/mrtg/script/disk1`
Title[baekdu.disk1]: / , /home DISK USAGE
Unscaled[baekdu.disk1]: ymwd
Options[baekdu.disk1]: growright,gauge,nopercent
YLegend[baekdu.disk1]: disk usage %
LegendI[baekdu.disk1]: / :&nbsp&nbsp&nbsp;
LegendO[baekdu.disk1]: /home :
Legend1[baekdu.disk1]: / Disk usage
Legend2[baekdu.disk1]: /home Disk usage
MaxBytes[baekdu.disk1]: 100
ShortLegend[baekdu.disk1]: %
PageTop[baekdu.disk1]: <H1>/ , /home DISK USAGE</H1>
 <TABLE>
#   <TR><TD>System:</TD>     <TD>AIRCUVE 개발서버</TD></TR>
#   <TR><TD>Maintainer:</TD> <TD>baki@aircuve.com</TD></TR>
#   <TR><TD>/ , /home</TD></TR>
 </TABLE>

# /usr, /var
Target[baekdu.disk2]: `/etc/mrtg/script/disk2`
Title[baekdu.disk2]: /usr , /var DISK USAGE
Unscaled[baekdu.disk2]: ymwd
Options[baekdu.disk2]: growright,gauge,nopercent
YLegend[baekdu.disk2]: disk usage %
LegendI[baekdu.disk2]: /usr :
LegendO[baekdu.disk2]: /var :
Legend1[baekdu.disk2]: /usr Disk usage
Legend2[baekdu.disk2]: /var Disk usage
MaxBytes[baekdu.disk2]: 100
ShortLegend[baekdu.disk2]: %
PageTop[baekdu.disk2]: <H1>/usr , /var DISK USAGE</H1>
 <TABLE>
#   <TR><TD>System:</TD>     <TD>AIRCUVE 개발서버</TD></TR>
#   <TR><TD>Maintainer:</TD> <TD>baki@aircuve.com</TD></TR>
#   <TR><TD>/usr , /var</TD></TR>
 </TABLE>

#
#RADIUS
#
# STATUS
Target[baekdu.radius1]: `/etc/mrtg/script/radius-stat`
Title[baekdu.radius1]: Running Radius Daemon
Unscaled[baekdu.radius1]: ymwd
Options[baekdu.radius1]: growright,gauge,nopercent
YLegend[baekdu.radius1]: Radius Daemons
LegendI[baekdu.radius1]: AGSwatch :&nbsp;
LegendO[baekdu.radius1]: AGSradiusd :
Legend1[baekdu.radius1]: AGSwatch
Legend2[baekdu.radius1]: AGSradiusd
MaxBytes[baekdu.radius1]: 50
ShortLegend[baekdu.radius1]: 개
PageTop[baekdu.radius1]: <H1>Running Radius Daemon</H1>
 <TABLE>
#   <TR><TD>System:</TD>     <TD>AIRCUVE 개발서버</TD></TR>
#   <TR><TD>Maintainer:</TD> <TD>baki@aircuve.com</TD></TR>
 </TABLE>

# STATUS
Target[baekdu.radius2]: `/etc/mrtg/script/radius-session`
Title[baekdu.radius2]: Radius Session Value
Unscaled[baekdu.radius2]: ymwd
Options[baekdu.radius2]: growright,gauge,nopercent
YLegend[baekdu.radius2]: session
LegendI[baekdu.radius2]: UDP Port 1812 :
LegendO[baekdu.radius2]: UDP Port 1813 :
Legend1[baekdu.radius2]: UDP Port 1812
Legend2[baekdu.radius2]: UDP Port 1813
MaxBytes[baekdu.radius2]: 1000
ShortLegend[baekdu.radius2]: 개
PageTop[baekdu.radius2]: <H1>Radius Session Value</H1>
 <TABLE>
#   <TR><TD>System:</TD>     <TD>AIRCUVE 개발서버</TD></TR>
#   <TR><TD>Maintainer:</TD> <TD>baki@aircuve.com</TD></TR>
 </TABLE>
-------------------------------------------------------------------------------

###### 스크립트 예제.

[root@baekdu script]# cat disk1
#!/bin/sh
#disk 사용율 / , /home
#df 로 각 파티션의 device name 입력.

ROOT="sda8"
HOME="sda3"
#IN : / : % value
/bin/df|grep $ROOT|/bin/awk '{print $5}'|/bin/awk -F % '{print $1}'
#OUT : /home : % value
/bin/df|grep $HOME|/bin/awk '{print $5}'|/bin/awk -F % '{print $1}'
#DATE : uptime
/usr/bin/uptime |awk '{print $3" "$4}'|awk -F , '{print $1}'
#OS NAME :
echo "LINUX"
-------------------------------------------------------------------

[root@baekdu script]# cat disk2
#!/bin/sh
#disk 사용율 /usr , /var
#df 로 각 파티션의 device name 입력.

ROOT="sda2"
HOME="sda5"
#IN : /usr : % value
/bin/df|grep $ROOT|/bin/awk '{print $5}'|/bin/awk -F % '{print $1}'
#OUT : /var : % value
/bin/df|grep $HOME|/bin/awk '{print $5}'|/bin/awk -F % '{print $1}'
#DATE : uptime
/usr/bin/uptime |awk '{print $3" "$4}'|awk -F , '{print $1}'
#OS NAME :
echo "LINUX"
-------------------------------------------------------------------

[root@baekdu script]# cat radius-session
#!/bin/sh
#radius 서버의 현재 session 숫자

SES1=`netstat -ant |grep ESTABLISHED |grep :1812|wc -l`
SES2=`netstat -ant |grep ESTABLISHED |grep :1813|wc -l`
TIME=`/bin/ps -aux|grep AGSwatch|awk '{print $9}'`
TIME1=$TIME" "start
echo $SES1
echo $SES2
echo $TIME1
echo "RADIUS"
-------------------------------------------------------------------

[root@baekdu script]# cat radius-stat
#!/bin/sh
#RADIUS daemon 상태 체크

WATCH=`ps -e |grep AGSwatch |wc -l`
RADIUS=`ps -e |grep AGSradiusd |wc -l`
TIME=`/usr/bin/uptime |awk '{print $3" "$4}'|awk -F , '{print $1}'`
OS=LINUX

echo $WATCH
echo $RADIUS
echo $TIME
echo $OS
-------------------------------------------------------------------

 

 

###
###
### 각 명령어나 설정파일에 대한 세부 내용은 man page 를 통해 확인 하거나
### 아래 링크를 참조하기 바란다...
###
###

그림은 http://tunelinux.pe.kr/mrtg/ 이것 보세요.

http://tunelinux.pe.kr
http://database.sarang.net
문태준(taejun@tunelinux.pe.kr)

## 참고자료
http://tunelinux.pe.kr/bbs/read.php?table=linuxinfo&no=18&o[at]=s&o[sc]=t&o[ss]=mrtg&o[st]=a
MRTG 사용법.

http://www.mrtg.co.kr/
MRTG에 대한 여러가지 관련자료를 잘 모아두었습니다. 시스템 모니터링 자료 있습니다.
SNMP와 스크립트를 같이 이용합니다.

http://www.wowlinux.co.kr/download/specialview.html?id=55&view=1
MRTG로 시스템 모니터링하는 방법에 대해 설명이 있습니다. SNMP이용합니다.

http://net-snmp.sourceforge.net
ucd-snmp 홈페이지입니다. 이젠 net-snmp로 이름이 바뀐듯 합니다.

http://net-snmp.sourceforge.net/tutorial/mrtg/
위 사이트에서 snmp와 mrtg 이용 시스템 모니터링 예제가 나옵니다.

http://www.oops.org/?t=lecture&sb=mrtg&n=1
mrtg 이용 시스템 모니터링 강좌글입니다.
mrtg를 rpm 패키징으로 묶어두고 사용하는 것인데 제 생각에는 강좌내용을 참고만 하고 직접 컴파일을 하여 쓰는게 더 낫지 않은가 합니다. 좀 헷갈리거든요. 여기서는 스크립트 이용한 방식입니다.

http://tunelinux.pe.kr/bbs/read.php?table=linuxinfo&no=26
네트워크 관리 시스템에 대한 글입니다. SNMP에 대해서 알고싶다면 많은 도움될 것입니다.

profile

일요일은 짜빠게뤼~ 먹는날~^^

엮인글 :
http://adminplay.com/12714/6ce/trackback
List of Articles
번호 제목 글쓴이 날짜 조회 수
207 [Flash] 크로스 도메인 설정 방법 ADMINPLAY 2010-08-31 24233
206 vi 이용한 파일내용 일괄변경 ADMINPLAY 2010-08-10 23491
205 리눅스 데몬의 종류 (서비스 종류) ADMINPLAY 2010-06-26 27007
204 리눅스에서 PATH 적용하여 전체 사용자 적용 ADMINPLAY 2010-06-11 23267
203 파일에 대한 기본 지식 [1] l2zeo 2010-05-29 19879
202 리눅스 파일/디렉토리 개수 알기 ADMINPLAY 2010-05-19 26207
201 메신저 프로그램 사용 포트 ADMINPLAY 2010-05-19 19181
» MRTG 소스 설치 ADMINPLAY 2010-05-11 24028
199 웹사이트 F5 키 막기 ADMINPLAY 2010-05-07 21068
198 TOP 프로그램에서 사용하는 기능키 ADMINPLAY 2010-05-04 19314
197 리눅스 패키지 정보 확인 ADMINPLAY 2010-05-03 27656
196 mount -o remount,rw / ADMINPLAY 2010-05-03 33793
195 [hdparm] 하드디스크 성능측정 file ADMINPLAY 2010-05-03 20469
194 리눅스에서 IP 할당하는 방법 ADMINPLAY 2010-05-03 21451
193 FFmpeg ADMINPLAY 2010-05-03 27917
192 FFMPEG를 가장쉽게 설치하는 방법(ffmpeg-php 등) ADMINPLAY 2010-05-03 66261
191 insmod,rnmod,lsmod,modprobe 명령어 ADMINPLAY 2010-05-02 27184
190 오라클11g 설치 (in centOS 5.1) ADMINPLAY 2010-04-28 24943
189 System V 메시지 큐(Message Queue), 세마포어(Semaphore)... ADMINPLAY 2010-04-28 27337
188 리눅스 공유 메모리의 설정 (세마포어) ADMINPLAY 2010-04-28 23950

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234