Назад | Перейти на главную страницу

Запустите check_nrpe на удаленном сервере

Я пытаюсь контролировать небольшую службу на фиктивном сервере через Icinga2 плагин check_nrpe. Я правильно настроил оба параметра, так как могу сделать следующее:

Теперь я пытаюсь использовать 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 и проверяю статус, я получаю всевозможные ошибки из-за синтаксических ошибок, ошибок компиляции и т. Д., Которые исчезают только после того, как я откатываю ВСЕ изменения, сделанные Ive. Я не могу понять, как передавать аргументы с помощью check_nrpe.

Может ли кто-нибудь, ПОЖАЛУЙСТА, дать мне простой ответ о том, как настроить пользовательскую проверку через check_nrpe?

РЕДАКТИРОВАТЬ: использовал тег icinga вместо icinga2, потому что тега icinga2 нет.

Edit2: я просто попробовал это из командной строки /usr/lib/nagios/plugins/check_nrpe -H remote-ip -c check_disk -a "-w 20% -c 10% adn получил ошибку CHECK_NRPE: Received 0 bytes from daemon. Check the remote server logs for error messages.

Скорее всего, причина, по которой ваш тест командной строки с check_disk возвращает «Получено 0 байтов от демона», заключается в том, что у вас нет:

dont_blame_nrpe=1

установите в вашем файле nrpe.cfg, так как это необходимо, чтобы позволить клиенту nrpe передавать любые аргументы. Поскольку разрешение произвольных аргументов для тестов 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 родной клиент? Это довольно гибко и, возможно, более безопасно, чем использование 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