Кейс

Ubuntu: корень 100%, сайт «просто лёг», journal съел диск

Прод-сервер интернет-магазина перестал принимать SSH по ключу «иногда». На деле / был забит journal и старыми docker overlay, inode на нуле.

  • Интернет-магазин, 1 VPS + 1 физический бэкенд, Москва
  • Срок: Инцидент 3 часа + 1 день профилактики
  • Стек: Ubuntu Server, systemd-journald, Docker, nginx

Исходное состояние

Что было на площадке

Мониторинг «внешний ping» был зелёный. HTTP 504. SSH то впускал, то отваливался на записи. df -h показывал / на 100%, df -i — inode тоже на пределе: миллионы мелких файлов в старых overlay2.

journald без Vacuum, логи nginx в /var на том же корне, docker prune никогда не делали. Бэкап VPS — снапшот провайдера раз в неделю, последний удачный — до забития, то есть бесполезен для «вернуть место».

Рамки

Ограничения и задача

  • Нельзя снести /var/log целиком: нужен хвост для разбора 504.
  • Консоль провайдера была, но пароль root в панели не совпадал с актуальным.
  • Магазин в сезон распродажи — простой считается деньгами, не «ну сервер».

Работы

Что сделали

  1. Зашли через VNC/консоль хостера, примонтировали что можно, journalctl --vacuum-size, подчистили старые overlay неактивных образов, не трогая running container.
  2. Вынесли journal на отдельный partition/лимит RateLimit и SystemMaxUse. Логи nginx — ротация и отдельный том.
  3. Настроили мониторинг df -h и df -i с порогом 75/85, не 99.
  4. Починили аварийный доступ: ключ в панели, отдельный user, сессия не единственная точка входа.
  5. После стабилизации — apt и перезагрузка в окно, потому что kernel жил уже 240 дней.

Факт

Результат

  • HTTP 200, SSH стабилен, / на 28% после уборки и выноса логов.
  • Повторного забития за три месяца не было: vacuum и prune по cron с алертом, если prune не освободил ожидаемое.
  • Снапшот больше не единственный backup: rsync данных магазина уходит offsite.

Практика

Выводы

  • Ping не равен сервису. Диск и inode — отдельные датчики.
  • Docker без политики хранения забивает корень незаметно для тех, кто смотрит только на «память и CPU».
  • Консоль провайдера и актуальный пароль/ключ — часть backup-плана, не мелочь.

Стек

Технологии в этом кейсе

  • Ubuntu Server
  • systemd-journald
  • Docker
  • nginx
  • UFW

Практика

Материалы по теме

Перелинковка

Связанные услуги

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

Услуга

Мониторинг серверов

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

Подробнее

Консультация

Разбрать похожую ситуацию

Опишите инфраструктуру и ожидаемый результат. Уточним вводные и предложим следующий практический шаг.