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