Настройка различных портов SSH для каждого удаленного узла, контролируемого Nagios
Я завершил установку и настройку Nagios на трех серверах, так что экземпляр на сервере A также предоставляет отчеты для серверов B & C (через NRPE).
SSHD целенаправленно прослушивает разные порты на каждом хосте, поэтому я отредактировал файл /etc/nagios3/conf.d/services_nagios2.cfg на каждом хосте, чтобы протестировать соответствующий порт. Собственный экземпляр HTTP Nagios на серверах B & C подтверждает, что SSH работает, но отчет на сервере A показывает критические сбои для SSH на обоих B & C.
У меня сложилось впечатление, что служба NRPE была разработана для выполнения локальных проверок на удаленных хостах, пересылки остатков обратно на хост мониторинга, который затем собирал данные в один отчет для всех машин.
Рассматривая раздел "Службы" на веб-странице конфигурации (на сервере A), Nagios тестирует один и тот же порт SSH на всех трех серверах, а не на разных портах B & C. Кто-нибудь может объяснить почему?
Единственный способ, которым я могу исправить это (на сегодняшний день), состоит в том, чтобы создать разные хосты имя_группы и check_command для каждого удаленного хоста в файле conf.d / services_nagios2.cfg на сервере A.
Это не может быть единственным способом?
Конечно, файл будет умножаться по длине каждый раз, когда для удаленного мониторинга серверов требуется другая конфигурация службы!
1 ответ
Хорошо, я просматривал документацию Nagios3 и ответил на часть конфигурации порта на мой вопрос...
Ответ лежит в модели наследования объектов, которая существует в файлах конфигурации Nagios. По сути, я создал пользовательскую переменную в каждом определении хоста, которая указывает уникальный порт ssh на этом компьютере:
define host {
use generic-host
host_name serverB
address 10.0.1.3
_sshport 67382
}
Хосты сгруппированы внутри файла hostgroups_nagios2.cfg:
# A list of your ssh-accessible servers
define hostgroup {
hostgroup_name ssh-servers
alias SSH servers
members localhost,serverB,serverC
}
На эту группу ссылается внутри services_nagios2.cfg блок, проверяющий SSH:
# check that ssh services are running
define service {
hostgroup_name ssh-servers
service_description SSH
check_command check_ssh_port!$_HOSTSSHPORT
use generic-service
notification_interval 0 ; set > 0 if you want to be renotified
}
В конце команды check_ssh_port вы можете видеть, что я добавил переменную sshport $_HOSTSSHPORT
это наследуется от каждого хоста внутри группы хостов ssh-Servers при выполнении проверок.
Теперь при добавлении новых серверов мне нужно только изменить файл hosts_nagios2.cfg, указав информацию о новом хосте.
Чтобы включить обратную совместимость, я также изменил свой файл generic-host_nagios2.cfg, добавив строку _sshport 22
так что если по какой-то причине мне понадобится контролировать какую-нибудь систему, работающую по SSH на порте по умолчанию, конфигурация порта уже будет унаследована от общего шаблона хоста.
Я надеюсь, что это помогает другим, которые оказываются в том же положении. Я все еще пытаюсь понять, почему удаленные проверки не используют пользовательские файлы конфигурации на удаленных серверах.