<< 2008年04月 >>
12345
6789101112
13141516171819
20212223242526
27282930

■ 独自ドメイン取得推奨

■ 2008年04月18日

-Linux Style- 2008年04月18日の記事です。

■ 2008年04月18日(金) CPU毎の使用率をMRTGで表示

CPU毎の使用率をMRTGで表示

MRTGでサーバの動作状況を閲覧できるようにしているサイトは数多くあり、mrtg.cfgの書き方に至るまで丁寧に解説してあるサイトは数多くあるわけですが、なかなかありそうでなかったのが、CPUの使用率を、マルチCPU時にCPU毎にグラフ表示させる方法。

sarコマンドを使用すれば、CPU毎の使用率がとれます。
sarコマンドは、Cent OS 5.1では、sysstatパッケージに入っています。

ということで、さくっとsysstatをyumでインストール。

sarコマンドの細かい使い方は割愛するとして、/etc/cron.d/sysstatを編集すれば、何分おきに更新とかも変更できます。
うちでは、MRTGは5分間隔で回してるので、そのタイミングとかぶらないようにという意味もこめて、
3-58/5 * * * * root /usr/lib/sa/sa1 1 1
と変更しました(確か標準は*/10 * * * *だったような)。
で、crond再起動。

で、次に、MRTGで読み込むためのスクリプトをPerlで書いてみた。

/usr/local/bin/cpu_sar.cgi
-------------------------------------------------
#!/usr/bin/perl

$machine = "マシン名"; #自分の環境に併せて直す
$cpu0_idle = `/usr/bin/sar -P 0`;
$cpu1_idle = `/usr/bin/sar -P 1`;

@cpu0 = split(/\n/, $cpu0_idle);
@cpu1 = split(/\n/, $cpu1_idle);


@data0 = split(/\s+/, $cpu0[$#cpu0-1]);
$cpu_idle0 = int($data0[7]+0.5);
$cpu_load0 = 100 - $cpu_idle0;

@data1 = split(/\s+/, $cpu1[$#cpu1-1]);
$cpu_idle1 = int($data1[7]+0.5);
$cpu_load1 = 100 - $cpu_idle1;

$utime = `uptime`;
$utime =~ /up(.*?),/;
$uptime = $1;
$uptime =~ s/^\s*//g;

print "$cpu_load0\n";
print "$cpu_load1\n";
print "$uptime\n";
print "$machine\n";
exit;
-------------------------------------------------

mrtg.cfgを編集。

/etc/mrtg/mrtg.cfg こんな感じで追記
-------------------------------------------------
### CPU utilization ###
Target[cpu_uti]: `perl /usr/local/bin/cpu_sar.cgi`
MaxBytes[cpu_uti]: 100
Unscaled[cpu_uti]: dwmy
Options[cpu_uti]: gauge, growright, noinfo, nopercent
YLegend[cpu_uti]: CPU utilization (%)
ShortLegend[cpu_uti]: (%)
LegendI[cpu_uti]: CPU0
LegendO[cpu_uti]: CPU1
Legend1[cpu_uti]: CPU0 utilization (%)
Legend2[cpu_uti]: CPU1 utilization (%)
Title[cpu_uti]: CPU utilization
PageTop[cpu_uti]: <h1>CPU utilization</h1>
-------------------------------------------------

で、index.htmlを更新して、ログ更新させればOK(その辺もめんどいので割愛)。

2008年04月18日の記事に関するコメント

この記事に関するコメントはまだ書かれていません。

■ コメントを書く

名前:

メール(任意):

URL(任意):

コメント:


認証(上の数字を入力)
削除キー(任意):