Я установил Munin и Monit на один из моих серверов под управлением CentOS 5. Все работает нормально, ведение журналов и предоставление отчетов, за исключением случаев, когда процесс httpd перезапускается. У меня Monit настроен на перезапуск httpd, если он использует 2,5 ГБ памяти. Если / когда это произойдет, он просто перезапустится, но Monit не подхватит новый процесс.
Я получу уведомление о том, что служба httpd не существует, а затем еще одно сообщение о том, что httpd не удалось запустить, а затем последнее сообщение о том, что время ожидания службы httpd истекло и больше не будет отслеживаться.
Я не уверен, почему я получаю эти отчеты, потому что служба httpd перезапускается нормально. Я проверил журналы, и при перезапуске проблем нет.
Может быть проблема состояния гонки. При перезапуске Monit появляется «httpd stop», а затем «httpd start». Это не атомарная операция. Происходит чередование инструкций между «httpd stop» и «httpd start».
"rm -rf pid file" наконец-то можно сделать. Monit не поддерживает процесс httpd.
Возможно, monit запустил сценарий, который перезапускает httpd, ждет несколько секунд, а затем также перезапускает monit.
Может случиться так, что monit каким-то образом привязан к конкретному идентификатору процесса, связанному с убитыми процессами httpd, и это позволит ему правильно обнаруживать новые процессы.
Я не уверен, сколько свободной памяти имеет ваша система, когда она достигает точки использования 2,5 ГБ, но если этот объем станет слишком низким (возможно, во время перезапуска?), Linux начнет случайным образом убивать процессы, чтобы избежать полного сбоя. Я предполагаю что oomkiller может убивать что-то важное для функциональности monit.
Если это так, снижение порога перезапуска с 2,5 ГБ до 2,0 ГБ или увеличение объема памяти в коробке было бы лучшим решением.
Это было бы потому, что Монит - это шары. У него всегда были проблемы с определением фактического состояния службы. Я не знаю почему, но некоторое время назад я отказался от monit и переключился на альтернативные способы делать то, что monit пытался делать, с большим успехом и более чем небольшим счастьем.