Proxmox CPU Dashboard
Локальная веб-панель CPU для Proxmox. Данные читаются напрямую из /proc и
/sys, без Proxmox API. Интерфейс обновляется каждые две секунды.
Установка для новичка — скопируйте команды целиком
Что потребуется
- сервер Proxmox VE с доступом в интернет или к
git.myown.center; - вход в консоль Proxmox под пользователем
root; - IP-адрес Proxmox в локальной сети;
- свободный TCP-порт
9105между вашим компьютером и Proxmox.
Go, Node.js, Docker и отдельную базу данных устанавливать не нужно. Панель поставляется готовым Linux-бинарником, а SQLite встроен внутрь.
1. Подключитесь к Proxmox
На своём компьютере откройте Terminal и выполните команду, заменив IP на адрес своего Proxmox:
ssh root@192.168.0.10
Введите пароль root. Следующие команды выполняйте уже внутри Proxmox.
2. Установите панель
Скопируйте весь блок и вставьте его в консоль Proxmox:
apt-get update
apt-get install -y curl ca-certificates tar smartmontools iproute2 iputils-ping ethtool
cd /tmp
curl -fL \
https://git.myown.center/maxim/ProxmoxDash/releases/download/latest/proxmox-dashboard-install-amd64.tar.gz \
-o proxmox-dashboard-install-amd64.tar.gz
tar -xzf proxmox-dashboard-install-amd64.tar.gz
cd proxmox-dashboard-install
UPDATE_MODE=notify ./scripts/install.sh
Готово. Установщик сам:
- положит бинарник в
/usr/local/bin; - создаст локальную базу настроек и истории;
- установит systemd-службу;
- запустит панель;
- настроит ежедневную проверку новых версий;
- сохранит предыдущий бинарник при будущем обновлении.
3. Откройте панель
В браузере на своём компьютере откройте:
http://192.168.0.10:9105
Замените 192.168.0.10 на IP своего Proxmox. Узнать адрес можно командой:
hostname -I
4. Проверьте, что всё работает
systemctl --no-pager --full status proxmox-cpu-dashboard.service
curl -I http://127.0.0.1:9105
В статусе службы должно быть active (running), а локальная проверка должна
вернуть HTTP-ответ 200 OK.
Как обновлять
В режиме notify, установленном командами выше, откройте в панели
Настройки → Обновления и нажмите Проверить и установить обновление.
Если нужны полностью автоматические обновления, повторно запустите установщик:
cd /tmp/proxmox-dashboard-install
UPDATE_MODE=auto ./scripts/install.sh
Если репозиторий станет приватным
Создайте в Gitea токен только для чтения репозитория и передайте его
установщику. Вместо текста ВАШ_ТОКЕН вставьте настоящий токен:
cd /tmp/proxmox-dashboard-install
GITEA_TOKEN='ВАШ_ТОКЕН' UPDATE_MODE=notify ./scripts/install.sh
Токен сохраняется на Proxmox с правами 0600 и не показывается в браузере.
Если страница не открывается
Выполните на Proxmox:
systemctl restart proxmox-cpu-dashboard.service
systemctl --no-pager --full status proxmox-cpu-dashboard.service
journalctl -u proxmox-cpu-dashboard.service -n 100 --no-pager
ss -lntp | grep 9105
Проверьте, что используете правильный IP, порт 9105 доступен из локальной
сети, а firewall Proxmox не блокирует подключение. Панель пока не имеет
авторизации — не публикуйте порт 9105 напрямую в интернет.
Панель показывает:
-
изменение критичных SMART-счётчиков, результаты self-test и исчезновение дисков;
-
realtime read/write IOPS, MB/s, latency, utilization и глубину очереди каждого диска;
-
недельную историю IOPS/utilization и алерты при устойчивом I/O-давлении;
-
вероятный источник I/O: VM/LXC, процесс хоста или активная backup/snapshot/migration-задача;
-
отдельные пороги HDD, SATA SSD и NVMe с исключениями по имени или серийному номеру;
-
недельные baseline-аномалии IOPS, latency, температуры, RAM, ZFS и длительности backup;
-
корреляцию связанных событий в одну причинно-следственную цепочку;
-
время первого появления и последнего наблюдения каждого уведомления;
-
автоматический короткий SMART self-test раз в неделю для дисков без свежего теста;
-
datasets, vdev-классы, ошибки read/write/checksum, scrub и ARC ZFS;
-
доступность шлюза, DNS и интернета, packet loss, latency и внешний IP;
-
тип, состояние, скорость, duplex и master сетевых интерфейсов;
-
состояние связи с NUT/apcupsd, возраст батареи и расчётную автономность UPS;
-
настраиваемый сценарий корректного выключения VM/LXC и Proxmox с безопасным dry-run;
-
самоконтроль сборщика, записи истории, свободного места базы и systemd watchdog;
-
модель и текущую загрузку CPU;
-
количество сокетов, физических ядер и логических потоков;
-
среднюю текущую частоту;
-
load average за 1, 5 и 15 минут;
-
uptime;
-
доступные аппаратные температуры.
-
использование RAM, доступную память, кэш, буферы и swap.
-
заполнение системного диска
/; -
список физических дисков, модель, серийный номер, SMART, температуру, наработку и доступные данные об износе;
-
текущую скорость и суммарные счётчики сетевого трафика.
-
состояние, заполнение, фрагментацию и scrub/resilver ZFS-пулов;
-
состояние UPS через NUT или apcupsd, заряд, автономность, нагрузку и напряжение.
-
состояние VM и LXC, CPU, память, выделенные ядра и uptime.
-
IP-адреса VM через QEMU Guest Agent, автозапуск, storage, заполнение диска и суммарный сетевой трафик гостей;
-
последнюю найденную резервную копию каждой VM/LXC, storage, размер и возраст.
-
версию Proxmox, запущенное и последнее установленное ядро, доступные обновления, необходимость перезагрузки, последнее обновление системы, ближайшие backup и ZFS scrub.
-
управляемый мониторинг HTTP/HTTPS, TCP и ping для homelab-сервисов: отклик, ожидаемый код и текст, TLS-сертификат, uptime за сутки и неделю;
-
ошибки systemd и ядра за 24 часа, упавшие службы, ошибки и drops каждого сетевого интерфейса.
-
snapshots VM/LXC с возрастом, описанием и доступным размером;
-
последние задачи Proxmox: backup, start/stop, snapshot, migration, пользователь, длительность и результат;
-
сравнение размера backup с предыдущей копией и ручную безопасную проверку читаемости локального архива или конфигурации PBS snapshot;
-
карту homelab: Proxmox, VM/LXC, сервисы и используемые storage.
Через кнопку настроек можно скрывать неиспользуемые карточки и переключать светлую или тёмную тему. Карточки можно переставлять перетаскиванием или стрелками в настройках. Видимость, порядок и тема сохраняются локально в браузере.
Центр уведомлений объединяет критические события, предупреждения и информационные сообщения по CPU, памяти, storage, SMART, ZFS, UPS, VM/LXC и резервным копиям. Критические события всегда отображаются первыми.
Во вкладке Настройки → Почта настраиваются SMTP-сервер, получатель и интервал
агрегированной сводки. Можно отдельно выбрать уровни важности и источники
событий — например, полностью исключить уведомления о резервных копиях. Там же
доступна отправка тестового письма. Поддерживаются STARTTLS (обычно порт 587) и
SMTP поверх TLS (порт 465).
Тема письма кодируется по MIME и корректно отображает кириллицу. Сам дайджест
оформлен как HTML-письмо и содержит только новые неподтверждённые события — уже
отправленные или принятые события повторно не рассылаются. В центре уведомлений
есть вкладки активных событий и 30-дневной истории. Кнопка Принято скрывает
событие из активных, не удаляя его из журнала; повторное возникновение проблемы
создаёт новое событие.
Критические события отправляются сразу, не ожидая очередной сводки. К ним относятся недоступность сервиса, отказ SMART/ZFS/systemd, критический перегрев и низкий заряд UPS. Переход UPS на батарею также отправляется немедленно. После устранения уже отправленной проблемы приходит отдельное уведомление о восстановлении.
Пороги уведомлений сохраняются в SQLite и настраиваются через вкладку
Настройки → Уведомления. Панель раз в минуту сохраняет историю CPU,
температуры, памяти, swap, сети, storage, ZFS, UPS и гостей. Данные старше семи
дней удаляются автоматически. В подробных окнах карточек текущие показатели и
история разделены на вкладки. Для графиков можно выбрать последний час, 24 часа
или 7 дней, а точные значения и время отображаются при наведении.
База данных по умолчанию находится здесь:
/var/lib/proxmox-dashboard/dashboard.db
Готовые версии для Linux публикуются в разделе Releases репозитория. Бинарник не требует установки Go или системной библиотеки SQLite.
Проверка обновлений выполняется отдельным systemd-таймером раз в сутки. Статус
виден во вкладке Настройки → Обновления и в центре уведомлений. Доступны два
режима: notify только сообщает о новой версии, auto скачивает её, сохраняет
предыдущий бинарник как резервный и перезапускает панель. В режиме notify
обновление можно запустить кнопкой Проверить и установить обновление в
настройках. Запрос выполняет отдельная системная служба.
На главном экране находятся компактные карточки CPU, памяти, диска и сети. Нажатие на карточку открывает подробные показатели.
Быстрый запуск
Скопируйте dist/proxmox-cpu-dashboard-linux-amd64 на Proxmox, затем:
chmod +x proxmox-cpu-dashboard-linux-amd64
./proxmox-cpu-dashboard-linux-amd64
Установка на сервер и обновления
Скачайте из Releases архив proxmox-dashboard-install-amd64.tar.gz, распакуйте
его на Proxmox и запустите от root:
tar -xzf proxmox-dashboard-install-amd64.tar.gz
cd proxmox-dashboard-install
UPDATE_MODE=notify ./scripts/install.sh
Для полностью автоматических обновлений используйте UPDATE_MODE=auto.
Приватному репозиторию нужен read-only API-токен Gitea:
GITEA_TOKEN='read-only-token' UPDATE_MODE=auto ./scripts/install.sh
Токен сохраняется с правами 0600 в /etc/proxmox-dashboard/update.env.
Проверить обновления вручную можно командой:
systemctl start proxmox-dashboard-update.service
systemctl status proxmox-dashboard-update.service
Откройте:
http://192.168.0.10:9105
Установка как службы
install -m 0755 proxmox-cpu-dashboard-linux-amd64 /usr/local/bin/proxmox-cpu-dashboard
install -m 0644 proxmox-cpu-dashboard.service /etc/systemd/system/proxmox-cpu-dashboard.service
systemctl daemon-reload
systemctl enable --now proxmox-cpu-dashboard
systemctl status proxmox-cpu-dashboard
По умолчанию панель слушает порт 9105 на всех интерфейсах. Другой адрес можно
задать переменной DASHBOARD_ADDR, например 127.0.0.1:9105.
На веб-сервере пока нет авторизации. Не открывайте порт 9105 в интернет.
Для SMART-метрик на Proxmox должен быть установлен пакет smartmontools:
apt update
apt install -y smartmontools
Без него список дисков и их паспортные данные продолжат отображаться, а SMART будет отмечен как недоступный.
Проверить исходные SMART-данные вручную:
smartctl -x /dev/sda
smartctl -x -j /dev/sda
smartctl -x /dev/nvme0n1
У HDD обычно нет показателя износа в процентах. Для NVMe используется
Percentage Used, а для SATA SSD — поддерживаемые накопителем атрибуты ресурса.
Если производитель не публикует такой атрибут, панель корректно показывает —.
UPS
Панель автоматически пробует получить данные через NUT (upsc), затем через
apcaccess. Для проверки NUT:
upsc -l
upsc ИМЯ_UPS
Для проверки apcupsd:
apcaccess status
API
GET /api/cpu— один JSON-снимок.GET /api/system— единый JSON-снимок CPU и памяти.GET /api/events— поток метрик SSE с интервалом две секунды.GET/POST/PUT/DELETE /api/services— управление проверками сервисов.GET /api/services/history— семидневная история доступности и отклика.GET/PUT/DELETE /api/settings/maintenance— состояние, запуск и досрочное завершение плановых работ.GET/DELETE /api/agents— подключённые гостевые агенты.POST /api/agents/enrollment-token— одноразовый токен регистрации на 15 минут.
Maintenance-режим
Во вкладке Настройки → Maintenance можно на заданное время отключить все
алерты либо выбрать конкретные сервисы и VM/LXC. Подавленные события не
отправляются по почте и не отображаются как активные, но сохраняются в истории
с причиной плановых работ. После окончания окна обычный мониторинг включается
автоматически.
Агенты VM и LXC
Read-only агент показывает состояние Linux внутри VM/LXC: CPU, load average, память, корневой раздел, uptime, ОС, ядро, IP-адреса, systemd-службы, доступные APT-обновления и необходимость перезагрузки. Для Docker отображаются контейнеры, health-check, число перезапусков, CPU и память. Агент сам подключается к Dashboard каждые 10 секунд; открывать входящий порт внутри гостевой системы не нужно.
В подробностях агента systemd-службы разделяются на системные, установленные дополнительно и локальные unit-файлы. Для каждой службы показываются пакет и путь unit-файла, время запуска, число перезапусков, последний exit code, память и накопленное CPU-время, когда соответствующий accounting доступен в systemd.
Расширенная диагностика агента включает последние сообщения проблемных служб,
Requires/After, PID, команду запуска и слушающие порты; выявляет частые
рестарты, OOM-kill и процессы в D-state. Отдельно отображаются top процессов по
CPU и RAM с накопленным I/O, swap, PSI pressure, все постоянные файловые системы,
их заполнение и использование inode.
Панель «Диагностика homelab» и карта сопоставляют известные IP и порты с VM/LXC, агентом, systemd-службой или Docker-контейнером и настроенной HTTP/TCP-проверкой. Связи по PID и порту считаются подтверждёнными; совпадения только по названию помечаются как предположение.
Для сложных reverse proxy и Docker-сетей в управлении сервисами можно сохранить
ручную связь сервис → агент/VMID → systemd/Docker/процесс → порт. Она имеет
приоритет над автоматическим определением и используется для группировки
связанных уведомлений по первопричине.
Dashboard хранит семь дней истории CPU, RAM, swap, PSI и файловых систем каждого
агента. Из подробностей агента доступны только заранее разрешённые действия:
перезапуск известной systemd-службы или Docker-контейнера, reset-failed и
обновление списка пакетов. Агент не принимает произвольные shell-команды; каждое
действие требует подтверждения в браузере и сохраняется в журнале управления.
Откройте Настройки → Агенты, укажите адрес Dashboard, доступный из VM/LXC, и
VMID. Кнопка создаст готовую команду установки. Одноразовый токен действует 15
минут и после регистрации заменяется индивидуальным секретом агента.
После однократной установки агент обновляется автоматически вслед за Dashboard. Центральный сервер отдаёт агенту собственный бинарник и SHA-256; агент проверяет контрольную сумму, атомарно заменяет файл и перезапускается через systemd. Если агент был удалён из Dashboard, повторная команда с новым токеном автоматически выполнит новую регистрацию.
В первой версии агент не выполняет команды и не перезапускает службы или
контейнеры. Для чтения Docker ему требуется доступ к /var/run/docker.sock,
поэтому служба устанавливается от root. Сам Dashboard пока не имеет
авторизации: используйте локальную сеть или HTTPS через доверенный reverse
proxy и не публикуйте агентские API напрямую в интернет.
Полностью удалить агент из VM/LXC:
curl -fsSL https://git.myown.center/maxim/ProxmoxDash/raw/branch/main/scripts/uninstall-agent.sh | sh
Оформление, пороги, почта и обновления Dashboard находятся в обычных настройках.
Рабочие инструменты — сервисы, агенты, плановые работы и UPS-сценарий — вынесены
в отдельный раздел Управление в шапке Dashboard.
Сборка
go test ./...
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o proxmox-cpu-dashboard .
Сетевые ошибки и температура CPU (v0.19.3)
RX/TX drops отображаются отдельно как информационные счётчики. Их рост сам по себе не вызывает аварийный алерт: в том числе LLDP на Linux bridge. Настройки Keenetic, LLDP и group_fwd_mask менять не требуется. Для VM учитываются tap, для LXC — veth; fwbr/fwpr/fwln остаются в группе интерфейсов хоста.
Новые rx_errors/tx_errors, CRC/frame/FIFO/missed, carrier/link-down вызывают
критический алерт. Sysfs позволяет отделить rx_missed_errors от RX drops,
которые в /proc/net/dev объединены. Для Atlantic дополнительно читаются
InErrors, InDroppedDma, AllocFails, SkbAllocFails и Restarts через ethtool -S.
Установите ethtool на существующем хосте для этой дополнительной диагностики.
При отсутствии утилиты остаются стандартные счётчики sysfs. Счётчики ошибок
могут пересекаться: их сумма — прирост счётчиков, а не число уникальных пакетов.
После перезапуска и сброса счётчиков старые значения не создают новые алерты.
Карточка CPU и новые точки истории показывают максимум доступных датчиков CPU, а не среднее Tctl/Tdie/CCD или ядер. На AMD Tctl может включать управляющее смещение; подписи и значения всех датчиков доступны в подробностях CPU. История снимается раз в минуту, а на диапазоне 7 дней усредняется по 10 минутам, поэтому короткие пики между измерениями не гарантированно попадут на график. Старые точки до обновления остаются средними: исходные значения датчиков в них не сохранены. Масштаб графика расширяется для значений выше 100 °C.
Релиз Linux amd64 собирается с номером версии и без CGO:
./scripts/build-release.sh v0.19.3
Скрипт запускает тесты и создаёт в dist бинарник, SHA-256 и установочный архив, совместимые со встроенным обновлением из Gitea Releases.
Карта трафика NPM + CrowdSec (v0.20.0)
С v0.20.1 страница помещается в высоту окна: карта и лента в центре, счётчики сверху, график и рейтинги снизу. На телефоне доступны вкладки «Карта / События / Статистика». Последние 100 событий листаются по страницам; нажатие на строку открывает полные подробности.
Откройте Настройки → Карта трафика, включите страницу и выберите
агент VM/LXC, где установлены Nginx Proxy Manager и CrowdSec. Например,
nginxproxymanager · VMID 102. Необязательно выберите страну сервера для
конечной точки линий на карте. Сохраните настройки: в шапке появится ссылка
«Карта трафика», страница также доступна по /traffic.
Функция по умолчанию выключена. Только выбранный агент получает команду включить сбор. При выключении или смене источника старый агент останавливает сбор после следующего успешного обычного отчёта; сервер сразу прекращает приём его событий. Выключенная страница и её API недоступны. Это глобальная настройка экземпляра Dashboard. Карта не создаёт общих алертов или писем.
Агент автоматически обновляется вместе с Dashboard; для карты требуется
v0.20.0 или новее. Он читает стандартные NPM access-логи из
/opt/npm/data/logs/*_access.log, включая несжатые файлы ротации. Другой каталог
задаётся переменной окружения службы DASHBOARD_NPM_LOG_DIR; значение off
полностью запрещает сбор на конкретном агенте. Порт CrowdSec наружу открывать
и новые API-ключи создавать не нужно: используется локальная команда
cscli alerts list --since 24h --limit 50 -o json с существующими учётными
данными машины. Права на логи и запуск cscli нужны службе агента.
- Голубой: все записанные HTTP-запросы, включая обычные и локальные обращения.
- Оранжевый: реальные (не simulated) срабатывания сценариев CrowdSec.
- Розовый: решения CrowdSec, например ban или captcha. Это не счётчик фактически отброшенных пакетов и не список действующих сейчас банов.
- HTTP 401/403/502 сами по себе не считаются атакой или блокировкой.
Карта показывает страны источников, живую ленту последних 100 событий, счётчики за последние 24 часа, уникальные IP HTTP-клиентов, график по минутам и средний req/s за последние 60 секунд. Есть фильтры типа события, домена и внешних IP, пауза и полный экран. Локальные адреса видны в ленте без страны. Все счётчики следуют выбранным фильтрам. Уникальный IP не равен человеку.
Первое включение начинает чтение с конца логов, без импорта старых HTTP-запросов.
Обычно обновление занимает несколько секунд; Nginx записывает запрос после
его завершения. Это не карта открытых TCP-соединений. Позиции чтения и очередь
до 500 событий сохраняются в traffic-state.json рядом с конфигом агента;
повторы после обрыва связи устраняются на сервере. При переполнении очереди
чтение ждёт отправки. Если за время длительного простоя логи уже сжаты или
удалены, восстановить эти строки нельзя. Размер очереди чтения и ошибки
парсинга отображаются на самой странице, без глобальных уведомлений.
CrowdSec опрашивается каждые 15 секунд, до 50 последних alerts за 24 часа; при достижении лимита страница предупреждает о возможной неполноте истории. Связанный домен берётся из метаданных события, только если он однозначен. Новый ban не рисуется как новый запрос. Для наблюдения реально отброшенных firewall пакетов нужен отдельный источник: в этой версии его нет.
В SQLite хранится до 24 часов и 200 000 событий; старые строки удаляются при приёме новых данных. Данные каждого выбранного агента фильтруются отдельно. Query string и fragment URL отбрасываются на агенте и повторно на сервере; заголовки, cookie и тела запросов не передаются. IP, домен и путь сохраняются.
GeoIP работает локально: DB-IP Country Lite за октябрь 2026 встроена в бинарник,
исходящие запросы с IP посетителей не выполняются. Координаты на карте — условные
точки стран Natural Earth, а не точное местоположение посетителя. Дата базы
видна внизу карты. Обновление базы требует нового релиза; автоматического
скачивания нет. Лицензии и происхождение данных: assets/NOTICE.md.
Локальный предпросмотр с явно обозначенными искусственными данными:
DASHBOARD_TRAFFIC_PREVIEW=1 go test -run '^TestTrafficPreview$' -timeout 30m
# http://127.0.0.1:19105/traffic
Сетевая активность TCP/UDP/ICMP (v0.21.0)
В Настройки → Карта трафика включите дополнительный сбор TCP/UDP/ICMP.
Он выполняется только выбранным агентом v0.21.0+; на странице карты появится
кнопка TCP / UDP, открывающая /network. Основной выключатель карты
отключает оба сборщика. Сетевой режим по умолчанию выключен и не создаёт
общих алертов/писем.
На Debian/Ubuntu агент сам проверяет и устанавливает conntrack, когда
включён сетевой режим. Выполняются apt-get update и установка только
conntrack с зависимостями (--no-install-recommends --no-remove), без
обновления всей системы. Установка выполняется от root через отдельную
systemd-службу, как существующие операции обновления агента, и не требует
отключать его read-only sandbox. Начатая пакетная операция завершается даже
при выключении сбора. Ход/ошибка видны в диагностике; повтор после ошибки —
не чаще раза в 30 минут работы процесса. После перезапуска агента проверка
выполняется заново. Если conntrack уже установлен, apt-get не запускается.
На других системах, без root или systemd/apt-get, выводится инструкция для
ручной установки. Для счётчиков CrowdSec требуется доступный nft; он
обычно уже установлен вместе с nftables-bouncer и автоматически не ставится.
Агенту нужны root/CAP_NET_ADMIN в сетевом namespace хоста. Установщик агента
запускает службу от root. Чтение: /proc/net/nf_conntrack, если доступен,
иначе conntrack -L -f ipv4/ipv6 -o extended. Ничего устанавливать на хост
самого Dashboard не требуется. Firewall, NAT и sysctl сборщик не меняет.
Страница показывает состояния TCP, UDP/ICMP-потоки, обе пары адресов до/после NAT (в том числе Docker), локальную GeoIP, топ инициаторов и портов, фильтры, поиск и детали потока. Список листается по страницам; переход на следующую фиксирует снимок, «К свежим» возвращает live. Для телефона — вкладки.
Это снимки таблицы примерно каждые 5 секунд, не полный журнал соединений: короткие потоки между снимками могут быть пропущены. До 5 000 записей на снимок, 8 MiB вывода команды и таймаут 4 секунды; ограничения/ошибки видны в диагностике. Сохраняется только последний снимок каждого агента. Инициатор не обязательно внешний клиент: NPM → upstream — отдельный поток. Порт не доказывает протокол приложения; UDP ASSURED не означает TCP handshake.
Байты/пакеты доступны только при включённом учёте conntrack для конкретных
потоков. Это накопленные значения за жизнь потока, а не трафик за 24 часа.
При отсутствии учёта интерфейс показывает «нет учёта». При необходимости
администратор может включить net.netfilter.nf_conntrack_acct=1; изменение
применяется к новым потокам и автоматически не выполняется.
Firewall читается раз в 30 секунд командой nft -j list ruleset. Поддержаны
анонимные счётчики непосредственно перед финальным drop/reject в таблице
или цепочке с crowdsec в имени. Остальные счётчики не выдаются за блокировки.
Это сумма пакетов/байтов выбранных правил с момента их создания, независимо
от фильтров потоков; при пересоздании правил она может уменьшиться.
Для iptables/ipset-only, именованных счётчиков и правил без счётчиков выводится
«недоступно», а не ноль. Отброшенный пакет до подтверждения conntrack может
отсутствовать в таблице потоков. Содержимое пакетов не перехватывается.
Сетевой слой карты и фильтр мониторинга (v0.22.0)
При включённом сборе TCP/UDP/ICMP переключатель Сеть на карте показывает текущие потоки отдельным слоем: TCP — зелёный, UDP — розовый, ICMP/ICMPv6 — жёлтый. Импульсы означают новый снимок (~5 секунд), не отдельные пакеты или новые подключения. Входящие и исходящие потоки имеют разное направление. Локальные адреса и потоки без страны учитываются отдельно; при отсутствии свежего снимка 25 секунд сетевой слой гаснет. HTTP-статистика за 24 часа с текущими потоками не складывается. Фильтры домена и HTTP/CrowdSec относятся только к HTTP-слою; фильтры внешних IP и мониторинга действуют на оба слоя.
В Настройки → Карта трафика → Правила мониторинга задайте по одному правилу
на строку: IP | домен | префикс пути. IP точный, включая IPv6; домен и путь
необязательны. Пример: 192.168.0.10 или 192.168.0.10 | example.org | /health.
Для сетевых потоков применяются только правила без домена/пути, к IP инициатора.
При первом обновлении добавляется правило 192.168.0.10; его можно изменить
или полностью удалить. Сам фильтр по умолчанию выключен.
Скрыть мониторинг на карте и /network исключает совпадения из отображения
и соответствующей статистики. Настройка переключателя сохраняется в браузере.
HTTP-проверки остаются в истории и возвращаются при выключении фильтра;
новые правила сразу применяются и к старым записям. Срабатывания и решения
CrowdSec, а также общие счётчики firewall, никогда не скрываются этим фильтром.
Сетевые потоки по-прежнему хранятся только последним снимком, без истории.
Alpine LXC и Docker NPM/NPM+ (v0.23.0)
Установщик агента поддерживает Linux x86_64/amd64 с systemd или OpenRC
(Alpine LXC). Для Alpine команда из настроек сначала устанавливает curl и
CA-сертификаты, если curl отсутствует. Бинарник статический, без glibc;
скачивание проверяется по SHA-256. OpenRC-служба включается в default runlevel
и использует supervise-daemon: перезапускает агент после ошибки и обновления.
Команды: rc-service proxmox-dashboard-agent status/restart (выберите одно
действие). Журнал: /var/log/proxmox-dashboard-agent.log; его ротацию настройте
средствами ОС. Удаление — штатным scripts/uninstall-agent.sh.
Обновление пакетов ОС и управление systemd-службами из интерфейса остаются
функциями Debian/Ubuntu/systemd; этот релиз добавляет установку и работу агента
на OpenRC, а не эмуляцию systemd. Включённый сетевой сбор на Alpine ставит
conntrack-tools через apk add --no-cache. Ограничения CAP_NET_ADMIN и
сетевого namespace LXC сохраняются; никаких изменений конфигурации Proxmox,
privileged/nesting, firewall или sysctl агент не делает.
После выбора агента Docker-хоста и включения карты трафика агент автоматически:
- проверяет стандартные каталоги NPM и NPM+;
- находит запущенные контейнеры с nginx-proxy-manager/npmplus в имени образа
и определяет каталоги логов по mounts
/data, включая именованные volumes и вложенные bind mounts; - читает обычный формат NPM и формат NPM+
access.log, включая ротацию; - находит единственный контейнер образа
crowdsecurity/crowdsecи выполняет толькоcscli alerts listчерез локальный Docker socket. Docker CLI, новый bouncer key и опубликованный LAPI не нужны. Если контейнера нет, используется прежний локальныйcscli.
Поиск повторяется раз в минуту, поэтому пересоздание контейнеров подхватывается
автоматически. При нескольких CrowdSec задайте точный контейнер вручную:
DASHBOARD_CROWDSEC_CONTAINER=имя в /etc/proxmox-dashboard-agent.env и
перезапустите агент. Каталог логов можно переопределить переменной
DASHBOARD_NPM_LOG_DIR=/путь/к/логам; off выключает сбор трафика этого агента.
Используется локальный /var/run/docker.sock; rootless/удалённые Docker engines
и логи только в stdout этим обнаружением не поддерживаются.
NPM+ должен действительно писать access-логи: включите LOGROTATE=true в его
Compose и пересоздайте контейнер, если логирование выключено. Агент показывает
подсказку при отсутствии логов, но не меняет Compose приложений. Это настройка
NPM+, а не Dashboard.
Stream-логи NPM+ не считаются HTTP-запросами; сетевые потоки собираются conntrack.
Как и раньше, первый запуск чтения начинается с конца существующих логов.
Интерактивная карта (v0.24.0)
Карта трафика использует ту же настройку proxmox-theme, что и основной
Dashboard. Кнопка солнца/луны меняет тему; выбор сохраняется в браузере.
Светлая тема распространяется на карту, график, карточки и модальные окна.
Масштаб карты — от 100% до 600%: кнопки +/−, колесо мыши или жест двумя пальцами. Увеличенную карту можно перетаскивать; ↺ возвращает весь мир. При фокусе на карте доступны клавиши +/−, 0 и стрелки. Наведение подсвечивает контур страны и показывает суточные счётчики, а нажатие открывает подробности.
Четыре карточки статистики открывают окна с итогом, объяснением метрики, разбивкой по странам и примерами событий. Счётчики стран считаются сервером по всей доступной истории за 24 часа с текущими фильтрами. Примеры — до 30 совпадений из последних 100 событий, что явно отмечено в интерфейсе. Открытое окно фиксирует данные на момент открытия; временная отметка показана внутри. Сетевые потоки остаются отдельным текущим снимком, не суточной статистикой.