Docker и сервер

docker logs завис час назад — сервис не обязательно лёг

Зависнуть может сам log-драйвер, а не приложение. Как проверять живость сервиса активной пробой, а не хвостом логов.

4 мин чтения

Симптом

docker logs <сервис> показывает последнюю запись часовой давности и не двигается, хотя health-check у сервиса настроен раз в 15 секунд. Напрашивается вывод: приложение упало или зависло.

Причина

Зависнуть может сам json-log-драйвер Docker, а не приложение. Поток логов застревает на одной строке, тогда как backend продолжает штатно работать и обслуживать запросы. Ловушка выглядит убедительно: «логи молчат 15 минут при health-check каждые 15 секунд» — и рождается ложный вывод «сервис лёг».

Решение

Живость проверять по реальному поведению, а не по хвосту логов:

Хвост docker logs — вспомогательный индикатор, не первичный.

Вывод. Отсутствие логов — не доказательство смерти процесса. Логирование само может отказать (драйвер, буфер, ротация, зависший дескриптор) независимо от рабочего пути приложения. Определяйте живость активной пробой того, что сервис должен делать — обработать запрос, — а не пассивным наблюдением за побочным каналом, который может врать в обе стороны.

Как подключиться за 2 минуты
Частые вопросы

Частые вопросы

Если docker logs час не показывает новых записей, сервис упал?
Не обязательно. Зависнуть может сам json-log-драйвер Docker, а не приложение — backend в это время может штатно работать и обслуживать запросы.
Как на самом деле проверить, жив ли сервис?
Прямым запросом к API или health-эндпоинту: смотреть на свежий timestamp, разумный uptime и здоровые метрики, например задержку цикла событий около 20 мс.
Какие ещё признаки подтверждают, что сервис отвечает?
Свежие смежные поля у зависимых сущностей — например свежий updatedAt у нод в панели говорит, что опрос данных идёт исправно.
Можно ли считать хвост логов главным индикатором живости сервиса?
Нет, это вспомогательный индикатор. Логирование может отказать из-за драйвера, буфера или ротации независимо от того, работает ли рабочий путь приложения.
Похожее

Ещё в базе знаний

Подключите рабочий VPN

Инструкции базы знаний написаны под ключи VPN PRO: ключ выдаёт Telegram-бот за минуту, работоспособность гарантируем. Промокод VPN10 — 10 дней бесплатно, без карты.

Промокод VPN10 — 10 дней бесплатно · до 31 августа · передавайте друзьям