nagiosめも(check_log3)
webサーバのアクセスLOGから出力される
" 408
(ダブルクオートスペース408スペース)
を検知したい。
※この記事は事前にngiosサーバ、nrpeのインストールと設定が完了していることが前提。
nagiosexchangeで検索すると最近更新されたchek_log3というpluginがあったのでこれを使ってみる。
check_log2と比べると検知文字の検出回数指定やnegapatternのファイル読み込みなどができてなかなか高機能ぽい。
http://exchange.nagios.org/directory/Plugins/Log-Files/check_log3-2Epl/details
検知には監視対象機器のnrpe実行ユーザーで以下の権限が必要なので事前に準備しておく。
- 監視対象のLOGファイルの読み取りできること
- seekfileが存在しての読み書きできること
当初はnrpe.cfgに下記のように設定して実行してみたが正規表現とスペースがうまく処理できないようでうまく行かない。
command[check_log3]=/usr/local/nagios/libexec/check_log3.pl -l $ARG1$ -s $ARG2$ -c $ARG3$ -p $ARG4$
./check_nrpe -H localhost -c check_log3 -a /usr/local/nagios/etc/test.log /usr/local/nagios/etc/seek.file.test 3 "\"\ 408\ " CHECK_NRPE: Received 0 bytes from daemon. Check the remote server logs for error messages.
いろいろ弄った結果、以下の設定でうまく行った。
- nrpe.cfg(対象機器)
command[check_log3]=/usr/local/nagios/libexec/check_log3.pl $ARG1$ -c 3 -p "\"\ 408\ "
- service.cfg(監視サーバ)
check_command check_nrpe!check_log3!"-l /var/log/httpd/access.log -s /usr/local/nagios/etc/seek.file"
ARGを一つ一つ設定した場合に手動実行ではうまく行くのだがnagiosから実行するとなぜかうまく展開されなかったり、引数の順番を変えるとエラーがでたり内部処理はよくわからないままだが、上記のようにARGを一つにすると引き渡せた。
(nagiosからnrpeに渡される引数は""で囲まれて渡される?)
この設定だと対象機器側で更新が必要なので面倒だ。
nagiosサーバ側だけで完結する方法は無いものか。。。