Nagios用に次のサービスを設定しています。
define service {
hostgroup_name LNX
service_description /tmp Disk Usage
check_command check_nrpe!check_disk!-a '-w 20% -c 10% -p /tmp'
check_interval 1
max_check_attempts 3
retry_interval 1
check_period 24x7
notification_interval 2
notification_period 24x7
notification_options c,r,w
notifications_enabled 0
contact_groups devops
}
これは次のコマンドに関連付けられます。
define command {
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -u -t 60 -c $ARG1$ $ARG2$
}
つまり、最終的に何が実行されているか(およびコマンドラインで実行したときの出力)は次のようになります。
$: /usr/local/nagios/libexec/check_nrpe -H <my Host> -u -t 60 -c check_disk -a '-w 20% -c 10% -p /tmp'
DISK OK - free space: /tmp 4785 MB (97% inode=99%);| /tmp=124MB;3928;4419;0;4910
これにecho $?
を付けると、0が生成され、OK /成功を意味します。
ただし、nagiosはこれを「範囲外のエラーコード255」として報告しており、その理由はわかりません。
サーバーでcheck_diskコマンドを実行すると正常に動作します。
$: ./check_disk -w 20% -c 10% -p /tmp
DISK OK - free space: /tmp 4785 MB (97% inode=99%);| /tmp=124MB;3928;4419;0;4910
$: echo $?
0
上記のように、nagiosサーバーのcheck_nrpe
実行可能ファイルを介して実行すると機能します。これの意味は:
check_disk
)はリモートシステムにあります:command[check_disk]=/usr/local/nagios/libexec/check_disk $ARG1$
only_from
の/etc/xinetd.d/nrpe
ディレクティブに存在します)さらに、このチェックは他のマシンでは問題なく実行されますが、すべてのマシンでは実行されません
Nagiosは、私が見ることができるすべてが0になるはずであり、したがってサービスにOKのマークを付ける必要があることを意味するのに、255を取得していると考えるのはなぜですか?
編集:NagiosのバージョンはCentOS 7で実行されているNagiosコア4で、チェックされているホストはcentos 5-7です。バージョンが異なる複数のマシンで問題が発生します
次のようにcheck_commandがある場合:
check_command check_nrpe!check_disk
結び付けられたコマンド名は、クライアント側のcheck_nrpeではなく、実際にはcheck_diskです。
問題の原因
Nagiosサーバーのサービス設定は、監視対象クライアントに引数を1つ指定してcheck_diskコマンドを実行するように要求します。
-w 20% -c 10% -p /tmp
Nagiosクライアントのnrpe.cfgでのcheck_diskコマンドの現在の設定は次のとおりです。
command[check_disk]=/usr/lib64/nagios/plugins/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
したがって、NRPEを介して監視対象クライアントに渡したコマンドは、実際には次のとおりです。
/usr/lib64/nagios/plugins/check_disk -w -w 20% -c 10% -p /tmp -c $ARG2$ -p $ARG3$
したがって、コマンドを正常に実行できないため、テストは失敗します。
ソリューション
Nagiosクライアントに3つの異なる引数を渡したい場合は、check_commandを次のように変更してみてください。
check_command check_nrpe!check_disk -a '-w 20% -c 10% -p /tmp'
Nagiosクライアントで対応するコマンドが構成されていることを確認してください:
command[check_disk]=/usr/lib64/nagios/plugins/check_disk $ARG1$
別のオプションは、次のようにサーバー構成を変更します。
check_command check_nrpe!check_disk
対応するクライアント構成:
command[check_disk]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /tmp
Nrpeクライアントがnagiosサーバーからの接続を受け入れていることを確認する必要があります。
cat /etc/xinetd.d/nrpe
service nrpe
{
flags = REUSE
socket_type = stream
port = 5666
wait = no
user = nagios
group = nagios
server = /usr/local/nagios/bin/nrpe
server_args = -c /usr/local/nagios/etc/nrpe.cfg --inetd
log_on_failure += USERID
disable = no
only_from = xxx.xxx.xxx.xxx
}
Only_from行にnagios IPがあることを確認します
次に、check_nrpeスクリプトに適切な権限があることを確認する必要があります。 nagios:nagiosが所有する必要があります
-rwxrwxr-x. 1 nagios nagios 81542 Jul 11 13:08 /usr/local/nagios/libexec/check_nrpe