2010夏のmemcachedシリーズもいよいよ最後となりました。
1歳8ヶ月のうちの息子も見ていた Shibuya Perl Mongersテクニカルトーク#14「IPAとJPAは違う団体です」でmemcachedの運用について発表をさせていただきました。今回は監視scriptの書き方やcronlog、Nagiosの設定tipsなどの内容にしました。memcachedの監視というよりかは一般的なノウハウ寄りだったかなと
監視の狭間問題の対策としてmemcachedのuptimeを見るscriptを紹介していますが、この問題はmemcachedには限りません。自動的に再起動してくるようなサービスで勝手に再起動した=何か問題が起きたと想定できる、例えばMySQLや /proc/sys/kernel/panic が設定されているLinuxにも同じような監視が必要になるでしょう。
MySQLであれば次のようなscriptで監視ができます。
#!/usr/bin/perl
use strict;
use warnings;
use Getopt::Long;
use DBI;
GetOptions(
'H=s' => \my $HOST,
'p=s' => \my $PORT,
'c=i' => \my $CRIT
);
my $dbh=DBI->connect("dbi:mysql:;host=$HOST;port=$PORT");
if ( !$dbh ) {
print "Couldnt connect to $HOST:$PORT: $DBI::errstr\n";
exit(3); ##UNKNOWN
}
my $row=$dbh->selectrow_arrayref(q!show global status like "Uptime"!);
if ( !$row ) {
print "Couldnt get status: $dbh->errstr\n";
exit(3); ##UNKNOWN
}
if ( $row->[1] <= $CRIT ) {
print "Uptime is less than $CRIT / Uptime: $row->[1]\n";
exit(2); ##CRITICAL
}
exit(0); ##OK
MySQL 4.x とかだと役にたつことがあることもある
さて、2週間後にはいよいよ YAPC::Asia 2010 です。最近ライブドアだけじゃなく某社とか某社でも使われているらしい CloudForecast についてしゃべります。追加発売もしているのでぜひチケット買ってね!!