« swap領域を簡単に増やすには | HOME | rcp scp rsh などは »

MRTG で DISK I/O

DISK I/Oに関する情報は /proc/stat に入ってます。
これを使うのが一番手軽な方法かと・・
(ちなみに、カーネルによって/proc/statの場合と/proc/diskstatsの場合があります)


ローカルマシンが対象ならばこんなかんじでスクリプトをまず作ります。


#!/usr/bin/perl
use FileHandle;
my $fh = FileHandle->new("cat /proc/stat|");
while(<$fh>){
        if(/^disk_io: \([^(]+\([0-9]+,[0-9]+,([0-9]+),[0-9]+,([0-9]+)\)/) {
                print "$1\n";
                print "$2\n\n\n";
        }
}
close($fh);


リモートが対象ならば

#!/usr/bin/perl
open(SSH,"ssh 192.168.1.6 cat /proc/diskstats |");
while(<SSH>){
        if(/hda [0-9]+ [0-9]+ ([0-9]+) [0-9]+ [0-9]+ [0-9]+ ([0-9]+)/) {
        print "$1\n";
        print "$2\n\n\n";
    }
}
close(SSH);

sshで接続してるので、sshをパスワードなしで接続ここの様にしておく。


ちなみに上記はPerlで作成してありますが、何でもOKです。
いっそのことシェルで作っちゃってもOKよ。(その場合、MTRG.CFGの中に直接記述できます。)


上記Perlで数字が2行と改行2行の計4行出力されてればOK。

MTRG.CFGはこんな感じで書きます


Target[diskio192.168.1.59]: `/etc/mrtg/diskio-1.59.pl`
MaxBytes[diskio192.168.1.59]: 200
Title[diskio192.168.1.59]: Disk I/O
PageTop[diskio192.168.1.59]: <H1>Disk I/O on 1.59</H1>
YLegend[diskio192.168.1.59]: Disk I/O
ShortLegend[diskio192.168.1.59]: blocks/s
LegendI[diskio192.168.1.59]:read
LegendO[diskio192.168.1.59]:write



/proc/diskstats に関する情報

Field 1 -- # of reads issued
Field 2 -- # of reads merged
Field 3 -- # of sectors read
Field 4 -- # of milliseconds spent reading
Field 5 -- # of writes completed
Field 6 -- # of writes merged
Field 7 -- # of sectors written
Field 8 -- # of milliseconds spent writing
Field 9 -- # of I/Os currently in progress
Field 10 -- # of milliseconds spent doing I/Os
Field 11 -- weighted # of milliseconds spent doing I/Os

 

ハワイ旅行| サトピの子連れグアム旅行記| グアム旅行の情報サイト| ガーデニング|

Copyright (C) 2009 Anne Corporation. All Rights Reserved.