NagiosのNRPEプラグインを使ってログ監視をする

Jul 27, 2015   #nagios  #centos  #aws 

はじめに

こんばんは、インフラエンジニア見習いのえのかわです。
前回の記事の続きです。今回は監視対象のログ監視をしたいと思います。

NRPE is 何

NRPE(Nagios Remote Plugin Executor)とは、監視対象サーバーに対して以下のような監視を実現したい時に用います。前回の記事ではpingを打つだけなのでNRPEは必要ではありませんでした。

  • ディスク監視
  • CPU使用率の監視
  • メモリ使用率の監視
  • ログ監視

NRPEのインストール(Nagiosサーバー)

それではさっそく設定していきます。まずはじめにNagiosサーバーにNRPE関連のパッケージをインストールします。 /usr/lib64/nagios/plugins/配下にcheck_nrpeというファイルがインストールされます。

$ sudo yum install nrpe nagios-plugins-nrpe

インストールしたcheck_nrpeコマンドを登録します。

$ sudo vi /etc/nagios/objects/commands.cfg
define command{
        command_name    check_nrpe
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
      }

NRPEのインストールと設定(監視対象サーバ)

つづいて監視対象サーバに、NRPE関連のパッケージをインストールします。

$ sudo yum install -y epel-release
$ sudo yum install nrpe nagios-plugins-nrpe nagios-plugins-all

nrpe.cfgに設定を書いていきます。Nagiosサーバーからのアクセスを許可します。

$ sudo cp -p /etc/nagios/nrpe.cfg.sample
$ sudo vi /etc/nagios/nrpe.cfg
allowed_hosts=127.0.0.1, <Nagiosサーバーのip>

$ sudo  chkconfig nrpe on
$ sudo /etc/init.d/nrpe start

Nagiosサーバーから監視対象サーバーに対してNRPEコマンドを実施する際に、5666番ポートで通信しますので監視対象サーバーの5666番ポートを許可します。

check_log2のインストールと設定(監視対象サーバ)

今回はcheck_log2というスクリプトを使います。check_log3というのもあって、check_log3は正規表現を用いたログ監視も行えるそうです。 /var/log/messagesの中にERRという文字列が含まれていたら、Criticalなアラートが上がるように設定してみます。権限にも注意しましょう。

$ cd /usr/lib64/nagios/plugins/
$ sudo curl -L https://raw.githubusercontent.com/dnsmichi/nagiosplugins/master/contrib/check_log2.pl > check_log2
$ sudo chmod 755 check_log2
$ cd

$ sudo touch /tmp/.messages_old
$ sudo chmod 766 /tmp/.messages_old
$ sudo chmod 644 /var/log/messages
$ sudo vi /etc/nagios/nrpe.cfg
command[check_log2]=/usr/lib64/nagios/plugins/check_log2 -l /var/log/messages -s /tmp/.messages_old -p ERR -c

nagiosユーザーに権限を与える

NRPEコマンドがNagiosサーバーで実施される時は、実際はnagiosユーザーがcheck_log2などのコマンドを実行します。visudoでnagiosユーザーがcheck_log2コマンドを実施できるように設定します。

$ sudo visudo
nagios  ALL=NOPASSWD:/usr/lib64/nagios/plugins/check_log2

実際にコマンドを打ってテストしてみる(Nagiosサーバー)

Nagiosサーバーからコマンドを打ってみます。

[nagios-server]$ cd /usr/lib64/nagios/plugins/
[nagios-server]$ ./check_nrpe -H <監視対象サーバーのIP> -c check_log2
OK - No matches found.

エラーが出るかも試してみます。/var/log/messagesloggerコマンドでエラーログを吐いてみます。

[nagios-agent]$ logger "ERR"

ちゃんとエラーが出ていますね。

[nagios-server]$ ./check_nrpe -H <監視対象サーバーのIP> -c check_log2
CRITICAL: (1): Jul 27 21:44:16 ip-XX-XX-XX-XX ec2-user: ERR

remotehost設定(Nagiosサーバー)

前回と同じ要領でremotehost.cfgに追記していきます。

$ sudo vi /etc/nagios/objects/remotehost.cfg
define service{
    use                         generic-service
    host_name                   nagios-agent
    normal_check_interval       3
    service_description         Log Check
    check_command               check_nrpe!check_log2
}

$ sudo /etc/init.d/nagios restart

監視できてますね!

アラートもあがります!

おわりに

次回はAWSのCloudWatchのログを監視してみたいと思います!

参考