似たようなことは連続して起こるものですね。ってことで、なにやら前回とはまったく関係ない
今度はわれわれのサーバでディスク障害。ディスク自体はいきているらしいのですが、
read-onlyでmountされてたと報告が。
/varのパーティッションがread-onlyになると、エラーログがそもそも書き込めないので
Nagios とかでエラーログ監視してても意味ない。
syslogdを別サーバに立てて、そこに飛ばすようにすればいいじゃないっていう話だけど、
それって割と面倒じゃん?もっとロウテクにやる方法ないのかね。
ってことで、こんなスクリプト書いてみた。
check_dmsg
#!/usr/bin/php
<?php
exec('dmesg | grep "aborted"',$out, $ret);
exec('dmesg | grep "aborted" | wc -l',$num, $ret);
$line = "";
if(isset($out[0])) {
echo "CHECK_DMESG CRITICAL count=" . $num[0] . "line=" . $out[0] . "\n";
exit(3);
} else {
echo "CHECK_DMESG OK count=" . $num[0] . "\n";
exit(0);
}
?>
cronとかで単独で動かしてもいいしNagiosプラグインとしてNRPE経由で
監視してみるのもあり。
ロウテクではNagiosのNRPE経由で試しに監視を始めました。
前回の経験からdmesgでメモリの内容を取ってくればOKという認識なので
dmsgコマンドでgrepかけてるだけっす。どの文字列で検知するか迷ったけど
# dmesg | grep read-only
Write protecting the kernel read-only data: 1116k
read-only だと別のもとれちゃうしどうしようかなーと思って「aborted」を選択。
システムごとに文字列は変わる可能性があるのでそこは要調整かな。
いざというときしか発生しないので、発生したときに「あ、こっちじゃないと検知できてないいぃ」
って悲惨がありそう。ここはいろいろ情報収集して確実性を高めないといけないところですね。
あぁ、「I/O Error」のほうが無難だったかも。いいやどっちでも。
# check_dmesg -s "I/O Error"
とか自由に文字列変えてチェックできるようにすれば使いやすいな。
暇なときに作り変えようっと。
Popular Posts:
- None Found