Как правильно убить Нагиоса? ndo2db
демон?
Когда я выключаюсь nagios
и ndo2db
Я делаю следующее:
/etc/init.d/nagios stop
/etc/init.d/ndo2db stop
и я вижу следующее в nagios.log
:
[1311865619] Caught SIGTERM, shutting down... [1311865619] Successfully shutdown... (PID=12422) [1311865619] ndomod: Shutdown complete. [1311865619] Event broker module '/usr/local/nagios/bin/ndomod.o' deinitialized successfully.
тем не мение /etc/init.d/ndo2db stop
выводит на консоль следующее сообщение:
ndo2db не работал ... не удалось остановить
Если я сделаю ps -ax | grep nagios
Я все еще вижу запущенный процесс ndo2db:
12381 ? Ss 0:00 /usr/local/nagios//bin/ndo2db -c /usr/local/nagios//etc/ndo2db.cfg
Затем я должен вручную убить его перед перезапуском ndo2db, иначе я получаю:
[root@nag01 nagios]# /etc/init.d/ndo2db start Starting ndo2db:Could not bind socket: Address already in use done. [root@nag01 nagios]#
Есть ли более чистый способ сделать это?
Я бегу:
Обновить:
Одна из странностей (?), Которую я заметил, заключается в том, что когда запущены ndo2db и nagios, я вижу два экземпляра ndo2db:
12753 ? Ss 0:00 /usr/local/nagios//bin/ndo2db -c /usr/local/nagios//etc/ndo2db.cfg 12792 ? S 0:00 /usr/local/nagios//bin/ndo2db -c /usr/local/nagios//etc/ndo2db.cfg
Это нормально? Если это так, то я предполагаю, что stop
часть init.d
скрипт убивает только один процесс?
Я нашел виновника - это был компоновщик конфигурационных файлов Centreon.
ndo2db
имеет lock_file
параметр, который отсутствует в пользовательском интерфейсе конфигурации Centreon.
Когда Centreon генерирует файлы конфигурации, он также генерирует ndo2db.cfg
- но без lock_file
значение конфигурации.
По этому поводу есть открытый вопрос:
Изучив исходный код, когда ndo2db
демонизирует, и если нет lock_file
при установке, он игнорирует это и продолжает работу, и файл блокировки, содержащий PID, не записывается.
Это, конечно, означает, что stop
функция в сценарии инициализации не сможет определить идентификатор процесса ndo2db, поэтому его можно убить.
Обновить:
Чтобы решить эту проблему, я вручную добавил новый столбец в cfg_ndo2db
стол в centreon
база данных:
ALTER TABLE `cfg_ndo2db`
ADD COLUMN `lock_file` VARCHAR(255) NULL DEFAULT NULL;
Затем я заполнил его путем к моему файлу блокировки ndo2db:
UPDATE `cfg_ndo2db` SET `lock_file`='/usr/local/nagios/var/ndo2db.lock' WHERE `id`=1;
Это заставит centeron написать lock_file
настройка каждый раз, когда создается конфигурация. Это также, похоже, переживает обновления, хотя я всегда проверял сценарии обновления базы данных, чтобы убедиться, что это не подкрадывается как недокументированное исправление.