Подборка контейнеров, которые держат мой хоумлаб под контролем: метрики в реальном времени, аптайм, логи, DNS и долгосрочная аналитика. Проверено на Raspberry Pi и мини‑ПК.
Когда я только начинал собирать хоумлаб на Raspberry Pi 4B, Docker казался идеальным способом попробовать десятки сервисов. Но падения контейнеров и нехватка ресурсов быстро научили: без мониторинга далеко не уедешь. Перейдя на мини‑ПК как основной сервер, я шаг за шагом собрал стек из восьми контейнеров — от метрик и аптайма до логов и DNS‑аналитики. Ниже — мой рабочий набор, рекомендации по настройке и советы, как масштабировать всю систему без боли.
Portainer: визуальное управление Docker и быстрая отладка
Если вы еще привыкаете к контейнерам, Portainer — отличный «центр управления полетами». Через веб‑интерфейс удобно поднимать стеки, ограничивать ресурсы, подключать тома и сети, а также проводить быструю диагностику без CLI. По мере роста хоумлаба Portainer берет на себя роль центральной панели для нескольких хостов (через агент), помогает унифицировать деплой, хранить шаблоны и соблюдать дисциплину версий образов.
Советы по практике:
- Разделяйте стеки по ролям: «infra», «monitoring», «apps» — проще сопровождать.
- Для удаленных узлов используйте агент и проксируйте доступ через свой реверс‑прокси.
- Давайте контейнерам лимиты CPU/RAM — это снижает каскадные падения при всплесках нагрузки.
Beszel: простой обзор ресурсов на одном экране
Beszel — минималистичный мониторинг с агентами для Linux, Windows и macOS. Он показывает загрузку CPU, память, диски, процессы и несколько базовых трендов. Для хоумлаба это «быстрый взгляд», который экономит время: сразу видно, какая машина кипит, где закончилось место и какой процесс «жрет» память.
Чем полезен:
- Единая панель для серверов, мини‑ПК, ноутбуков и даже виртуалок.
- Минимальные требования к ресурсам — подходит для узлов рядом с IoT.
- Хорошо комбинируется с Uptime Kuma и Netdata: первый отвечает за доступность, второй — за глубину, Beszel — за «сводку».
Uptime Kuma: аптайм и алерты по сервисам
Иммич, финансы, рецепты, умный дом — когда любой из этих сервисов недоступен, проще всего открыть Uptime Kuma. Он поддерживает HTTP(S), TCP, DNS, Ping, Push и Docker‑мониторинг через сокет. Для критичных вещей (роутер, DNS, домашняя автоматизация) настраивайте уведомления — и узнавайте о проблемах первыми, а не из сообщений семьи.
Практика настройки:
- Заведите отдельный «Heartbeat»‑монитор для каждого узла, чтобы понять, это упал хост или только конкретный сервис.
- Группируйте мониторы по тегам: «network», «storage», «media», «home‑automation».
- Включайте историю и SLA‑диаграммы — они помогут объяснить домочадцам, почему нужен апгрейд оборудования.
Netdata: диагностика в реальном времени и «разбор полетов»
Netdata показывает метрики раз в секунду — CPU, RAM, диски, I/O, сеть, контейнеры, базы данных и десятки интеграций. Это лучший инструмент, когда «что‑то не так, но непонятно, что»: визуализации быстро раскрывают узкие места, утечки памяти, конкуренцию за диск и шторма сети.
Нюансы и рекомендации:
- На ARM (например, Raspberry Pi 4B 4 GB) тщательно отключайте лишние коллекторы и ретеншн — иначе будет тяжело. На x86 с 8–16 GB Netdata чувствует себя заметно лучше.
- Локальный режим достаточен для домашних задач; облако удобно, но необязательно.
- Храните краткосрочную историю в Netdata, а долгую — в Prometheus.
Pi‑hole: видимость сетевой активности и защита от «болтливых» IoT
Pi‑hole — это не только блокировка рекламы. В роли DNS для вашей сети он дает прозрачность по запросам устройств. Часто именно он первым показывает, насколько «болтливы» дешевые гаджеты, телевизоры и колонки: какие домены дергают и как часто. В связке с локальным резолвером (например, recursive DNS на базе Unbound) вы получаете приватность и контроль без стороннего вмешательства.
Практические советы:
- По возможности передайте DHCP на Pi‑hole — тогда вы увидите клиентов по именам, а не только по IP.
- Используйте вайтлисты и собственные доменные переопределения, чтобы не ломать обновления и голосовых помощников.
- Включите логи с умеренной детализацией: достаточно для аналитики, не перегружающе по диску.
Dozzle: быстрые логи контейнеров без лишней боли
Dozzle кардинально упрощает работу с логами: один веб‑интерфейс, потоковые логи в реальном времени, поиск и фильтры. Это особенно спасает при отладке баз данных и миграций: видны ошибки на лету, легко поймать неправильные переменные окружения или огрехи в YAML.
Лайфхаки:
- Разворачивайте Dozzle на каждом хосте, где крутятся контейнеры — так вы не будете шарить Docker‑сокет по сети.
- Ограничьте доступ базовой авторизацией через реверс‑прокси.
- Держите форматирование логов единым (JSON, уровни) — Dozzle от этого только выигрывает.
Prometheus + Grafana: долговременная история и решения на данных
Ежедневные задачи закрывают Beszel, Uptime Kuma и Netdata. Но чтобы принимать решения — апгрейдить RAM, добавлять NIC или переносить нагрузку — нужен горизонт недель и месяцев. Здесь в дело вступают Prometheus (сбор и хранение метрик по pull‑модели) и Grafana (дашборды, переменные, алертинг, аннотации).
Что обязательно добавить к стеку:
- Node Exporter на Linux‑узлы и Windows‑экспортер для Windows‑машин.
- cAdvisor для метрик контейнеров (CPU, память, сетевые и дисковые показатели по каждому контейнеру).
- Blackbox Exporter для активных проверок HTTP/ICMP/TCP как дополнение к Uptime Kuma.
Практика:
- Храните «сырые» метрики 15–30 дней, остальное — дистиллят (recording rules) для трендов.
- Задавайте бюджеты в виде SLO/ошибок на дашбордах — это формализует «когда апгрейдить».
- Подключите алерты по CPU steal, очередям дисков, p95‑латентности и out‑of‑memory killer — они ловят большинство проблем до падения.
Мини‑гайд: быстрый старт через docker‑compose
Ниже три «костяка» для старта. Не вставляйте их бездумно: проверьте версии образов и права доступа.
# Uptime Kuma (минимальный пример)
services:
uptime-kuma:
image: louislam/uptime-kuma:latest
container_name: uptime-kuma
restart: unless-stopped
ports:
- "3001:3001"
volumes:
- ./uptime-kuma:/app/data
# Dozzle (доступ только на чтение к сокету Docker)
services:
dozzle:
image: amir20/dozzle:latest
container_name: dozzle
restart: unless-stopped
ports:
- "9999:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
# Prometheus + cAdvisor (упрощенно)
services:
cadvisor:
image: gcr.io/cadvisor/cadvisor:latest
privileged: true
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
restart: unless-stopped
prometheus:
image: prom/prometheus:latest
volumes:
- ./prometheus:/etc/prometheus
command:
- --config.file=/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
restart: unless-stopped
Безопасность и производительность: на что обратить внимание
- Docker‑сокет: где возможно — читайте его только на чтение. Portainer требует больше прав, ограничивайте доступ сетью и авторизацией.
- Ресурсы: лимитируйте контейнеры по CPU/RAM; для Netdata снижайте детальность на слабом железе.
- Хранилище: логи и метрики — это I/O. Перенесите тома на SSD, если система на eMMC/SD‑карте.
- Резервирование: экспортируйте конфигурации дашбордов Grafana и бэкапьте тома с данными (Uptime Kuma, Prometheus, Pi‑hole).
Как это работает вместе
Portainer — центр управления и деплоя. Beszel — быстрый обзор «здоровья» узлов. Uptime Kuma — оповещения о недоступности. Netdata — «лупа» для анализа в реальном времени. Pi‑hole — сетевой «рентген» и чистый DNS. Dozzle — «консоль» логов. Prometheus — долговременная память метрик, Grafana — визуализация и алерты. На панели‑закладках (например, в домашней стартовой странице) удобно закрепить веб‑интерфейсы каждого из них — и вы мгновенно попадаете туда, где нужно.
Итог
Мониторинг хоумлаба — это не один инструмент, а связка ролей: обзоры, метрики, доступность, логи и сеть. Эти восемь контейнеров закрывают весь цикл: от «увидеть всплеск» и «получить тревогу» до «понять причину» и «подтвердить решение на данных». По мере роста инфраструктуры стек масштабируется горизонтально: добавляете экспортёры, расширяете Prometheus, дробите дашборды Grafana и формализуете SLO. А главное — вы тратите меньше времени на тушение пожаров и больше — на эксперименты.