スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Nagios ログ監視

Nagios ログ監視

Nagiosでのログ監視を考えます。

[前提]
CentOS6.4
Nagiosが動作していること
EPELのリポジトリを追加している。nagiosはyumでEPELからインストールした。


(1) 下準備

標準では「check_log」が付随していますが、どうも手抜き感があるので、「check_log3.pl」に差し替えます。
check_log3.pl ダウンロード

ここに配置。実行権限つける。
/usr/lib64/nagios/plugins/check_log3.pl


nagiosユーザでログを参照できるように、sudoers.dに以下のファイルを追加

/etc/sudoers.d/nagios
Defaults:nagios !requiretty
nagios ALL=NOPASSWD:/usr/lib64/nagios/plugins/check_log3.pl


うまくいくかテスト。-p は正規表現が使える。
# sudo -u nagios sudo /usr/lib64/nagios/plugins/check_log3.pl -l /var/log/messages -s /tmp/_messages -p "(warn|error)"
OK - No matches found.|lines=0



(2) Nagiosの設定追加

コマンド定義
define command{
command_name check_log
command_line sudo $USER1$/check_log3.pl -l $ARG1$ -s $ARG2$ -p $ARG3$
}


サービス定義
define service{
use generic-service
name check-log-service
is_volatile 1
max_check_attempts 1
flap_detection_enabled 0
notification_options w,u,c
register 0
}

define service{
use check-log-service
hostgroup_name linux-servers
service_description var_log_messages
check_command check_log!/var/log/messages!/tmp/_messages!"(warn|error)"
}

※ hostgroup_name は環境に合わせて。

nagiosを再起動して完成。

(3) リモートのログ監視は次回につづく


(付録) ここからは趣味

シークファイル(-s hogehoge)を毎回指定するのは面倒なので、プログラムで勝手に決めるようにする。

check_log3.plの277行目あたり($seek_fileの引数チェック前)に、以下をいれちゃう。
# Seek_file defined by program.
my $seek_dir = "/tmp/nagios";
mkdir $seek_dir;
$seek_file = $log_file;
$seek_file =~ s:/:_:g;
$seek_file = "$seek_dir/$seek_file";


シークファイルの指定が不要になって、あぁ、スッキリした。
define command{
command_name check_log
command_line sudo $USER1$/check_log3.pl -l $ARG1$ -p $ARG2$
}

define service{
use check-log-service
hostgroup_name linux-servers
service_description var_log_messages
check_command check_log!/var/log/messages!"(warn|error)"
}


スポンサーサイト

コメントの投稿

非公開コメント

検索フォーム
RSSリンクの表示
リンク
exabugsをフォローしましょう
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。