■ 2008年04月
-Linux Style- 2008年04月の記事を一括表示しています。
▼■ 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月11日(金) まさかの障害
■ まさかの障害
こんな時間にSSHリモート障害対応する羽目になるとは。
というか、MRTGの設定吹っ飛ばしただけなんだけど(笑)。
CPU温度、HDD温度、HDD使用率の表示が狂ってることに気づいたのが1時間ほど前・・・orz
/etc/mrtg/mrtg.cfg書き直しorz
明らかに変なログデータも削除(データの取り間違いのため意味がない)。
で、今に至る。
もう寝る・・・研究室だけど(死)。
▼ ▲■ 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
#まぁ、別に、自分の家の遊びサーバなんだからたいした問題にはならないんだけどさ。
一応。自己責任でお願いします。
というか、推奨しません。
てきとーに調べててきとーにやった内容を並べているだけですので(自分が試行錯誤した内容を整理したので、さらに違うんですがその辺は気のせい)。





