Laravel має вбудований маршрут перевірки стану: /up повертає 200, якщо застосунок завантажився без винятків, і 500 - якщо ні.
// bootstrap/app.php
->withRouting(
web: __DIR__.'/../routes/web.php',
health: '/up',
)
Хто його опитує:
- балансувальник - не слати трафік на екземпляр, що не відповідає;
- оркестратор (Kubernetes, Docker Swarm) - перезапустити контейнер;
- моніторинг доступності - сповістити команду.
Чого він не перевіряє: базу, Redis, черги. Застосунок може завантажитися й віддати 200, а база при цьому лежить. Для глибшої перевірки слухають подію DiagnosingHealth, яку маршрут запускає, і кидають виняток, якщо залежність недоступна - тоді відповідь буде 500.
Обережно з глибиною: якщо балансувальник знімає всі екземпляри через те, що впала база, сайт не віддасть навіть сторінку «технічні роботи». Тому часто розділяють «живий» (процес працює) і «готовий» (залежності доступні).
Маршрут варто виключити з журналів доступу й аналітики - його опитують щохвилини.