share facebook facebook twitter menu hatena pocket slack

2012.09.20 THU

Nagiosのログ監視で複数の除外キーワードや正規表現を使う(check_log3.pl)

鈴木 宏康

WRITTEN BY 鈴木 宏康

ログの監視をする際に、最初は一つのキーワードでマッチングさせるだけで十分だったものが、徐々に正規表現が必要になったり、除外キーワードが設定できるようになったりと変化していきます。
そして、その除外キーワードも複数指定する必要が出てきたりします。

そこで、上記が指定可能なNagiosプラグインのNagios Exchange – check_log3.plを利用してみました。

はじめに、下記のようにダウンロードします。

# cd /usr/lib64/nagios/plugins/
# curl -L http://downloads.sourceforge.net/project/pma-oss/nagios-plugins/check_log3.pl > check_log3.pl.tmp
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
100 14454  100 14454    0     0  18877      0 --:--:-- --:--:-- --:--:-- 18877

ただし、そのまま実行すると下記のようなエラーが発生してしまいます。

1.-bash: ./check_log3.pl: /usr/bin/perl^M: bad interpreter: そのようなファイルやディレクトリはありません

これは改行コードがWindowsのもの(CR+LF)になっているのが原因なので、下記のように¥rを削除しUnixのもの(LF)に変換します。

# tr -d "¥r"  check_log3.pl

そして、実行権限を付与することで利用できるようになります。

# chmod 755 check_log3.pl
# rm -f check_log3.pl.tmp

ヘルプは下記のようになります。

# ./check_log3.pl -h
check_log3.pl v3.0 (nagios-plugins 1.4.15)
The nagios plugins come with ABSOLUTELY NO WARRANTY. You may redistribute
copies of the plugins under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING.

This plugin scans arbitrary log files for regular expression matches.

Usage: check_log3.pl [ -h | --help ]
Usage: check_log3.pl [ -v | --version ]
Usage: check_log3.pl -l log_file -s seek_file -p pattern [-i] [-d] [-w warn_count] [-c crit_count] [-n negpattern | -f negpatternfile] [-e '{ eval block}' | -E filename]

-l, --logfile=
The log file to be scanned
-s, --seekfile=
The temporary file to store the seek position of the last scan
-p, --pattern=
The regular expression to scan for in the log file
-i, --case-insensitive
Do a case insensitive scan
-n, --negpattern=
The regular expression to skip in the log file
-f, --negpatternfile=>negpatternfile<
Specifies a file with regular expressions which all will be skipped
-w, --warning=
Return WARNING if at least this many matches found.  The default is 1.
-c, --critical=
Return CRITICAL if at least this many matches found.  The default is 0,
i.e. don't return critical alerts unless specified explicitly.
-d, --nodiff-warn
Return WARNING if the log file was not written to since the last scan
-D, --nodiff-crit
Return CRITICAL if the log was not written to since the last scan
-e, --parse
-E, --parse-file
Perl 'eval' block to parse each matched line with (EXPERIMENTAL).  The code
should be in curly brackets and quoted.  If the return code of the block is
non-zero, the line is counted against the threshold; otherwise it isn't.

Send email to nagios-users@lists.sourceforge.net if you have questions
regarding use of this software. To submit patches or suggest improvements,
send email to nagiosplug-devel@lists.sourceforge.net.
Please include version information with all correspondence (when possible,
use output from the --version option of the plugin itself).>

それでは、実際に利用してみます。
まずは、ログ中のaという文字を監視します。

# ./check_log3.pl -l /var/log/messages -s /var/log/messages.seek -p a
WARNING: Found 374 lines (limit=1/0): Sep  6 23:56:42 ip-10-0-0-63 dhclient[661]: bound to 10.0.0.63 -- renewal in 1594 seconds.

次は下記の除外キーワードファイルを作成し、bという文字が無い行のaという文字を監視します。

# cat test.exclude
b
# rm -f /var/log/messages.seek
# ./check_log3.pl -l /var/log/messages -s /var/log/messages.seek -p a -f ./test.exclude
WARNING: Found 83 lines (limit=1/0): Sep  6 17:54:08 ip-10-0-0-63 ntpd[763]: synchronized to 184.22.183.134, stratum 2

さらに下記のように、除外キーワードを複数行にすることで、複数の除外キーワード(bとc)のどちらも無い行のaという文字を監視することができます。

# cat test.exclude
b
c
# rm -f /var/log/messages.seek
# ./check_log3.pl -l /var/log/messages -s /var/log/messages.seek -p a -f ./test.exclude
WARNING: Found 54 lines (limit=1/0): Sep  6 14:17:42 ip-10-0-0-63 yum[1565]: Installed: nagios-plugins-all-1.4.15-7.el6.x86_64

これ以上は自作になるかと思います。

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。