RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
'rrdtool'에 해당되는 글 1
2009.07.24  RRDTOOL 1.2.X + HOTSANIC  

필요한 툴
rrdtool HotSaNIC libart_lgpl Perl freetype libpng


☞ rrdtool
http://oss.oetiker.ch/rrdtool/
# tar zxf rrdtool-1.2.23.tar.gz

# vi configure
 /usr/include/libart-2.0 -> /usr/local/include/libart-2.0
 /usr/include/freetype -> /usr/local/include/freetype

# ./configure --prefix=/usr/local/rrdtool --enable-perl-site-install --disable-python --disable-tcl (1.0.X와는 다르다)
# make
# make install

 

☞HotSaNIC
http://hotsanic.sourceforge.net/
# tar zxf hotsanic-0.5.0-pre5.gz  -C /usr/local/
# cd /usr/local/HotSaNIC
# ./setup.pl

이 후 필요한 설정을 체크한다.

OPTION

서비스명

설명

Y/N

APCUSV

APC UPS의 현황 (apcaccess 툴 사용) (APC UPS를 사용하지 않고 또한 있더라도 서버와 연결하여 모니터링중이 아니라면 N)

N

APPS

데몬, 응용프로그램별 프로세스 현황(프로세스 이름 별도 설정 필요)

Y

DISKIO

HDD(파티션별이 아님) 입출력

N

DNET

Distributed.Net관련 RC5, OGR,  DES, CSC

N

NETWORKS

네트워크 트래픽 (별도 설정 필요)

N

PART

사용량 파티션별

Y

PING

지정한 서버로 ping time 결과 (ping서버 설정 필요)

N

SENSORS

CPU, 마더보드 등의 온도, 전압등의 수치

N

SHOUTCAST

지정한 서버와 포트로의 스트링 현황 (서버, 포트 설정 필요

N

SYSTEM

시스템의 프로세스 수, CPU 사용률, load, 메모리 사용률

Y

TRAFFIC

네트워크 인터페이스별(eth0, ...) 트래픽(SNMP를 통해 라우터나 다른 서버의 트래픽도 모니터링 가능, 물론 이 때는 별도 설정 필요)

Y

WORMS

웹로그 파일을 이용한 님다, 코드레드 등의 웜 공격 건수(웹로그 경로 설정 필요. 문자열 지정으로 다른 웜 공격도 설정 가능)

N

 

# /usr/local/HotSaNIC/var/settings/

main : HotSaNIC 의 전반적인 설정이다. 파일을 적절하게 수정해준다
BINPATH="/usr/local/rrdtool/bin"  # rrdtool 의 bin 디렉토리 위치
WEBDIR="/data/www/rrdtool"       # rrdtool이 저장될 디렉토리. 즉, 웹서비스될 디렉토리
IMAGEFORMAT="png"                 # png를 추천

mod_apps : 모니터링할 데몬을 적는다 커널 2.4와 설정동일
                 APP:httpd,Apache Webserver
                 APP:mysqld,MySQL Database Server


mod_diskio : 디스크의 입출력 상태를 나타내는 모듈로 커널 2.6에서 수정이 필요하다
                disk io 를 나타내는 파일이 /proc/stat 에서 /proc/diskstats 로 변경됐다
                mod_diskio 는 KERNEL=2.6 이부분만 수정해주고 나머지 설정은 동일하다

 

# vi /usr/local/HotSaNIC/modules/diskio/platform/linux.pm
  package HotSaNICmod::OSdep;
  use RRDs;

  sub version {
    ($VERSION = '$Revision: 1.16 $') =~ s/.*(\d+\.\d+).*/$1/;
    my $platform;
    foreach (keys(%INC)) { $platform=$_ if $_ =~ /platform/; }
    return "$platform $VERSION";
  }
  sub sample {
    my %args=@_;

    @stats = ();
    if ($args{KERNEL} eq "2.6") {
    open FILE, "< /proc/diskstats";
      while (<FILE>) {
          chomp;
          push @stats, $_ if / [hs]d. /;
      }
      close FILE;
      foreach my $entry (@stats) {
          $entry =~ s/^\s*//;
          my ($num1,$num2,undef,$racc,$undef,$rblk,undef,$wacc,undef,$wblk,undef,undef,undef,undef) = split /\s+/, $entry;
          $num = $num1 . '_' . $num2;
          store_values($args{MODNAME},$num,$racc,$wacc,$rblk,$wblk,512);
      }
    } elsif ($args{KERNEL} eq "2.4") {
    #  disk_io: (8,0):(985065,41330,436455,943735,13075448) (8,1):(12563,6363,333604,6200,167608) (8,2):(11194,11012,90140,182,3160)
    open FILE,"/proc/stat";
    while (<FILE>) { (undef,@stats)=split if /disk_io/; }
    close FILE;
    foreach my $entry (@stats) {
       $entry=~ s/[()]//g;
       $entry=~ s/:/,/g;
       my ($num1,$num2,undef,$racc,$rblk,$wacc,$wblk)=split /,/,$entry;
       $num=$num1."_".$num2;
       store_values($args{MODNAME},$num,$racc,$wacc,$rblk,$wblk,512);
       }
    }
    elsif ($args{KERNEL} eq "2.2") {
    # disk 1494755 377215 221577 144318
    # disk_rio 564538 286941 151189 77490
    # disk_wio 930217 90274 70388 66828
    # disk_rblk 1129538 573882 302378 154980
    # disk_wblk 1860536 180548 140776 133656
    open FILE,"/proc/stat";
    while (<FILE>) {
       (undef,@readacc)=split if /disk_rio/;
       (undef,@writeacc)=split if /disk_wio/;
       (undef,@readblk)=split if /disk_rblk/;
       (undef,@writeblk)=split if /disk_wblk/;
       }
    close FILE;
    $num=0;
    while (@readacc) {
       $racc=shift @readacc;
       $wacc=shift @writeacc;
       $rblk=shift @readblk;
       $wblk=shift @writeblk;
       store_values($args{MODNAME},$num,$racc,$wacc,$rblk,$wblk,512);
      $num++;
       }
    }
    }
  sub store_values {
  my ($MODNAME,$drive,$racc,$wacc,$rblk,$wblk,$blksize)=@_;
  if ( ! -e "rrd/$drive.rrd" ) { system("./makerrd","$drive","U") }
  RRDs::update "rrd/$drive.rrd",time.":$racc:".($rblk*$blksize).":$wacc:".($wblk*$blksize);
  if ($ERROR = RRDs::error) { print time," ","$MODNAME: unable to update `$drive.rrd': $ERROR\n"; }
  }
 
mod_system : 시스템의 전반적인 내용이 추가한다.
메모리의 설정 저장 파일이 달라졌다. 하지만 이미 파일에 패치가 되어 있다. 현재 파일에 KERNEL=2.6 을 추가한다.
(가끔 interrupts 그래프가 안그려질때가 있다 그럴때는 /usr/local/HotSaNIC/modules/system/diagrams.pl

파일을 열어서 756 줄과 760 줄을 주석처리해본다 (맨앞에 # 붙이기) )

mod_sensors : 파일의 형식이 변경됐다
SENSOR=/sys/bus/i2c/devices/0-0290/temp_input1,1_temp1,M/B Temp,1,0.001,0,C
SENSOR=/sys/bus/i2c/devices/0-0290/temp_input2,2_temp2,CPU Temp,1,0.001,0,C
SENSOR=/sys/bus/i2c/devices/0-0290/temp_input3,3_temp3,Temp3,1,0.001,0,C
SENSOR=/sys/bus/i2c/devices/0-0290/fan_input3,4_fan3,fan3,1,1,0,RPM
SENSOR=/sys/bus/i2c/devices/0-0290/in_input0,5_in0,VCore 1,1,0.001,0,V
SENSOR=/sys/bus/i2c/devices/0-0290/in_input1,6_in1,VCore 2,1,0.001,0,V


실행

# ./makeindex.pl      (인덱스 파일을 만드는 데몬)
# ./rrdgraph start   (rrdtool을 실행하는 데몬)

# vi /etc/rc.d/rc.local
/usr/local/HotSaNIC/rrdgraph start


- 기본설정에 의해서 최초 이미지가 생성될려면 15분을 기다려야한다.
  (엑박이미지를 클릭해서 들어가면 세부이미지가 보일것이다 15분뒤에 새로고침을 눌러 확인하자)

- 24시간이 지나면 메인의 엑박들도 이미지로 보일것이다.
- 24시간전에 보고 싶으면 /usr/local/HotSaNIC/convert.pl 을 실행시킨다.


RRDtool 명령어
- HoSaNIC은 이미 정해진 모듈을 통해서 RRDtool을 다루는 것이다.
  시스템관리자가 원하는 데이터를 RRDtool로 직접 조작하여 통계용 이미지를 생성

- RRDtool용 자체 DB(일반적으로 .rrd로 지정)를 생성한다.(create) ->
- 데이터를 업데이트하거나 (update) 가져온다.(fetch) ->
- 이미지를 생성한다. (graph)

-- rrdtool 명령
- DB 생성, 이미지 생성은 모두 rrdtool/bin/rrdtool 명령을 통해서 한다.
- 형식 : rrdtool [명령] [명령 옵션...]
- 예   : rrdtool create  coffeenix_status.rrd DS:....

 

명령

설명

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

 

 

Trackback
Reply
우주곰:지구곰이 아닙니다.
지구곰이 아닙니다.
Categories (190)
Information (5)
About uzoogom (5)
My Advanced Linux (73)
Learning Linux (96)
OperatingSystem (5)
Databases (4)
OpenSource (1)
Tips! (1)
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31