MAATRIX / Блог / Логи и мониторинг контейнеров

Логи и мониторинг контейнеров

Логи и мониторинг Docker-контейнеров на VPS
Блог MAATRIX · 2026-07-07

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

Чтение логов

Базовый инструмент — docker logs. Смотрим последние строки и следим в реальном времени:

docker logs --tail 100 -f app

Часто нужен диапазон по времени — например, что было за последний час:

docker logs --since 1h --timestamps app

Если контейнеров много, удобнее compose — он покажет логи всего стека сразу, с цветной разбивкой по сервисам:

docker compose logs -f --tail 50

Какой VPS выбрать для небольшого Docker-проекта

Для небольшого Docker-проекта начните со Старт: 2 vCPU, 4 ГБ памяти и 80 ГБ NVMe. Если на сервере будет несколько приложений, сайтов или контейнеров, рассмотрите Стандарт: 4 vCPU и 8 ГБ памяти. Это ориентиры для небольшого проекта, а не обещание конкретного числа посетителей или запросов.

Для небольшого проекта

Старт · 2 vCPU · 4 ГБ RAM
80 ГБ NVMe
Начальная конфигурация для приложения и сопутствующих сервисов.

Заказать Старт

Для нескольких приложений

Стандарт · 4 vCPU · 8 ГБ RAM
160 ГБ NVMe
Больше памяти и процессорных ресурсов на одном VPS.

Заказать Стандарт

После заказа переходите к настройке по статье. Если ресурсы заканчиваются, увеличьте конфигурацию; для базы данных дополнительно учитывайте объём и характер запросов.

В кнопках заказа выбрана локация в Великобритании. Другую страну можно выбрать при оформлении.

Оплата VPS картой РФ или по СБП доступна в личном кабинете. Для безналичной оплаты от юридического лица или ИП запросите счёт у support@maatrix.io, указав тариф и реквизиты.

Ротация логов

По умолчанию Docker пишет логи в JSON-файлы, которые растут бесконечно. Болтливый контейнер способен забить весь диск за сутки. Лечится ротацией в /etc/docker/daemon.json:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

После правки перезапустите демон:

systemctl restart docker

Теперь каждый контейнер хранит максимум 3 файла по 10 МБ. Проверить, где физически лежат логи и сколько весят:

du -sh /var/lib/docker/containers/*/*-json.log

На NVMe-дисках MAATRIX запись логов не создаёт I/O-затыков, но дисциплина ротации всё равно обязательна — место не резиновое.

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

Живая картина потребления CPU, памяти, сети и диска по каждому контейнеру:

docker stats

Для скриптов и алертов удобен разовый снимок в нужном формате:

docker stats --no-stream \
  --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"

Проверить состояние и код выхода упавшего контейнера:

docker inspect --format '{{.State.Status}} {{.State.ExitCode}}' app

Healthcheck

Мониторинг ресурсов не скажет, что приложение внутри зависло, а процесс жив. Для этого — healthcheck. Docker сам будет проверять сервис и помечать контейнер как unhealthy:

services:
  app:
    image: myapp:1.0
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
      interval: 30s
      timeout: 5s
      retries: 3

Статус проверок виден в docker ps в колонке STATUS — например, Up 2 hours (healthy). На это можно повесить автоперезапуск или алерт.

Лёгкий мониторинг: Dozzle

Не хотите тянуть тяжёлый стек Prometheus + Grafana ради одного VPS? Dozzle даёт веб-интерфейс логов всех контейнеров в реальном времени, весит копейки:

docker run -d --name dozzle \
  --restart unless-stopped \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -p 127.0.0.1:8888:8080 \
  amir20/dozzle

Пробросьте порт через nginx с basic-auth — и у вас удобный дашборд логов без базы данных и настройки экспортеров.

Частые ошибки

  • Логи не ротируются — диск заполнен на 100%, контейнеры падают. Всегда настраивайте max-size и max-file.
  • Приложение пишет логи в файл внутри контейнера, а не в stdout — тогда docker logs пуст. Приучите сервис писать в stdout/stderr.
  • Нет healthcheck — контейнер «жив», но не отвечает, и вы узнаёте об этом от пользователей.
  • Следите за диском: df -h. Ежедневные бэкапы MAATRIX спасут данные, но переполненный диск всё равно уронит сервис.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

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

Почему docker logs ничего не показывает?

Скорее всего, приложение пишет логи в файл внутри контейнера, а не в stdout/stderr. Docker собирает только стандартные потоки. Настройте вывод приложения в stdout.

Как не дать логам забить диск?

Настройте ротацию в /etc/docker/daemon.json через log-opts max-size и max-file, затем перезапустите демон. Так каждый контейнер ограничен по объёму логов.

Нужен ли Prometheus для маленького VPS?

Не обязательно. Для одного-двух серверов хватит docker stats, healthcheck и лёгкого Dozzle. Тяжёлый стек мониторинга оправдан, когда серверов много.

Готовы перейти к настройке?

Закажите Старт с конфигурацией, предложенной для старта, или сравните все тарифы. Оплата картой РФ и через СБП — в личном кабинете.

Заказать Старт Все тарифы и цены