Я использую monit для мониторинга моего демона с помощью HTTP API и перезапускаю его при необходимости. Помимо проверки того, что процесс не остановлен, я также добавил проверку HTTP (if failed port 80 protocol http request "/api/status"
) со счетчиком отказоустойчивости (for N cycles
). Я использую счетчик, чтобы избежать перезапуска демона в случае единичных неудачных запросов (например, из-за высокой нагрузки). Проблема в том, что счетчик сбоев не сбрасывается после успешного перезапуска демона. То есть рассмотрим следующий сценарий:
- Monit и демон запущены.
- Демон заблокирован (например, из-за программной ошибки) и перестает отвечать на запросы HTTP.
- Monit ожидает N последовательных сбоев HTTP-запроса и перезапускает демон.
- Первый HTTP-запрос monit после перезапуска демона снова завершается сбоем (например, потому что демону требуется некоторое время, чтобы подключиться и начать обслуживание запросы).
- Monit перезапускает демона снова. Go до пункта 4.
Кажется, это ошибка, и на самом деле существует проблема 64 (исправлено) и 787 (открыто). Поскольку второй выпуск открывается уже год, у меня нет особых надежд на его скорейшее исправление, поэтому я хотел бы знать, есть ли хороший обходной путь для этого случая.