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

■ 独自ドメイン取得推奨

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(その辺もめんどいので割愛)。

04/18のコメント(0) 04/18の記事

2008年04月11日(金) まさかの障害

まさかの障害

こんな時間にSSHリモート障害対応する羽目になるとは。
というか、MRTGの設定吹っ飛ばしただけなんだけど(笑)。

CPU温度、HDD温度、HDD使用率の表示が狂ってることに気づいたのが1時間ほど前・・・orz

/etc/mrtg/mrtg.cfg書き直しorz
明らかに変なログデータも削除(データの取り間違いのため意味がない)。
で、今に至る。

もう寝る・・・研究室だけど(死)。

04/11のコメント(0) 04/11の記事

2008年04月10日(木) swapの高速化

swapの高速化

うちのサーバマシンは、RAID1構成でミラーリングをかけています。
当たり前のことですが、swapってファイル飛んで困るような大事なファイルを保存しているわけではないですよね。
ということで、今まで全パーティションをミラーリングしていたのですが、激しく無駄なので、高速化してみました。

#以下全作業rootで。

swapoff -a ←swapを一時的に停止
mdadm --manage --stop /dev/md3 ←swapがここにあった
fdisk /dev/sda ←SATAなので2台のHDDがそれぞれsdaとsdbになってる
→dコマンドで3を削除
→nコマンドで領域3を確保しなおす
→tコマンドで領域3を82(swap)に設定
→wコマンドで書き込んで終了
fdisk /dev/sdb
→dコマンドで3を削除
→nコマンドで領域3を確保しなおす
→tコマンドで領域3を82(swap)に設定
→wコマンドで書き込んで終了
mkswap /dev/sda3 ←swapとしてフォーマット
mkswap /dev/sdb3
vi /etc/fstab
→/dev/md3 swap swap defaults 0 0の行を削除
→/dev/sda3 swap swap defaults,pri=1 0 0と追加
→/dev/sdb3 swap swap defaults,pri=1 0 0と追加
→:wq 保存終了
swapon -a
で、用意しなおしたswap領域(/dev/sda3と/dev/sdb3)が同じ優先度で使われます。つまり、RAID0みたいな感じといえばいいのかな。
また、swapの全容量も倍になってます。
ということで、高速化が期待される、という話。

こんな作業を、何かあったときにすぐ対応できないところからSSHで行うあたり、俺ってだめだめな管理者だと思います。
何かトラブったらどうするんだろうw
#まぁ、別に、自分の家の遊びサーバなんだからたいした問題にはならないんだけどさ。

一応。自己責任でお願いします。
というか、推奨しません。
てきとーに調べててきとーにやった内容を並べているだけですので(自分が試行錯誤した内容を整理したので、さらに違うんですがその辺は気のせい)。

04/10のコメント(0) 04/10の記事

2007年12月19日(水) 1年以上気づいていなかったバグ

1年以上気づいていなかったバグ

Cafe Au Lait Serversと走らせているPHPスクリプトの基本は同じなのですが、こっちにだけバグがありました。
というか、最近コメントSPAMうぜぇなぁ、online casinoってなんだよ、と思ってたわけです。
CAPTCHA(もどき)画像認証をくぐり抜けてきやがるってどういうこと?
有人SPAMですか?とか思ってたわけです。
なんでそこで、画像認証自体がバグってると思わないんだ、俺。

・・・書き込み時に認証のエラーの有無を条件式入れ忘れてたorz

12/19のコメント(0) 12/19の記事

2007年12月15日(土) smartctl

smartctl

MRTGでHDDの温度監視をするために、smartctl(smartmontoolsパッケージ)を使っているわけですが、CentOS 5.1になってから、SMART情報が取れなくなった。
SATA HDDを使っているので、めんどーなのだが、-d ataは必須。
# smartctl -s on -o on -S on /dev/sda
# smartctl -i -d ata -a /dev/sda
で今までは取れてたんですけどねぇ。

ということで、
# smartctl -i -d ata -T permissive -a /dev/sda
にしてみたら取れました。
うーむw

ということで、cronで5分おきに回してるperlスクリプトを上記オプション追加で記述しなおしてみた。様子見w

#昼間にMAX 57℃まで到達してます。冬とはいえ、締め切った部屋はまずそうです(HDDのためには、55℃くらいまでが優しいらしいです)。
#窓あけるか・・・w

12/15のコメント(0) 12/15の記事