日記+コメント付きブックマーク+他人にも役に立つかもしれない情報など。
(更新情報: RSS(ツッコミ付き) / RSS(ツッコミ抜き) / LIRS)
- p (01/03)
- Thiramil (10/26)
- 久々にいまむらを食べたい通りすがり (09/28)
- Fluxadir (05/16)
- Antiprestin (11/08)
2008/04/08
_ [システム運用][Perl] Perl で Load Average メモ
まぁ、システムっても、uptime 結果をこちょこちょと文字列操作して、直近1分の Load Average の値を取得してるだけなんですけどね。
具体的には↓な感じ。
my $exe_uptime= `/usr/bin/uptime`;
(undef, undef, undef, my $strtmp, undef) = split (/,/, $exe_uptime);
(undef, my $LA1) = split (/:/, $strtmp);
$LA1=~ s/\s+//;
[Load Average 48 とか、どんだけー。より引用]
直近の Load Average を知りたいだけなら、uptime を叩くより /proc/loadavg を直接読んだ方が簡潔で良さげ。
open my $fh, '/proc/loadavg'; my ($LA1) = split ' ', <$fh>; close $fh;
perl のモジュールで、こういうシステム値を取得してくれるのって、あるのかな?
[Load Average 48 とか、どんだけー。より引用]
気になったので探してみたところ、Sys::Statistics::Linux らしい。
files => { loadavg => '/proc/loadavg', }
(中略)
open my $fh, '<', $file->{loadavg} or croak "$class: unable to open $file->{loadavg} ($!)";
( $lavg{avg_1}, $lavg{avg_5}, $lavg{avg_15} ) = (split /\s+/, <$fh>)[0..2];
close($fh);
[Sys::Statistics::Linux::LoadAVG 0.34より引用]
これも /proc/loadavg を \s+ で split するという実装のようだ。
ついでに Load Average の変化を継続的に見るなら (sysstat パッケージをインストールして) sar -q で。(@IT:障害の兆候を見逃さないためのサーバ監視(2/3))