NagiosNRPEでリモートサーバのチェックコマンドの出力を受け取り、メール等で確認すると、
プラグインによっては出力内容が途中で途切れることがあります。
今回は、その原因を調べて直すまでの経緯を紹介します。

○現象

サンプルとして、チェックコマンドは以下で紹介されているcheck_log3.plというログ監視プラグインをベースに、
ログの該当行の前後を出力に含めるように改変したものを使用しています。

参考記事

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

対象の前後10行分のログを取得するようにしてあるのですが、nagiosのWEBインターフェース等で確認すると、
以下のように途中で途切れていました。

○調査

上記より、まずはリモート側でこのチェックコマンドを直接実行してみました。

# /usr/lib/nagios/plugins/check_log3 -l /etc/httpd/logs/access_log -s /etc/nagios/seeks/check_log3.httpd.seek -p hoge -w 1 -c 5
CRITICAL: Found 7 lines (limit=1/5): 219.117.233.241 - - [27/Jan/2013:14:53:35 +0900] "GET /test/hoge HTTP/1.1" 404 286 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:14:53:35 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:14:53:35 +0900] "GET /test/hoge HTTP/1.1" 404 286 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17219.117.233.241 - - [27/Jan/2013:14:53:35 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:14:53:36 +0900] "GET /test/hoge HTTP/1.1" 404 286 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:14:53:36 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:14:53:37 +0900] "GET /test/hoge HTTP/1.1" 404 286 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:14:53:37 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:14:53:38 +0900] "GET /test/hoge HTTP/1.1" 404 286 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:14:53:38 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:14:53:39 +0900] "GET /test/hoge HTTP/1.1" 404 286 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:14:53:39 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:14:53:39 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"54.248.239.80 - - [27/Jan/2013:14:53:40 +0900] "GET / HTTP/1.0" 200 1 "-" "check_http/v1.4.16 (nagios-plugins 1.4.16)"219.117.233.241 - - [27/Jan/2013:14:53:40 +0900] "GET /test/moge HTTP/1.1" 404 286 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:14:53:41 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:14:53:41 +0900] "GET /test/moge HTTP/1.1" 404 286 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:14:53:41 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:14:53:42 +0900] "GET /test/moge HTTP/1.1" 404 286 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:14:53:42 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:14:53:42 +0900] "GET /test/moge HTTP/1.1" 404 286 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:14:53:43 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"

上記より、チェックコマンド自体は必要な長さで正常に出力してくれているようです。

次に、監視サーバ側で直接check_nrpeコマンドを実行してみます。

# /usr/lib64/nagios/plugins/check_nrpe -H xxx.xxx.xxx.xxx -c check_log3 -a '/etc/httpd/logs/access_log' '/etc/nagios/seeks/check_log3.httpd.seek' 'hoge' 1 5
CRITICAL: Found 5 lines (limit=1/5): 219.117.233.241 - - [27/Jan/2013:18:27:43 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:18:27:44 +0900] "GET /test/hoge HTTP/1.1" 404 286 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:18:27:44 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"54.248.235.241 - - [27/Jan/2013:18:27:45 +0900] "GET / HTTP/1.0" 200 1 "-" "check_http/v1.4.16 (nagios-plugins 1.4.16)"219.117.233.241 - - [27/Jan/2013:18:27:45 +0900] "GET /test/hoge HTTP/1.1" 404 286 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Ja

こちらは途切れているようです。
つまりNagios本体でもなく、どちらかのNRPEかcheck_nrpeに問題がありそうです。

また、nrpe.cfgを見る限り、該当するような設定は見つかりませんでした。
受信もしくは送信側のNRPEが内部で固定長にカットオフしている可能性が高そうですが、この環境では、
nrpeがyumでインストールされているため何をしているのかわかりません。

そこで、NRPEのソースをダウンロードしてソースを確認してみました。
まず、リモートサーバにNRPEを落としてみます。

# cd /usr/local/src
# curl -L -o nrpe-2.13.tar.gz http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.13.tar.gz
# tar nrpe-2.13.tar.gz
# cd nrpe-2.13

固定長でカットしているとすれば、定数でMAXが付いているであろうという想定で調査してみます。

# find . -print | xargs grep "define MAX"
./include/common.h:#define MAX_INPUT_BUFFER2048/* max size of most buffers we use */
./include/common.h:#define MAX_FILENAME_LENGTH     256
./include/common.h:#define MAX_HOST_ADDRESS_LENGTH256/* max size of a host address */
./include/common.h:#define MAX_COMMAND_ARGUMENTS   16
./include/common.h:#define MAX_PACKETBUFFER_LENGTH1024/* max amount of data we'll send in one query/response */
./contrib/nrpe_check_control.c:#define MAX_CHARS1024
./configure:#define MAX(x, y) ((x) > (y) ? (x) : (y))
./src/nrpe.c:#define MAXFD                   64
./src/snprintf.c:#define MAX(p,q) (((p) >= (q)) ? (p) : (q))

MAX_INPUT_BUFFERとMAX_PACKETBUFFER_LENGTHが該当しそうです。

cat ./include/common.h
#define MAX_INPUT_BUFFER2048/* max size of most buffers we use */
.....
#define MAX_PACKETBUFFER_LENGTH1024/* max amount of data we'll send in one query/response */

まずは、MAX_PACKETBUFFER_LENGTHを長くしてみます。

vim ./include/common.h
~
//#define MAX_PACKETBUFFER_LENGTH1024/* max amount of data we'll send in one query/response */
#define MAX_PACKETBUFFER_LENGTH10240/* max amount of data we'll send in one query/response */
~

そして、このソースから再度インストールをします。
(既存のcfgファイル等は適宜バックアップしておきます)

# mkdir /tmp/nagios
# cp -R /etc/nagios/* /tmp/nagios/# ./configure --enable-command-args
# make all
# make install
# mkdir /usr/local/nagios/etc
# cp ./init-script /etc/init.d/nrpe
# chmod 755 /etc/init.d/nrpe
# cp /tmp/nagios/* /usr/local/nagios/etc/nagios/
# /etc/init.d/nrpe restart

これで再度、監視サーバからcheck_nrpeを実行してみます。

# /usr/lib64/nagios/plugins/check_nrpe -H xxx.xxx.xxx.xxx -c check_log3 -a '/etc/httpd/logs/access_log' '/etc/nagios/seeks/check_log3.httpd.seek' 'hoge' 1 5
CHECK_NRPE: Received 0 bytes from daemon.  Check the remote server logs for error messages.

上記のようにエラーになりました。
メッセージ通りリモートサーバ側のログを見てみます。

Jan 27 18:40:26 ip-10-132-10-146 nrpe[13812]: Error: Request packet had invalid CRC32.
Jan 27 18:40:26 ip-10-132-10-146 nrpe[13812]: Client request was invalid, bailing out...

CRC32ハッシュが間違っているようです。
CRCは送信側と受信側のデータ整合性をチェックするために使われることが多いため、受信側(監視サーバ)でも
同じパケット長に設定する必要があるようです。

そこで、監視サーバ側もソースからインストールし、同じくMAX_PACKETBUFFER_LENGTHを合わせてみます。

# cd /usr/local/src
# curl -L -o nrpe-2.13.tar.gz http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.13.tar.gz
# tar xzvf nrpe-2.13.tar.gz
# nrpe-2.13
# vim ./include/common.h
~
//#define MAX_PACKETBUFFER_LENGTH1024/* max amount of data we'll send in one query/response */
#define MAX_PACKETBUFFER_LENGTH10240/* max amount of data we'll send in one query/response */
~
# yum install make openssl openssl-devel -y
# cd /usr/local/src
# ./configure
# make all
# make install
# /usr/local/nagios/libexec/check_nrpe -H xxx.xxx.xxx.xxx -c check_log3 -a '/etc/httpd/logs/access_log' '/etc/nagios/seeks/check_log3.httpd.seek' 'hoge' 1 5
CRITICAL: Found 5 lines (limit=1/5): 219.117.233.241 - - [27/Jan/2013:18:32:19 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:18:32:20 +0900] "GET /test/hoge HTTP/1.1" 404 286 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:18:32:20 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:18:32:21 +0900] "GET /test/hoge HTTP/1.1" 404 286 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:18:32:21 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:18:32:21 +0900] "GET /test/hoge HTTP/1.1" 404 286 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:18:32:22 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:18:32:22 +0900] "GET /test/hoge HTTP/1.1" 404 286 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:18:32:22 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:18:32:23 +0900] "GET /test/hoge HTTP/1.1" 404 286 "-" "Mozilla/5.0 (Macintosh; Intel M

この場合も途切れるようです。

次に、MAX_INPUT_BUFFERも長さを変えてみます。
長さは念のため、MAX_PACKETBUFFER_LENGTHと同じ倍率で変更します。

まずは、リモートサーバからです。

vim ./include/common.h
~
//#define MAX_INPUT_BUFFER  2048    /* max size of most buffers we use */
#define MAX_INPUT_BUFFER    20480
~
# /usr/local/nagios/libexec/check_nrpe -H xxx.xxx.xxx.xxx -c check_log3 -a '/etc/httpd/logs/access_log' '/etc/nagios/seeks/check_log3.httpd.seek' 'hoge' 1 5
CRITICAL: Found 5 lines (limit=1/5): 219.117.233.241 - - [27/Jan/2013:19:12:40 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:19:12:41 +0900] "GET /test/hoge HTTP/1.1" 404 286 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:19:12:41 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:19:12:42 +0900] "GET /test/hoge HTTP/1.1" 404 286 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:19:12:42 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:19:12:42 +0900] "GET /test/hoge HTTP/1.1" 404 286 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:19:12:43 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:19:12:43 +0900] "GET /test/hoge HTTP/1.1" 404 286 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:19:12:43 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:19:12:44 +0900] "GET /test/hoge HTTP/1.1" 404 286 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:19:12:44 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:19:12:45 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"54.248.235.241 - - [27/Jan/2013:19:12:45 +0900] "GET / HTTP/1.0" 200 1 "-" "check_http/v1.4.16 (nagios-plugins 1.4.16)"219.117.233.241 - - [27/Jan/2013:19:12:45 +0900] "GET /test/moge HTTP/1.1" 404 286 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:19:12:45 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:19:12:47 +0900] "GET /test/moge HTTP/1.1" 404 286 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:19:12:47 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:19:12:48 +0900] "GET /test/moge HTTP/1.1" 404 286 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:19:12:48 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:19:12:49 +0900] "GET /test/moge HTTP/1.1" 404 286 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"219.117.233.241 - - [27/Jan/2013:19:12:49 +0900] "GET /favicon.ico HTTP/1.1" 404 288 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"

全体を取得することができました。

○結果

./src/nrpe.cや./src/check_nrpe.cの処理も合わせ見ると、長い出力を得るには、下記の変更が必要なようです。

・リモートサーバ側

  • MAX_INPUT_BUFFER(内部で貯めこむバッファ長)
  • MAX_PACKETBUFFER_LENGTH(NRPEが送信するバッファ長)

・監視サーバ側

  • MAX_PACKETBUFFER_LENGTH(chech_nrpeが受信するバッファ長)

また、監視サーバ側はcheck_nrpeコマンドを直接実行するため上手くいきましたが、既存のNagiosがyumのNRPEを
使おうとしているため、check_nrpeは失敗します。

そこで、コマンドの定義でソースからインストールしたcheck_nrpeを使用するように変更しておきます。

#vim /etc/nagios/objects/commands.cfg
~
define command {
    command_name    check-nrpe
#    command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a $ARG2$
   command_line  /usr/local/nagios/libexec/check_nrpe/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a $ARG2$
}
~
# /etc/init.d/nagios restart

上記より、Nagiosから接続した場合でも以下のように必要な長さのログが取得できました。

○まとめ

NRPEがこの項目を設定ファイルではなくハードコードしているのは、おそらく受信側と送信側を個別に変えて
エラーになることを防ごうとしているのかもしれません。
しかし、そのために手間がかかることとなってしまいました。

また今回、yumと動作を比較しやすくするためにyumのパッケージを残したままソースをインストールしましたが、
本来はyumを削除してから再インストールする方が安全です。
また、–prefix等でyumと同じ位置に配置するようにするともっとスマートかも知れません。

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