teketeke_55の日記

技術メモとか

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サーバ側だけで完結する方法は無いものか。。。