nagiosでログ監視 check_logfiles

http://blog.enokawa.co/2015/07/27/nagios-nrpe-checklog2/

標準では「check_log」が付随していますが、どうも手抜き感があるので、「check_log3.pl」に差し替えます。
exabugsの雑記帳 Nagios ログ監視

check_logは対象ログをコピー、前回との差分をチェックする方法
対象ファイルのサイズが大きい場合などを考えると、seekで途中から読む方法が望ましい。

check_logfiles FreeBSD

seekで途中から読むもので FreeBSD にはcheck_logfilesがpkgにある

pkg install check_logfiles

/var/log/messages に "(httpd), uid 80: exited on signal" が出力された場合にcritical

/usr/local/libexec/nagios/check_logfiles --tag=httpd --logfile=/var/log/messages \
 --rotation LOGLOG0BZ2LOG1BZ2 --criticalpattern '\(httpd\), uid 80: exited on signal'

rotation は 以下が predefine されている。 (3.9)

LOGLOGDATE8GZ
LOGLOGDATE8BZ2
LOGLOG0LOG1GZ
LOGLOG0GZLOG1GZ
LOGLOG0BZ2LOG1BZ2
LOGLOG0LOG1
SUSE
DEBIAN
QMAIL
LOGROTATE
SOLARIS
HPUX
BMWHPUX
EHL
MOD_LOG_ROTATE

messagesは

/var/log/messages	/var/log/messages.1.bz2	/var/log/messages.3.bz2
/var/log/messages.0.bz2	/var/log/messages.2.bz2	/var/log/messages.4.bz2

なので --rotation LOGLOG0BZ2LOG1BZ2

例えば LOGLOG0LOG1GZ は logrotate の delaycompress (1世代目は圧縮しない) 時に使用する

logrotateの設定について - notebook

sudo -u nagios /usr/local/libexec/nagios/check_logfiles -v --tag=httpd --logfile=/var/log/messages \
 --rotation LOGLOG0BZ2LOG1BZ2 --criticalpattern '\(httpd\), uid 80: exited on signal'

※初回実行時はパターンに一致したログがあっても報告されない
※ -v verbose

/var/tmp/check_logfiles/ 以下に状態を保持するファイルができる

/var/tmp/check_logfiles/check_logfiles._var_log_messages.httpd


テスト

logger -p "kern.notice" -t "kernel" "TEST (httpd), uid 80: exited on signal 11"


/var/log/messagesにテスト用のログを出力

/usr/local/libexec/nagios/check_nrpe2 -H 127.0.0.1 -c check_logfiles

参考
(FreeBSD) cyrus-imapdのログが/var/log/messagesにたくさん出すぎ ~ /etc/syslog.confで調節 - ttt

・受動監視時は試行回数を1/1にしておけば、毎回1回目のNG時にnotificationが発動する。
ステータスが変化しない場合にも発動させる(is_volatileは有効に)。
Blog Alpha Networking: nagiosで分散監視

check_logfilesをubuntu(debian)にインストール
How to install check_logfiles on Ubuntu Linux to work with Nagios | by Ryan O’Donnell | Luma Consulting | Medium

Nagiosのチェックプラグインでroot権限が必要な場合の対応 - インフラエンジニアway - Powered by HEARTBEATS

/etc/sudoers.d/check_logfiles
Defaults:nagios !requiretty
nagios ALL=(ALL) NOPASSWD: /usr/local/nagios/libexec/check_logfiles