muninを使って、USBRHで室内温度の警告をさせていたけど、 警告状態になった時の連続メールがうざいので、 スクリプトを間に入れたけど、動きがおかしいので、 監視を nagios3 にさせてみようと実験。
nagiosであれば、管理画面で警告メールの送信などを、Webで止めたりできる!!
nagios3 でチェックするには、check_XXXX といったプログラムが必要だけど、 USBRH では、自作する必要がある。普通ならperlを使うんだけど、 簡単な処理で、巨大なPerlインタプリタを実行するのは避けたい。 以前から、モジュール機能の無い「組み込み専用Perl」が無いかと、 物色していたけど、Lua というプログラム言語を見つけた。 というわけで、初めての Lua で、check_usbrh を作ってみた。
(( Luaインストール )) # aptitude install lua50 (( /etc/nagios3/my-plugins/check_usbrh )) #!/usr/bin/lua -- arg[1] warning -- arg[2] critical if table.getn(arg) < 2 then print( "UNKNOWN" ) os.exit( 3 ) else warning = tonumber( arg[1] ) critical = tonumber( arg[2] ) end fh = assert(io.popen("/usr/local/bin/usbrh","r")) temp = tonumber( fh:read("*n") ) hum = tonumber( fh:read("*n") ) fh:close() if temp >= critical then print( string.format( "USBRH CRITICAL - %4.2f,%4.2f%%" , temp , hum ) ) os.exit( 2 ) elseif temp >= warning then print( string.format( "USBRH WARNING - %4.2f,%4.2f%%" , temp , hum ) ) os.exit( 1 ) else print( string.format( "USBRH OK - %4.2f,%4.2f%%" , temp , hum ) ) os.exit( 0 ) end (( /etc/nagios-plugins/config/usbrh.cfg )) # 'check_usbrh' command definition define command{ command_name check_usbrh command_line /etc/nagios3/my-plugins/check_usbrh '$ARG1$' '$ARG2$' } (( /etc/nagios3/conf.d/localhost_nagios2.cfg )) # USBRH define service{ use generic-service host_name localhost service_description USBRH check_command check_usbrh!32!35 }
Lua 、こりゃ、ほんとに軽そうな言語。数値が絡んだら、awk とか使ったりしてたけど、 これならsh変わりにも使えそう。