LoginSignup
13

More than 5 years have passed since last update.

Nagiosメモ - シンプルなログ監視

Last updated at Posted at 2015-07-14

     imgres.jpg

◎はじめに

・Nagiosのログ監視に関しまして、ちょっとしたノウハウになります。

■検証環境

[root@mitzi_develop ~]# cat /etc/issue
Amazon Linux AMI release 2014.09

[root@mitzi_develop ~]# uname -r
3.14.33-26.47.amzn1.x86_64

■検証に必要なもの

▽監視対象クライアントへ下記実装
・NRPE
・Nagios Plugin 「check_log3」

▽監視対象
・Nagios Server ←コチラは別途用意してあることを前提として進めます。

◎導入 (監視対象クライアント)

■NRPE と 最低限必要なpluginをインストール

・監視対象のクライアントへ以下インストール

[root@mitzi_develop ~]# yum install nagios-plugins-nrpe nrpe
===================================================================================
 Package                                  Arch                        Version                                  Repository                      Size
===================================================================================
Installing:
 nagios-plugins-nrpe                      x86_64                      2.15-2.7.amzn1                           amzn-main                       25 k
 nrpe                                     x86_64                      2.15-2.7.amzn1                           amzn-main                      229 k
Installing for dependencies:
 nagios-common                            x86_64                      3.5.1-1.8.amzn1                          amzn-main                       18 k
 nagios-plugins                           x86_64                      1.4.16-5.8.amzn1                         amzn-main                      233 k

Transaction Summary
===================================================================================
Install  2 Package (+2 Dependent packages)
[root@mitzi_develop ~]# ls -l /usr/lib64/nagios/plugins/
total 104
-rwxr-xr-x 1 root root 20488 Jun 26  2014 check_nrpe
-rwxr-xr-x 1 root root 38024 Sep 24  2013 negate
-rwxr-xr-x 1 root root 36136 Sep 24  2013 urlize
-rwxr-xr-x 1 root root  2728 Sep 24  2013 utils.sh

■Nagios Plugin 「check_log3」格納

    Nagios.png

https://exchange.nagios.org/directory/Plugins/Log-Files/check_log3-2Epl/details
・Filesより、「check_log3.pl」をダウンロード
・WinSCPなどを利用してサーバにアップロード

[root@mitzi_develop ~]# mv /home/ec2-user/check_log3.pl /usr/lib64/nagios/plugins/check_log3
[root@mitzi_develop ~]# chmod 755 /usr/lib64/nagios/plugins/check_log3

※他pluginに合わせて拡張子を外しています

◎plugin動作確認01

■エラー出ます

[root@mitzi_develop ~]# /usr/lib64/nagios/plugins/check_log3 --help
Can't locate utils.pm in @INC (@INC contains: /usr/local/nagios/libexec /usr/local/libexec/nagios /usr/lib64/nagios/plugins /usr/lib/nagios/plugins /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/lib64/nagios/plugins/check_log3 line 355.
BEGIN failed--compilation aborted at /usr/lib64/nagios/plugins/check_log3 line 355.

 ↓上記エラーが出たら、plugin動作に必要なパッケージ群をインストール

[root@mitzi_develop ~]# yum install nagios-plugins-all
===================================================================================
 Package                                      Arch                       Version                                Repository                     Size
===================================================================================
Installing:
 nagios-plugins-all                           x86_64                     1.4.16-5.8.amzn1                       amzn-main                      13 k
Installing for dependencies:
 libtirpc                                     x86_64                     0.2.4-0.3.13.amzn1                     amzn-main                      89 k

(省略)

◎plugin動作確認02

■check_log3が正常に動くことを確認

[root@mitzi_develop ~]# /usr/lib64/nagios/plugins/check_log3 --help
This is check_log3 version 3.11b

Usage: check_log3 [ -h | --help ]
Usage: check_log3 [ -v | --version ]
Usage: check_log3 [ -v | --list-encodings ]
Usage: check_log3 -l log_file | log_directory [ -s seek_file | seek_base_dir ]
        ( [ -m glob-pattern ] [ -t most_recent|first_match|last_match ] [ --timestamp=time-spec ] )
        -p pattern [ -p pattern ... ] | -P patternfile [ -n negpattern | -f negpatternfile ]
        [ --input-enc=encoding ] [ --output-enc=encoding ] [ --crlf ]
        [ --missing=STATE [ --missing-msg=message ] ]
        [ --ok ] | ( [ -w warn_count ] [ -c crit_count ] [ --negate ] )
        [ -i ]  [-d | -D ] [ -1 ] [ -a ] [ -C [-|+]n ] [ -q ] [ -Q ]
        [ -e '{ eval block }' | -E script_file ]

(省略)

◎ログ監視設定01

■NRPEの設定

[root@mitzi_develop ~]# cp -p /etc/nagios/nrpe.cfg /etc/nagios/nrpe.cfg.org
[root@mitzi_develop ~]# vi /etc/nagios/nrpe.cfg
-----
#allowed_hosts=127.0.0.1 ←コメントアウト

#dont_blame_nrpe=0
dont_blame_nrpe=1 ←有効化

command[check_log3]=/usr/lib64/nagios/plugins/check_log3 -l $ARG1$ -s $ARG2$ -P $ARG3$ -f $ARG4$ -c $ARG5$ -i ←追記
command[check_log3w]=/usr/lib64/nagios/plugins/check_log3 -l $ARG1$ -s $ARG2$ -P $ARG3$ -f $ARG4$ -w $ARG5$ -i ←追記

■補足

・check_log3は様々なオプションが用意されていますが、シンプルかつ使い勝手のよい上記設定をご紹介します。

・今回特に紹介したいのは下記オプション

-P: パターンファイルを参照する
-i: チェック文字列の大文字小文字を区別しない

・その他オプション

-l: 監視対象ログファイル
-s: seekファイル
-f: 除外キーワードファイル
-c: critical扱いとする
-w: warning扱いとする

■NRPE起動

[root@mitzi_develop ~]# service nrpe start
[root@mitzi_develop ~]# chkconfig nrpe on

■ポート開放

下記ポートにNagios Serverがアクセス出来るよう設定

・icmp(全ポート)
・NRPE(5666番ポート)

◎ログ監視設定02

■監視に必要なファイルの用意、設定

・NRPEに設定した上記コマンド。それらへの引数となるファイルを用意する。
※下記はいずれも一例になります。

①ログファイル

・NRPEが読み取れるよう読み取り権限を付与する。

# chmod 644 /var/log/test.log
※基本的にはchmodではなく、ログ出力やログローテートなどにて権限を付与するよう設定する。

②seekファイルの配置

・check_log3 がどこまでログを走査したかを記録するファイル

# mkdir /etc/nagios/seek
# echo 0 > /etc/nagios/seek/test.seek

・読み書き権限付与

# chmod 666 /etc/nagios/seek/*.seek

・seekファイルを1日一回クリアするcronを設定する
(ログローテートのタイミングに合わせて下さい)

# crontab -e
---
1 0 * * * /bin/echo "0" > /etc/nagios/seek/test.seek >/dev/null 2>&1

・確認

# crontab -l

③キーワードファイルの配置

# mkdir /etc/nagios/keyword
# echo 'WARN|CRIT|ERROR|FAIL|mitzi error' > /etc/nagios/keyword/test-keyword
※パイプで繋ぐことで複数のキーワードを指定出来る ←ポイント(★1 後述します)

④除外キーワードファイル設定

# vi /etc/nagios/seek/test.exclude
---
log_default_
shadowWarning
/warning
WARN:\{"returnUrlResult":\{\}\,"data":\{"status":"ERROR"\,"temperature":

※上記のように除外キーワードを改行で追記してゆく
※除外キーワードファイルの拡張子およびファイル名はなんでも構いません

・パーミッション変更

# chmod 644 /etc/nagios/seek/*.exclude

◎ログ監視設定の補足

■エスケープ対象文字

.  ドット
,  カンマ
{} カッコ
[] カッコ
#  イゲタ
   スペース

★1) 我々のところでは、Nagios ServerからNRPE経由でcheck_log3を叩きログ監視を行っていました。その際、NagiosよりキーワードファイルをNRPEに渡していたのですが、上記文言がキーワードに含まれていると、うまく受け渡すことが出来ず、正常に監視が出来ませんでした。

・NRPE側の設定にキーワードを直接埋め込むことで暫定対処としていた時もありました↓

command[check_log3_plus_w]=/usr/lib64/nagios/plugins/check_log3 $ARG1$ -w 1 -p "warning keyword"
command[check_log3_plus_c]=/usr/lib64/nagios/plugins/check_log3 $ARG1$ -c 1 -p "critical keyword"

本問題、前述のキーワードファイルを指定する方法にて改善することが出来ました。
またこの方法により、Nagios側でキーワードファイル毎に監視設定をつくることもなくなり、ログ監視が楽になりました。

◎動作確認

■00. 確認前にエラーキーワードをログへ埋め込んでおく

[root@mitzi_develop ~]# echo "mitzi error" >> /var/log/test.log
[root@mitzi_develop ~]# echo 0 > /etc/nagios/seek/test.seek

■01. Nagiosから直コマンドで確認

# /usr/lib64/nagios/plugins/check_nrpe -H <EIP> -c check_log3 -a /var/log/test.log /etc/nagios/seek/test.seek /etc/nagios/keyword/test-keyword /etc/nagios/seek/test.exclude 1
CRITICAL: Found 1 lines (limit=1/1): mitzi error|lines=1 ←エラー文言を検知出来ました。

■02. Nagios設定より確認

・host監視部のみ抜粋

# vi mitzi_develop.cfg
-------
define service {
       use                      mitzi-service
       host_name                mitzi_develop-ec2
       service_description      LOG [test]
       service_groups           log
       max_check_attempts       1
       normal_check_interval    1
       notification_options     c
       check_command            check-nrpe-cloudpack!check_log3!/var/log/test.log /etc/nagios/seek/test.seek /etc/nagios/keyword/test-keyword  /etc/nagios/seek/test.exclude 1 ()
       contacts                 mitzi
}
() NRPE経由でcheck_log3へ渡す引数($ARG*$)を指定しています。
# nagios -v /etc/nagios/nagios.cfg
# service nagios restart

・アラート検知
Nagios GUIより、エラーキーワードを検知したことを確認しております
20150714_blog_Nagiosメモ-ログ監視01.png

まとめ

・今回紹介した設定にて、シンプルかつ簡単にログ監視が出来るようになったかと思います。

以上になります。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13