最近Nagiosと戯れています。前職でもちょっといじっていたので設定自体は楽チン。
ではない。とても面倒くさい。何を設定しなければいかわかっているだけに設定の
面倒くささに萎えます。機能的には満足なのだけど、もっとインストールが簡単にならないものか・・・。
とりあえず、ポート監視、Disk容量チェック、PostgreSQLチェック、プロセス稼動監視を
設定して、いつでもどこでも通知が来ちゃうよ!
さてさて、お題のNagiosプラグイン(check_tcp)ですが、出力される結果がどうにも不定です。
たとえば、普通の生きているサーバにチェックをかけた場合と、存在しないドメインにチェックを
かけようとした場合はこんな出力
$ /usr/local/nagios/libexec/check_tcp -H www.yahoo.co.jp -p 80
TCP OK - 0.017 second response time on port 80|time=0.016590s;;;0.000000;10.000000
$ /usr/local/nagios/libexec/check_tcp -H www.examdfasfdsaple.com -p 80
TCP CRITICAL - Invalid hostname, address or socket: www.examdfasfdsaple.com
この場合は、仕様どおりなので結果判別はしやすい。楽チンです。
でも、アクセスできないポートを監視した場合には、下記のよう。
$ /usr/local/nagios/libexec/check_tcp -H www.lowtech.ne.jp -p 9999
Connection refused
あれ、「TCP CRITICAL – …」じゃないの?
Nagios plug-in development guidelinesの2.1. Print only one line of textには戻り値の定義書いてあるんだけどなー。
困りました。でも、よくよくドキュメントを見直すと・・・
2.4. Plugin Return Codesに終了ステータスが数値で返ってくるとある。
ってことで、PHP的に書くとたとえば下記のようなことにして、$return_varを判別すればいいんじゃーん。
$ret = exec('/usr/local/nagios/libexec/check_tcp -H www.lowtech.ne.jp -p 80', $output, $return_var);
簡単でした。Plugin書くときも結果に応じてexit(0)とかexit(1)とかすればいいのねー。
Popular Posts:
- None Found