web-dev-qa-db-ja.com

リモートサーバーでcheck_nrpeを実行します

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.が発生しました

2
Beginner

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を使用するよりもかなり柔軟性があり、間違いなく安全です。

1
Jon

リモートサーバーが正しいようです。nrpe.cfgに関連する行があります。

command[check_remote_server]=/usr/local/lib/check_remote_server.py -w 2 -c 1

スクリプトが実際にNagiosによって認識されるデータを出力する場合(Nagiosが構文エラーについて不平を言う場合、私は懐疑的です。セミコロンなどの数が一致していることを確認してください!)

次に、マスターでは、次のように単純にする必要があります

 check_nrpe!check_remote_server
0
BenD10