Initial Proxmox dashboard with host and guest metrics

This commit is contained in:
maxim
2026-07-31 19:51:22 +03:00
commit 584ff7e8ee
21 changed files with 1780 additions and 0 deletions

105
README.md Normal file
View File

@@ -0,0 +1,105 @@
# Proxmox CPU Dashboard
Локальная веб-панель CPU для Proxmox. Данные читаются напрямую из `/proc` и
`/sys`, без Proxmox API. Интерфейс обновляется каждые две секунды.
Панель показывает:
- модель и текущую загрузку CPU;
- количество сокетов, физических ядер и логических потоков;
- среднюю текущую частоту;
- load average за 1, 5 и 15 минут;
- uptime;
- доступные аппаратные температуры.
- использование RAM, доступную память, кэш, буферы и swap.
- заполнение системного диска `/`;
- список физических дисков, модель, серийный номер, SMART, температуру, наработку
и доступные данные об износе;
- текущую скорость и суммарные счётчики сетевого трафика.
- состояние, заполнение, фрагментацию и scrub/resilver ZFS-пулов;
- состояние UPS через NUT или apcupsd, заряд, автономность, нагрузку и напряжение.
- состояние VM и LXC, CPU, память, выделенные ядра и uptime.
На главном экране находятся компактные карточки CPU, памяти, диска и сети.
Нажатие на карточку открывает подробные показатели.
## Быстрый запуск
Скопируйте `dist/proxmox-cpu-dashboard-linux-amd64` на Proxmox, затем:
```bash
chmod +x proxmox-cpu-dashboard-linux-amd64
./proxmox-cpu-dashboard-linux-amd64
```
Откройте:
```text
http://192.168.0.10:9105
```
## Установка как службы
```bash
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`:
```bash
apt update
apt install -y smartmontools
```
Без него список дисков и их паспортные данные продолжат отображаться, а SMART
будет отмечен как недоступный.
Проверить исходные SMART-данные вручную:
```bash
smartctl -x /dev/sda
smartctl -x -j /dev/sda
smartctl -x /dev/nvme0n1
```
У HDD обычно нет показателя износа в процентах. Для NVMe используется
`Percentage Used`, а для SATA SSD — поддерживаемые накопителем атрибуты ресурса.
Если производитель не публикует такой атрибут, панель корректно показывает `—`.
## UPS
Панель автоматически пробует получить данные через NUT (`upsc`), затем через
`apcaccess`. Для проверки NUT:
```bash
upsc -l
upsc ИМЯ_UPS
```
Для проверки apcupsd:
```bash
apcaccess status
```
## API
- `GET /api/cpu` — один JSON-снимок.
- `GET /api/system` — единый JSON-снимок CPU и памяти.
- `GET /api/events` — поток метрик SSE с интервалом две секунды.
## Сборка
```bash
go test ./...
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o proxmox-cpu-dashboard .
```