запускаешь задачу в кроне каждую минуту который чекает стейты серверов в очередях и пишет их в бд + оповещает по сокетам если нужно клиентов при вызове контроллера просто отдаем текущей стейт из редиса, но можна и из бд если там их не много
те опрашивает сервера крон сохраняет, а при вызове контроллера просто берем текущий стест + на клиенте сокеты которые обновляют статус если они изменились
хотя если сервер точно один, то рили проще в контроллер запихнуть)) но тогда по ux это такое себе тк ну загрузил ты страницу у тебя сервер там стоит онлайн а он уже как пару минут вырублен после загрузки страницы