#290

/health/ check

Полезно пользоваться сервисами, которые мониторят аптайм твоего продукта и шлют уведомляшки в случае аварии. Но уверен ли ты, что правильно с ними разговариваешь?

А правильно вот так. Мониторилка должна приходить на URL, специально подготовленный для нее (/health/). Там ты проверяешь:

  • в порядке ли коннект к базе (SELECT 1)
  • в порядке ли memcached/redis/etc (.set('lopata', 'a'), затем .get('lopata')=='a')
  • в порядке ли погода (loadavg, достаточно ли свободной памяти и т.п.)
  • и т.д.

Проверки выполняешь последовательно, и в случае ошибки выдаешь ее в теле со статусом HTTP 500. Так в случае аварии ты сразу узнаешь, кто сломался (конечно, если твой сервис само тело ответа показывает).

Важно: пользуйся существующими коннектами к базам. Что толку с того, что твой health check покажет, что к базе можно успешно открыть новое соединение, когда у тебя рабочие соединения мертвые и веб не работает?

И только если все хорошо, тогда говори HTTP 200. И не забудь отправить Content-Length (нулевой).