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

Как правильно остановить демон nagios ndo2db?

Как правильно убить Нагиоса? 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 значение конфигурации.

По этому поводу есть открытый вопрос:

Нет поля lock_file в конфигурации - Centreon - ndo2db.cfg

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