Icinga2check_nrpeプラグインを介してダミーサーバー上の小さなサービスを監視しようとしています。次のことができるので、両方を正しくセットアップしました。
/usr/lib/nagios/plugins/check_nrpe -H remote-server-ip
を実行すると、NRPE v2.15
が表示されます。/usr/lib/nagios/plugins/check_nrpe -H main-server-ip
を実行すると、同じ結果が得られます。/usr/lib/nagios/plugins/check_nrpe -H remote-server-ip -c check_load
を実行すると、WARNING - load average: 5.85, 5.67, 5.55|load1=5.850;15.000;30.000;0; load5=5.670;10.000;25.000;0; load15=5.550;5.000;20.000;0;
が表示されます現在、check_nrpeを使用して、/usr/local/lib/
に配置されているcheck_remote_server.py
という小さなスクリプトをリモートマシンで実行しようとしています。このために私は次のことをしました:
/etc/icinga2/conf.d/test.conf
で
object Service "Test Check" {
import "generic-service"
Host_name = "remote-server-ip"
check_command = "check_nrpe"
vars.ARG1 = "check_remote_server"
}
object Host "remote-server-ip" {
import "linux-server"
address = "xx.xx.xx.xx"
groups = [ "test" ]
}
と/etc/nagios/nrpe.cfg
command[check_remote_server]=/usr/local/lib/check_remote_server.py -w 2 -c 1
ただし、icinga2を再起動してステータスを確認すると、構文エラーやコンパイルエラーなどのあらゆる種類のエラーが発生します。これらのエラーは、行ったすべての変更をロールバックした後にのみ消えます。 check_nrpeを使用して引数を渡す方法を一生理解できません。
check_nrpe
を介してカスタムチェックを構成する方法について、簡単な質問をお願いできますか?
編集:icinga2タグがないため、icinga2の代わりにicingaタグを使用しました。
Edit2:コマンドラインからこれを試しました/usr/lib/nagios/plugins/check_nrpe -H remote-ip -c check_disk -a "-w 20% -c 10%
そしてエラーCHECK_NRPE: Received 0 bytes from daemon. Check the remote server logs for error messages.
が発生しました
Check_diskを使用したコマンドラインテストで「デーモンから0バイトを受信しました」が返されるのは、次のものがないためである可能性があります。
dont_blame_nrpe=1
nrpeクライアントが引数を渡せるようにするために必要なため、nrpe.cfgファイルに設定します。任意の引数にnrpeテストを許可することにはセキュリティ上の影響があるため、デフォルトでは許可されていません。
カスタムチェックスクリプトはホストのnrpe.cfgですでに定義されているため、テストするためにこれを有効にする必要はありません。 icingaサーバーからカスタムチェックコマンドをテストするとどうなりますか
/usr/lib/nagios/plugins/check_nrpe -H remote-ip -c check_remote_server
?
Nrpeとチェックスクリプトに関する問題を除外するだけでなく、サービスとコマンドの定義をもう一度確認してください。構成スニペットを見ると、最初に表示される問題は「オブジェクトサービス」の行です。これは、代わりに「サービスの適用」と表示されます。また、NRPE用にコマンド定義が定義されていることを確認してください。次のようなものを試して開始してください。
object HostGroup "test" {
display_name = "Test Group"
assign where Host.name == "hostname.com"
check_command = "dummy"
}
object Host "hostname.com" {
import "generic-Host"
address = "xx.xx.xx.xx"
}
object CheckCommand "check_nrpe" {
import "plugin-check-command"
command = [PluginDir + "/check_nrpe" ] # Make sure this points to check_nrpe binary
arguments = {
"-H" = "$Host$"
"-c" = "$ARG1$"
}
}
apply Service "Test Check" {
import "generic-service"
check_command = "check_nrpe"
vars.ARG1 = "check_remote_server"
assign where "test" in Host.groups
}
やや関連性がありますが、icinga2を使用しているので、nrpeを捨ててicinga2 native client を使用しないのはなぜですか? nrpeを使用するよりもかなり柔軟性があり、間違いなく安全です。
リモートサーバーが正しいようです。nrpe.cfgに関連する行があります。
command[check_remote_server]=/usr/local/lib/check_remote_server.py -w 2 -c 1
スクリプトが実際にNagiosによって認識されるデータを出力する場合(Nagiosが構文エラーについて不平を言う場合、私は懐疑的です。セミコロンなどの数が一致していることを確認してください!)
次に、マスターでは、次のように単純にする必要があります
check_nrpe!check_remote_server