RadarURL
Skip to content
조회 수 205 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄


4. MRTG Script 만들기
이  section 에서는 mrtg.cfg 의 Target 에서 지정한 script 들이 어떠한 원리로 만들
어 지는지를 설명하겠다.

MRTG는 상당히 복잡한 계산을 한다. WorkDir에 있는 log file을 보면 알겠지만 4 개의
필드를 이용해서 변화된 값들만 저장을 하게 된다.  이 로그 파일에 대해서 분석을 하
고 싶다면 http://www.mrtg.co.kr 의 기술 자료실의 1번 글을 참고하면 될것이다.

여기서는 이 로그파일을 분석하고 머리를 싸매는 일과는 상관이 없다.  로그파일을 분
석하는 일은 mrtg가 알아서 해 주는 것이고 mrtg가 로그파일을 생성 분석할 data 값만
mrtg로 넘겨 주는 일만 하면 되는 것이다.

mrtg 에게 data를 넘겨 주는 것은 생각외로 단순하다. mrtg의 경우에는

IN
OUT
DATE
OS NAME

의 형식으로만 값을 넘겨 주면 된다. 즉 쉘상에서 실행 했을 경우 아래와 같이 출력이
되면 되는 것이다.
 


 Hanterm 

 [root@bbuwoo mydir]$ /usr/bin/mrtg2/cpuinfo
  0
  1
  58 days
  linux
 [root@bbuwoo mydir]$
 


위의 경우는 cpu 사용량을 측정하는 스크립트의 출력 결과이다.  IN 과 OUT 의 개념은
mrtg 가 network 전송을 측정하는 것이 원 기능이기 때문에 receive와 transfer 의 값
을 기준으로 삼기 때문에 IN 과 OUT 으로 표현을 하는 것이고 이것을 이용하여 우리는
IN 값과 OUT 값에 적당한 값을 넣어주고  mrtg.cfg 에서 tag 들을 적절히 수정을 하여
이 패키지 처럼 출력을 하게 하는 것이다. 그럼 script 에 대해서 예를 들어서 분석을
해보도록 하겠다.

아래의 예는 loadaverage 를 구하는 script이다.
 


 Hanterm - cat /usr/bin/mrtg2/loadaverage 

 [root@bbuwoo etc]$ cat /usr/bin/mrtg2/loadaverage

  #!/bin/sh
  #
  # Scripted by JoungKyun Kim
  # 2001.2.15 http://oops.org
  # This Script follows GPL2 License

  # OS 를 지정
  OS=LINUX

  # uptime 경로
  UPTIME=/usr/bin/uptime

  # 서버 운영 시간
  DAYS=`$UPTIME | awk '{print $3" "$4}'`
  DAY=${DAYS%%,*}

  이 부분은 서버의 운영시간을 측정한다. uptime | awk '{print $3" "$4}' 를
  실행하면 uptime 결과중 58 days,  1:50, 부분만을 가져온다. 그리고 서버가
  부팅이 된지 하루가 안되었다면 1:50,  11 users 와 같이 가져올 것이다. 이
  결과값을 shell script의 파라미터 확장을 이용하여 ,다음의 모든 문자를 제
  거를 하도록 한다. 그럼 결과값은 58days 또는 1:50 이라는 부분만 남게된다.
  이것이 3번째 줄에 출력이 될 서버 운영시간을 구하는 것이다.

  이 루틴은 다른 부분에 그대로 적용을 해도 상관이 없을 것이다.

  TEMP0=`${UPTIME} | sed -e s/,//g`
  TEMP1=${TEMP0##*average:}

  이 부분은 uptime 명령에서 확인할수 있는 load average filed중 5분과 15분
  평균값만 골라 내도록 하는 부분이다. 그럼 하나씩 분석을 해보도록 하자

  먼저 uptime | sed -e s/,//g 의 결과값을 TEMP0 이라는 변수값으로 받는다.
  다음 TEMP0 의 결과값에서 average: 라는 문자열을 포함하여 앞을 모두 삭제
  하여 TEMP1 이라는 변수로 받는다.

  그럼 TEMP0 은 uptime 결과중 쉼표만 삭제할 체로
  3:41pm  up 58 days  1:57 11 users  load average: 0.00 0.00 0.00
  와 같이 변수값을 가지게 될것이고 TEMP1 은 위의 결과값에서 average: 앞의
  문자열을 모두 삭제한 0.00 0.00 0.00 만이 남게 될 것이다. 즉 5분 10분 15
  분의 average 만 남게 되는 것이다.

  여기서 set 명령을 이용하여 첫번째 field부터 $1, $2, $3 의 변수로 나누어
  준다. 즉 $1 은 5분간의 average가 되고 $3 은 15분간의 average 가 되는 것
  이다.

  FIVE=$1
  FIFT=$3

  # 5분 평균값
  echo ${FIVE}
  # 15분 평균값
  echo ${FIFT}
  echo $DAY
  echo $OS

 
  위와 같이 필요한 값을 구한 다음 차례대로 한줄씩 echo를 해 주면 되는것이다.
  IN OUT 개념이 헷갈릴지는 모르겠지만 이부분은 우리가 필요한 값을 출력을 해
  준 다음 mrtg.cfg 의 LegendO(output tag) 와 LegendI(input tag) 에서 적당한
  이름으로 대체를 해 주면 된다는것이다.

  exit 0

 [root@bbuwoo etc]$
 


위의 scritp 를 이용하면 여러가지를 측정할수가 있다. 물론 script 만 만드는건 상당
히 쉽다. (물론 script 에 대해서 해박한 지식을 가지고 있어야 할것이다.) 그리고 꼭
shell script로 만들 필요는 없다. 필자의 경우에는 shell 스크립트보다 php를 이용하
는 것이 더욱 간단하고 명확하게 만들수 있지만 package 로 배포를 하려다보니 누구나
설치만 하면 사용할수 있게 만들기 위해 shell script를 이용한 것 뿐이다. 아마 perl
을 php만큼만 할줄 알아도 perl로 만들었을 것이다. :-)

다만 내가 말하고자 하는 것은 스크립트를 만드는 것도 중요 하지만 실제로 중요한 것
은 mrtg.cfg 를 설정을 하는 것이다. 필자의 경우에도 script 를 만들어 놓고선 graph
를 제대로 표현을 하지 못해서 애를 많이 먹었었다. 이 부분에 대해서는 mrtg문서들을
꼼꼼히 읽어 보고 하기를 바란다. 필자가 알려주고 싶지만 필자도 꽁수로 이리저리 해
보고 안것이라서 글로서 표현을 하면서 알려주기에는 벅차기 때문이다.

5. 문의 사항이 있으면..?

문의 사항이 있으면 직접 해결 하든지 http://www.mrtg.co.kr를 이용하도록 하길 바란
다. 필자에게 문의를 해도 답변을 해 줄 능력이 없다. 위의 site의 경우 mrtg 에 대한
아주 자세한 자료들과 관리자 또한 해박한 지식을 보유하고 있으니 위의 site 를 이용
하기 바란다. 다만 여기서 배포하는 package를 사용함에 있어 결과값이 제대로 안나온
다든지 또는 package 에 대한 문제점이 발생할 경우 QnA 게시판을 통해 문의를 하기를
바란다.
 


4. MRTG Script 만들기

이  section 에서는 mrtg.cfg 의 Target 에서 지정한 script 들이 어떠한 원리로 만들
어 지는지를 설명하겠다.

MRTG는 상당히 복잡한 계산을 한다. WorkDir에 있는 log file을 보면 알겠지만 4 개의
필드를 이용해서 변화된 값들만 저장을 하게 된다.  이 로그 파일에 대해서 분석을 하
고 싶다면 http://www.mrtg.co.kr 의 기술 자료실의 1번 글을 참고하면 될것이다.

여기서는 이 로그파일을 분석하고 머리를 싸매는 일과는 상관이 없다.  로그파일을 분
석하는 일은 mrtg가 알아서 해 주는 것이고 mrtg가 로그파일을 생성 분석할 data 값만
mrtg로 넘겨 주는 일만 하면 되는 것이다.

mrtg 에게 data를 넘겨 주는 것은 생각외로 단순하다. mrtg의 경우에는

IN
OUT
DATE
OS NAME

의 형식으로만 값을 넘겨 주면 된다. 즉 쉘상에서 실행 했을 경우 아래와 같이 출력이
되면 되는 것이다.
 Hanterm

 [root@bbuwoo mydir]$ /usr/bin/mrtg2/cpuinfo
  0
  1
  58 days
  linux
 [root@bbuwoo mydir]$
위의 경우는 cpu 사용량을 측정하는 스크립트의 출력 결과이다.  IN 과 OUT 의 개념은
mrtg 가 network 전송을 측정하는 것이 원 기능이기 때문에 receive와 transfer 의 값
을 기준으로 삼기 때문에 IN 과 OUT 으로 표현을 하는 것이고 이것을 이용하여 우리는
IN 값과 OUT 값에 적당한 값을 넣어주고  mrtg.cfg 에서 tag 들을 적절히 수정을 하여
이 패키지 처럼 출력을 하게 하는 것이다. 그럼 script 에 대해서 예를 들어서 분석을
해보도록 하겠다.

아래의 예는 loadaverage 를 구하는 script이다.
 Hanterm - cat /usr/bin/mrtg2/loadaverage

 [root@bbuwoo etc]$ cat /usr/bin/mrtg2/loadaverage

  #!/bin/sh
  #
  # Scripted by JoungKyun Kim
  # 2001.2.15 http://oops.org
  # This Script follows GPL2 License

  # OS 를 지정
  OS=LINUX

  # uptime 경로
  UPTIME=/usr/bin/uptime

  # 서버 운영 시간
  DAYS=`$UPTIME | awk '{print $3" "$4}'`
  DAY=${DAYS%%,*}

  이 부분은 서버의 운영시간을 측정한다. uptime | awk '{print $3" "$4}' 를
  실행하면 uptime 결과중 58 days,  1:50, 부분만을 가져온다. 그리고 서버가
  부팅이 된지 하루가 안되었다면 1:50,  11 users 와 같이 가져올 것이다. 이
  결과값을 shell script의 파라미터 확장을 이용하여 ,다음의 모든 문자를 제
  거를 하도록 한다. 그럼 결과값은 58days 또는 1:50 이라는 부분만 남게된다.
  이것이 3번째 줄에 출력이 될 서버 운영시간을 구하는 것이다.

  이 루틴은 다른 부분에 그대로 적용을 해도 상관이 없을 것이다.

  TEMP0=`${UPTIME} | sed -e s/,//g`
  TEMP1=${TEMP0##*average:}

  이 부분은 uptime 명령에서 확인할수 있는 load average filed중 5분과 15분
  평균값만 골라 내도록 하는 부분이다. 그럼 하나씩 분석을 해보도록 하자

  먼저 uptime | sed -e s/,//g 의 결과값을 TEMP0 이라는 변수값으로 받는다.
  다음 TEMP0 의 결과값에서 average: 라는 문자열을 포함하여 앞을 모두 삭제
  하여 TEMP1 이라는 변수로 받는다.

  그럼 TEMP0 은 uptime 결과중 쉼표만 삭제할 체로
  3:41pm  up 58 days  1:57 11 users  load average: 0.00 0.00 0.00
  와 같이 변수값을 가지게 될것이고 TEMP1 은 위의 결과값에서 average: 앞의
  문자열을 모두 삭제한 0.00 0.00 0.00 만이 남게 될 것이다. 즉 5분 10분 15
  분의 average 만 남게 되는 것이다.

  여기서 set 명령을 이용하여 첫번째 field부터 $1, $2, $3 의 변수로 나누어
  준다. 즉 $1 은 5분간의 average가 되고 $3 은 15분간의 average 가 되는 것
  이다.

  FIVE=$1
  FIFT=$3

  # 5분 평균값
  echo ${FIVE}
  # 15분 평균값
  echo ${FIFT}
  echo $DAY
  echo $OS

  
  위와 같이 필요한 값을 구한 다음 차례대로 한줄씩 echo를 해 주면 되는것이다.
  IN OUT 개념이 헷갈릴지는 모르겠지만 이부분은 우리가 필요한 값을 출력을 해
  준 다음 mrtg.cfg 의 LegendO(output tag) 와 LegendI(input tag) 에서 적당한
  이름으로 대체를 해 주면 된다는것이다.

  exit 0

 [root@bbuwoo etc]$
위의 scritp 를 이용하면 여러가지를 측정할수가 있다. 물론 script 만 만드는건 상당
히 쉽다. (물론 script 에 대해서 해박한 지식을 가지고 있어야 할것이다.) 그리고 꼭
shell script로 만들 필요는 없다. 필자의 경우에는 shell 스크립트보다 php를 이용하
는 것이 더욱 간단하고 명확하게 만들수 있지만 package 로 배포를 하려다보니 누구나
설치만 하면 사용할수 있게 만들기 위해 shell script를 이용한 것 뿐이다. 아마 perl
을 php만큼만 할줄 알아도 perl로 만들었을 것이다. :-)

다만 내가 말하고자 하는 것은 스크립트를 만드는 것도 중요 하지만 실제로 중요한 것
은 mrtg.cfg 를 설정을 하는 것이다. 필자의 경우에도 script 를 만들어 놓고선 graph
를 제대로 표현을 하지 못해서 애를 많이 먹었었다. 이 부분에 대해서는 mrtg문서들을
꼼꼼히 읽어 보고 하기를 바란다. 필자가 알려주고 싶지만 필자도 꽁수로 이리저리 해
보고 안것이라서 글로서 표현을 하면서 알려주기에는 벅차기 때문이다.

5. 문의 사항이 있으면..?

문의 사항이 있으면 직접 해결 하든지 http://www.mrtg.co.kr를 이용하도록 하길 바란
다. 필자에게 문의를 해도 답변을 해 줄 능력이 없다. 위의 site의 경우 mrtg 에 대한
아주 자세한 자료들과 관리자 또한 해박한 지식을 보유하고 있으니 위의 site 를 이용
하기 바란다. 다만 여기서 배포하는 package를 사용함에 있어 결과값이 제대로 안나온
다든지 또는 package 에 대한 문제점이 발생할 경우 QnA 게시판을 통해 문의를 하기를
바란다.



출처 : http://oops.org/?&t=lecture&sb=mrtg&n=4

?

List of Articles
번호 제목 글쓴이 날짜 조회 수
124 SNMP 를 설정해 보자 (CentOS 5.6) JAESOO 2014.12.26 1277
123 [CentOS] MRTG를 설치하여 서버의 대역폭을 기록하자 JAESOO 2014.12.26 293
122 Using MRTG on Debian Stable (Sarge) JAESOO 2014.12.26 290
121 MRTG 구축 JAESOO 2014.12.26 255
» Usage of MRTG for System Resource #4 - MRTG Script 만들기 JAESOO 2014.12.26 205
119 Usage of MRTG for System Resource #3 - MRTG Script 사용법 JAESOO 2014.12.26 196
118 Usage of MRTG for System Resource #2 - mrtg.cfg 설정 JAESOO 2014.12.26 225
117 Usage of MRTG for System Resource #1 - mrtg 설치하기 JAESOO 2014.12.26 255
116 CentOS 5.0에 net-snmpd 설치 JAESOO 2014.12.26 364
115 리눅스로 MRTG 트래픽분석서버 구축 JAESOO 2014.12.26 299
114 ipv6 off 시키기 JAESOO 2014.12.26 137
113 mrtg 2.16.2 yum 설치 문서 JAESOO 2014.12.26 156
112 Linux MRTG 설치 (yum install) JAESOO 2014.12.26 383
111 웹서버 CentOS 6.5 MRTG 설치 JAESOO 2014.12.26 497
110 리눅스 - 디스크 검사 및 파일 시스템 복구 (badblocks, fsck) JAESOO 2014.12.26 3333
109 Linux에서 Disk(HDD) Check 하기 JAESOO 2014.12.26 350
108 UNIX, Linux fuser 사용법 (umount 옵션이 안될때 사용) JAESOO 2014.12.26 403
107 Linux 커널이 32bit 인가 64bit인가 확인하는 법 JAESOO 2014.12.22 191
106 crontab 설정확인 및 로그확인 JAESOO 2014.12.20 310
105 Centos GeoIP 설치 JAESOO 2014.12.20 159
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 Next
/ 10

PageViews   Today : 1,215   Yesterday : 2,331   Total : 19,853,421  /  Counter Status   Today : 430   Yesterday : 801   Total : 1,435,100
Site Info   Member : 237  /  Total documents : 1,223   New documents : 0  /  Total comments : 24

Edited by JAESOO

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소