rrdtool 사용하기

** rrdtool 사용하기

ㅇ rrdtool data 생성

참고 http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/manual/rrdcreate.html

rrdtool create httpd.rrd –step 300 \\

DS:httpd:GAUGE:600:U:U \\

DS:total:GAUGE:600:U:U \\

RRA:AVERAGE:0.5:1:600 \\

RRA:AVERAGE:0.5:6:700 \\

RRA:AVERAGE:0.5:24:775 \\

RRA:AVERAGE:0.5:288:750 \\

RRA:MAX:0.5:1:600 \\

RRA:MAX:0.5:6:700 \\

RRA:MAX:0.5:24:775 \\

RRA:MAX:0.5:288:750

–step|-s step (default: 300 seconds)
:  Specifies the base interval in seconds with which
data will be fed into the RRD.

GAUGE 값인 데이터소스 네임이 httpd 인것을 만듦

업데이트 최대시간간격 600초, 최대치와 최소치 정의 없음

5분동안의 평균데이터를 600회(5분*600=3000분=50시간)

6*5=30분동안의 평균데이터를 700회(30분*700=350시간=15일)

DS 의 자료타입

COUNTER : 연속 증가 (네트워크 트래픽등)

GAUGE : 표시값 (웹프로세서 갯수)

DERIVER : 증감값 (늘어나기도 하고 줄어들기도 함)

ABSOLUTE : 절대값

RRA:AVERAGE:0.5:1:600 \\

AVERAGE -> 계산할 수치 지정. 평균치, 최고치 등

나머지 필드 : 4번째(1)->계산에 사용할 수치 개수, 5번째(600)-> 보관해둘 데이터 갯수

ㅇ data update

#!/bin/sh

httpd_count=`ps auxw | grep httpd | wc -l | awk \'{print $1}\'`

total_count=`ps auxw | wc -l | awk \'{print $1}\'`

cd /var/www/html/test

/usr/local/rrdtool/bin/rrdtool update httpd.rrd \”N:$httpd_count:$total_count\”

위 스크립트 주기적으로 실행

** 제일 뒤에 awk 를 쓰는 것은 나온 결과에서 빈 공백을 처리하기 위해서임

rrdtool update rrdfile utim1:value1:value2:valuen

utime1 : unix time (N -> 현재시간)

valuen : 입력 데이터

ㅇ data 조회

rrdtool fetch test.rrd AVERAGE

ㅇ 그래프생성

/usr/local/rrdtool/bin/rrdtool graph httpd.gif \\

-i \\

–title \”httpd, total daemon count\” \\

–vertical-label count \\

-s -2d \\

-l 0 \\

DEF:totalcount=httpd.rrd:total:AVERAGE \\

LINE3:totalcount\\#FF0000:\”total process\” \\

GPRINT:totalcount:AVERAGE:\”(avg=%.01lf\” \\

GPRINT:totalcount:MAX:\”max=%.01lf)\\n\” \\

DEF:httpdcount=httpd.rrd:httpd:AVERAGE \\

CDEF:xhttpdcount=httpdcount,5,* \\

LINE2:xhttpdcount\\#0000FF:\”httpd\” \\

GPRINT:xhttpdcount:AVERAGE:\”(avg=%.01lf\” \\

GPRINT:xhttpdcount:MAX:\”max=%.01lf)\”

-s|–start seconds (기본 하루전) : 그래프 시작 시간. 3600(초단위. 1시간) 1h, 6h, 1day, 1week, 1month, 1year

-v|–vertical-label text : 그래프 왼쪽에 표시. 보통 단위

-w|–width pixels : 기본 400픽셀

-h|–height pixels : 기본 100픽셀

-i|–interlaced : 기본 false. interlace 옵션

-l|–lower-limit value : 기본 자동설정. 그래프 최하값 지정.

-t|–title text : 제목지정

–step value :

DEF:vname=rrd:ds-name:CF

CDEF:vname=rpn-expression

GPRINT:vname:CF:format

LINE{1|2|3}:vname : 그래프 그리기

AREA:vname : LINE과 비슷하지만 그래프안을 채워넣음

DEF(정의) 행으로 지정한 값 하나에 해당하는 그래프작성

CDEF 명령어를 사용해 새로은 그래프 변수 생성가능(RPN 표기법)

각변수에 대한 요약된 데이터는 GPRINT 사용 (%lf, ,%le . 여기서 l은 영문 소문자 엘임)

LINE2가 실제 그래프 형식 지정

** 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 포맷으로 뽑아준다. (출력 포맷 지정)

———- ———————————————————————–

** HotSaNIC

modules/

diagrams.pl : 그래프 그리기 프로그램

makeindex.pl : 통계결과 출력할 html 파일 생성

makerrd : rrd db 생성 (rrdtool create)

read-data.pl : 데이타 수집하기

running.pid : pid

settings : 환경설정파일

setup : settings 파일 만들기 스크립트 (초기화되고 backup 디렉토리에 이전 파일 복사함)

update : old-stype 의 db가 있는 경우 db를 업데이트하고 read-data.pl 다시 재생성하고 makeinex.pl  실행(html 파일 재생성)

rrd/ : rrd db 저장

** HotSaNIC는 기본 10초에 한번씩 샘플데이타를 가져온다. 이것은 하드코딩되어있는것같다.

http://hotsanic.sourceforge.net/readme.html#descr

Most tools had a minimum query-time of one minute, while i use a 10sec. timebase, which shows a lot more dynamics in the graphs.

rrdtimer source

    104

    105 ######################################################################

    106 #

    107 # the main loop executes all timed scripts:

    108 #

    109 # modules/*/read-data every >=10 sec. (hardcoded)

    110 # modules/*/diagrams every $DTIME

    111 # convert() every $CTIME if $CONVERTMETHOD is other than \”HTML\”

    112 # scan_for_modules() every $STIME

    113 #

    114 sub main_loop {


서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.