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変わりにも使えそう。