RRD(Round Robin Database)란

Posted by 잿빛푸우 greypoooh@daum.net
2007.06.13 14:14 리눅스의 모든것
RRD(Round Robin Database)란

쉽게 얘기해서 RRD는 하나의 데이터베이스(database) 라고 할 수 있다. 또 다른 한편으로는 RRD는 우리가 이미 많이 알고 있는 MRTG 처럼 효과적인 그래프를 그릴 수 있도록 도와 주는도구(tool)라고 표현해도 좋다. 사실 문서에 보면 그 기원은 mrtg라고 표현하고 있고 또한 대부분의 사람들이 RRD는 mrtg 처럼 네트웍에 관련된 하나의 도구 정도로만생각하고 있는 경우도 있다. 하지만 이것은 조금 잘못된 생각이다. 어떠한 것이든지 그 조건에 맞는 요소(factor)만 있다면 관리자가 원하는 대로 훌륭한 그래프를 그릴 수 있다. 위의 한 문장을 조금 세분화해서 자세히 생각해보자.

여기에서 어떠한 것이든지 라는 말은 예를 들어 네트웍이 아닌 다른 자원 사용율 이나 혹은 변동률 등을 통계(statistics)를 통하여 그 결과를 한눈에 쉽게 알아볼 수 있다는 것 이다.그 조건에 맞는 요소는 무엇일까. 자원 사용율을 알려면 지속적으로 사용되어지는 무언가를 말할 것 이며 당연히 약간의 코딩(coding)이나 시스템 관리가 들어가 주어야 한다. 사실 코딩이라고 할 것도 없는 최대 몇백라인 안되는 내용들이지만 이 역시 필요한 요소 중의 하나이다. 또한 코딩이라고 해서 약간 어렵게 생각할지도 모르지만 어떠한 코딩 언어(language)이던 간에 구현이 가능 하므로 자신이 자신 있는 언어로 구축할 수 도 있다. 물론 요즘에 세간의 모든 사람들은 PHP를 쉽게 구현하고 모방을 통한 창조를 일상처럼 해오고 있다. 이에 발맞추어 PHP언어로도 RRD 는 구현이 가능하다. 마지막으로 훌륭한 그래프는 무엇을 말하는 것인가. 처음 Mrtg를 볼 때 만 해도 우리는 아주 괜찮은 훌륭한 프로그램으로 판단을 한다. 이리저리 굴려도 보고 다른 방법으로 표현을 하려고 애를 쓴다. 하지만 MRTG에서는 그래프의 표현한계가 있다. 단지 대상의 표현이 좁다는 것이다. 예를들어, 한 그래프에서 메모리의 모든 사용률이 표현이 가능할 수 있는지 생각을 해보면알 것 이다.메모리 사용된 양(used),남은양(free),버퍼의양(buffer),캐쉬된양(cache)등을 MRTG에서 표현한다면 단지 4가지 요소밖에 안됨에도 불구하고 앞의 두 가지와 뒤의 두 가지를 따로 두개의 그래프로 표현할 수밖에 없다. 편리하게 관리를 해주는 대신에 MRTG는 지극히 SNMPD를 통한 네트웍 관리를 위해 만들어진 기본적인프로그램임을 RRD를 하면서 우리는 쉽게 알 수 가있다. 물론 RRD도 역시 기원은 MRTG 에서 왔지만 그 확장성이 뛰어나 수많은 예제를 보면서 자신이 가지고 있는 기술로 많은 표현을 해낼 수 가 있다. 이미 만들어진 훌륭한 예제를 제공하는 사이트도 존재하고 실제로 만든 것 들을 보면 훌륭하게 잘 만들었지만 외국의 많은 사이트를 돌아다니면서 결국 필요한 것 은 자신이 자신의 환경에 맞추어 만든 것 을 제공할 것 이 아니라 어떠한 환경에서도 그와 같은 내용을 만들어 낼 수 있게 제공하는 기초적인 내용과 활용도 및 예제가 필요했다.

“ 물고기를 잡아주지 말고 물고기 잡는 법을 알려 주어야한다” 라는 사소한 한마디 가 여기에 딱 어울리는 말이었다. 여기에서도 지면 관계상 이 많은 내용을 모두 담지는 못한다. 필자가 해주는 것은 더 앞으로 나아갈 수 있게 기본적인 경험과 생소한 내용을 접했을 때 의 어려움을 피하게 해주는 정도일 것이다. 이것을 바탕으로 자신만이 가지고 있는 기술을 한층 더 높여야 할 것 이다. 그럼 어떻게 RRD가 움직이는지 간단하게 아래의 그림을 통해 알아보도록 하자.


우리가 알고 있는 데이터 베이스의 개념 과 마찬가지로 혹은 LDAP에서의 스키마를 만들어 내듯이 여기에서도 데이터베이스를 만들기 위해 일종의 스키마(schema)같은 형식의 문구를 만들어 내야한다. 자신이 표현하고자 하는 그래프를 어느 정도 예상을 한 후 그에 맞는 스키마를 만들어 데이터베이스를 생성 시킨다. 위의 그림에서는 'rrd create'에 해당한다. 그러면 일종의 테이블 형식을 갖춘 데이터베이스 가 생성이 되며 그 다음부터 계속해서 스키마에 맞는 새로운 내용을 데이터베이스에 입력한다.

그것을 여기에서는 ‘update‘ 라고 부른다. 즉, 위의 내용을 데이터베이스와 비교해 보면 좀 다르긴 하지만 이해는 조금 빠르지 않을까 싶다.



rrd create => 데이터베이스 생성/Table 생성

rrd upate => insert/update



위처럼 어설프게 매칭(matching)을 시켜볼 수 가있다. RRD를 위한 데이터베이스를 생성하고 계속해서 그 내용을 채워나가는 것 까지 되었다. 그중에서 'fetch' 를 할 수 도 있는데 이는 조건사항으로 시작과 끝나는 시간이 들어가 주어야 한다. 마지막으로 그 시간을 조건으로 다시 'graph'라는 개념으로 위의 쌓여있는 RRD 용 데이터베이스에서 원하는 그래프를 여러 가지 옵션을 주어 만들어 낼 수 도 있다.



그렇게 크게 어려운 개념은 아니지만 약간의 산술계산이 들어가 주어야 한다. 또한 그 산술계산에 맞게 스크립팅(scripting)또한 준비가 되어야 하므로 아마 조금 까다롭다고 할 수 도 있겠지만 조금만 더 진도를 나가도록 해보자.



✔ 알아두어야 할 기본사항들

RRD 는 처음 데이터베이스를 만드는 것부터 약간의 준비가 필요하다. 또한 그림을 예쁘게 혹은 자신의 입맛에 맞게 표현하려면 어느 정도 기초 다지기를 하여야 한다. 지금부터 적어가는 내용은 RRD 튜토리얼(tutorial)에 나와 있는 것으로써 지극히 요약과 기본적인 사항만을 이해하기 쉽게 바꾸었다. 또한 예제도 기본적인 예제는 그대로 사용하며 나중에 응용사항에 가서 몇 가지를 더 테스트 해보도록 한다. 약간의 번역(translation)성 과 필자의 생각을 혼용한 것이니 나중에 숙달이 되면 직접 원문을 읽어보는 것이 큰 도움이 되리라 생각한다.

참고할 RRD site

http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/

하나의 예제로 간단히 시작을 해보자. 자동차를 타고 간다고 생각을 해보자. 운전을 하면서 처음 과 두 번째 읽어 들인 시간과 거리수가 각각 아래와 같았다.

처음 읽어들인 시간 : 12:05

처음 읽어들인 거리 : 12345 (km)

두번째 읽어들인 시간 : 12:10

두번째 읽어들인 거리 : 12357 (km)

간단하게 생각을 해보자.5분 사이에 우리는 12 킬로미터(km) 를 온 셈이 된다. 이것을 다시 세분화 시켜서 킬로미터는 미터로 바꾸고 시간의 분(minute)는 초(second) 단위로 바꾸어서 생각을 하면 1200미터를 300초 동안에 움직인 셈이 된다. 이는 초당 40미터를 갔다는 것이다. 즉, 1200M/300S = 40M/S 인 것이다.

우리는 무엇을 얻을 려고 하는가를 잊지 말자. 우리는 초당 움직인 거리를 찾아본 것 이며 또한 만약 5분(300초)씩 계속해서 시간과 거리를 읽어 들여 기록을 한다면 그에 따르는 그래프는 나올 수 있다. 아주 기본적인 것이다.

위의 예제는 생활상의 간단한 예제 이다. 우리가 LDAP 이라는 것의 활용도를 생각해보면 알 수 있듯이 좁게 생각하지 않도록 한다.RRD 또한 여러 가지로의 표현이 가능하다는 것을 말하고 싶은 것 이다. 다른 예제로 네트웍에 관계된 얘기를 잠시 해보자. 초당 전송률인 BPS(bit per second)는 어떻게 측정이 될까? 아마 아래와 같이 계산이 될 것 이다.

( 현재 전송량 이전 전송량) / (현재시간 이전시간) * 8

위에서 이전 전송양과 이전시간은 측정을 연속적으로 했을 경우 바로 전단계의 값을 의미할 것이다. 이와같은 생각으로 계산을 해 나간다고 보면된다. 예를 들어 위의 첫 번째 이야기인 자동차는 5분마다 움직인 거리를 측정 하는 데에 아래처럼 그 시간과 의 관계를 간단히 표현해 볼 수 있다.

2003-09-09 12:05:00 12345 km

2003–09-09 12:10:00 12357 km

2003–09-09 12:15:00 12363 km

2003–09-09 12:20:00 12363 km

2003–09-09 12:25:00 12363 km

2003–09-09 12:30:00 12373 km

2003–09-09 12:35:00 12383 km

2003–09-09 12:40:00 12405 km

2003–09-09 12:45:00 12420 km

2003–09-09 12:50:00 12422 km

2003–09-09 12:55:00 12543 km

위의 내용으로 추측해 볼 수 있는 초당 움직인 거리를 구해 주는 계산기에 집어넣고증가폭을 추출해 내어 X,Y 축을 가지는 하나의 그래프로 만들어 내는 것 이다.

이런 것 은 이미 우리가 윈도우즈를 다룰 때 엑셀 에서도 많이 해본 것 들이다. 이것이 RRD를 생성 하는 데에 있어 가장 기본적인 상상력이다.

여기까지 간단하게 기본적인 개념을 잡고 실질적인 RRD 데이터베이스를 생성한다던가 아니면 업데이트 같은 내용들은 위의 예제와 접목을 시켜 뒤 소절에서 다시 언급을 하도록 하겠다.

✔ 설치

간단하게 어떻게 돌아 가는게 RRD인지를 알아보았으면 실질적으로 RRD 툴을 설치하는 것이 그다음 순서이다. 먼저 아래의 명령어대로 RRD 사이트에서 소스를 다운받도록 하자.

# wget http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/rrdtool-1.0.45.tar.gz
이 댓글을 비밀 댓글로