Полезно пользоваться сервисами, которые мониторят аптайм твоего продукта и шлют уведомляшки в случае аварии. Но уверен ли ты, что правильно с ними разговариваешь?
А правильно вот так. Мониторилка должна приходить на URL, специально подготовленный для нее (/health/
). Там ты проверяешь:
SELECT 1
).set('lopata', 'a')
, затем .get('lopata')=='a'
)loadavg
, достаточно ли свободной памяти и т.п.)Проверки выполняешь последовательно, и в случае ошибки выдаешь ее в теле со статусом HTTP 500. Так в случае аварии ты сразу узнаешь, кто сломался (конечно, если твой сервис само тело ответа показывает).
Важно: пользуйся существующими коннектами к базам. Что толку с того, что твой health check покажет, что к базе можно успешно открыть новое соединение, когда у тебя рабочие соединения мертвые и веб не работает?
И только если все хорошо, тогда говори HTTP 200. И не забудь отправить Content-Length (нулевой).