BBUWOO'S [ LIKE UNIX ] WORLD Home > Lecture > Mrtg > Mrtg-4  

HOME
WHAT's BBUWOO?
LInux AnNyung
Open Source
    GitHUB
    GitHUB (for PHP)
LECTURE
MINI LECTURE
QnA BOARD
ENGLISH POEM


WARNNING

강좌의 모든 권리는 본인 김정균에게 있으며 이 강좌를 상업적 목적 으로 이용
하거나 다른 곳으로 옮길시에는 본인의 허락이 있어야 한다. 이글의 가장 최신글은
http://oops.org 에서 확인할수 있다.



Usage of MRTG for System Resource

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 게시판을 통해 문의를 하기를
바란다.



>> 이전 : mrtg script 사용법



    



 Home > Lecture > Mrtg > Mrtg-4

Copyright 1997-2019 JoungKyun Kim 
LAST MODIFIED: 2017/01/20