こんにちは、インフラ担当のmatsBです。
最近ヒゲを伸ばし始め、ヒゲ道は奥が深いと感じています。
今回は
nagios+nrpe+check_log3.plでログ全文を出す試み
を書きたいと思います。
弊社では一部のサービス監視としてNagiosを使用しています。
messagesやApacheのログ監視をcheck_log3.plで行っていますが、全文を表示させようと思っても途中で切れていることがあります。
これはメールでもですし、管理画面でも本文の途中で切れます。
環境
監視サーバと監視クライアントのOSはCentOS 6系です。
すでにyumでnagiosとnrpeをインストールしています。
パッケージで入れたもの(cfgファイル等)はそのまま流用しています。
nrpeのsourceの修正箇所
監視クライアント側
include/common.h 内の MAX_INPUT_BUFFER
include/common.h 内の MAX_PACKETBUFFER_LENGTH
監視サーバ側
include/common.h 内の MAX_PACKETBUFFER_LENGTH
監視クライアント側のnrpe作業
ますは監視クライアント側で「most buffers」のMAX値と「one query/response」のMAX値を増やします。
※値は結構適当につけています。
[root@nagios-client ~]# wget http://hogehoge.fuga/nrpe-2.15.tar.gz [root@nagios-client ~]# tar zxvf nrpe-2.15.tar.gz [root@nagios-client nrpe-2.15]# cd nrpe-2.15 [root@nagios-client nrpe-2.15]# vim include/common.h ~中略~ //#define MAX_INPUT_BUFFER 2048 // ↓ に変更 #define MAX_INPUT_BUFFER 20480 ~中略~ //#define MAX_PACKETBUFFER_LENGTH 1024 // ↓ に変更 #define MAX_PACKETBUFFER_LENGTH 10240 [root@nagios-client nrpe-2.15]# ./configure --prefix=/etc/nagios --enable-command-args [root@nagios-client nrpe-2.15]# make
※configure に --enable-command-argsを入れているのは、nrpeがコマンド引数を有効にするためです。これを入れずにコンパイルしてnrpe.cfg 内で"dont_blame_nrpe=1"を入れても引数が無効になります。
これで出来たnrpeのバイナリーファイルを使用すれば、、、、
[root@nagios-client nrpe-2.15]# mv /usr/sbin/nrpe /usr/sbin/nrpe_yum [root@nagios-client nrpe-2.15]# cp src/nrpe /usr/sbin/nrpe [root@nagios-client nrpe-2.15]# /etc/init.d/nrpe restart [root@nagios-client nrpe-2.15]# /usr/lib64/nagios/plugins/check_log3.pl -l /var/log/httpd/access_log -s /etc/nagios/seeks/access_log.seek -f /etc/nagios/pattern/access_log_exclude -P /etc/nagios/pattern/access_log_pattern -c 1 CRITICAL: Found 127 lines (limit=1/1): (1) 192.168.255.255 - - [17/Feb/2016:11:06:30 +0900] GET / (2) 192.168.254.254 - - [17/Feb/2016:11:06:30 +0900] GET / (3) 192.168.254.254 - - [17/Feb/2016:11:06:30 +0900] GET / ~中略~ (126) 192.168.254.254 - - [17/Feb/2016:11:06:30 +0900] GET / (127) 192.168.254.254 - - [17/Feb/2016:11:06:30 +0900] GET /
とまぁ、こんな感じで出てきます。
監視クライアント側は以上です。
監視サーバ側のnrpe作業
つづいて監視サーバ側で「one query/response」のMAX値を増やします。
※値は結構適当につけています。
[root@nagios-server ~]# wget http://hogehoge.fuga/nrpe-2.15.tar.gz [root@nagios-server ~]# tar zxvf nrpe-2.15.tar.gz [root@nagios-server ~]# cd nrpe-2.15 [root@nagios-server nrpe-2.15]# vim include/common.h ~中略~ //#define MAX_PACKETBUFFER_LENGTH 1024 // ↓ に変更 #define MAX_PACKETBUFFER_LENGTH 10240 [root@nagios-server nrpe-2.15]# ./configure --prefix=/etc/nagios --enable-command-args [root@nagios-server nrpe-2.15]# make
これで出来たcheck_nrpeのバイナリーファイルを使用すれば、、、、
[root@nagios-server nrpe-2.15]# cp src/check_nrpe /etc/nagios/libexec/check_nrpe_MAX_PACKETBUFFER_LENGTH [root@nagios-server nrpe-2.15]# /etc/nagios/libexec/check_nrpe_MAX_PACKETBUFFER_LENGTH -H 192.168.254.254 -c check_access_log CRITICAL: Found 127 lines (limit=1/1): (1) 192.168.255.255 - - [17/Feb/2016:11:06:30 +0900] GET / (2) 192.168.254.254 - - [17/Feb/2016:11:06:30 +0900] GET / (3) 192.168.254.254 - - [17/Feb/2016:11:06:30 +0900] GET / ~中略~ (126) 192.168.254.254 - - [17/Feb/2016:11:06:30 +0900] GET / (127) 192.168.254.254 - - [17/Feb/2016:11:06:30 +0900] GET /
と、監視サーバまでログ全文が送られるようになりました。
ここまでで一通りの作業は終わりですが、メールでアラートを受取っている場合、基本的に一行で終わってしまいます。
そのため、検知のコマンドを変更する必要があります。
監視サーバ側のNagios作業
メールで全文表示するため、command_line内に$LONGSERVICEOUTPUT$を追加
全文表示用のcheckコマンドの定義を設定
[root@nagios-server ~]# vim /etc/nagios/etc/objects/commands.cfg ~中略~ define command{ command_name notify-service-by-email command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n\n$LONGSERVICEOUTPUT$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$ } ~中略~ define command{ command_name check_nrpe_MAX_LENGTH command_line $USER1$/check_nrpe_MAX_LENGTH -H $HOSTADDRESS$ -c $ARG1$ }
監視サーバ側のコマンドも変更して再起動
[root@nagios-server ~]# vim /etc/nagios/etc/servers/server.cfg ~中略~ define service{ use generic-security host_name server service_description access_log check check_command check_nrpe_MAX_LENGTH!check_access_log } [root@nagios-server ~]# /etc/init.d/nagios restart
これで、監視クライアントのnrpeから検知後のメールまでの設定が完了です。
手順自体はそんなにややこしくないけれど、覚えておくのは面倒ですね。
Nagiosでログを全文出したくなった方は、是非お試しください!