System Monitor
Локальный realtime-дашборд железа для Windows и Linux: температуры, частоты, P/E-ядра, SMART, сеть. Без облаков и телеметрии.
Полностью автономный монитор железа: собственный нативный слой поверх Win32/NVAPI/PDH плюс LibreHardwareMonitor для температур, мощностей и SMART. Ни облаков, ни телеметрии — сервер слушает только 127.0.0.1.
Что показывает
- CPU — загрузка общая и по ядрам, частоты, раздельная карта P- и E-ядер на Intel Hybrid, мощность, напряжение, температуры.
- GPU — загрузка как в диспетчере задач, температура и hot spot, частоты, VRAM, вентилятор (NVIDIA — через NVAPI из драйвера).
- Диски — активность и скорости, тип носителя, температура, здоровье и подробные SMART-атрибуты.
- Сеть — приём и передача по интерфейсам, загрузка канала.
- Графики на uPlot с окнами 5/15/30/60 минут, tooltip и min/max.
Дашборд
Grid-редактор: окна перетаскиваются за заголовок, размер меняется за угол, раскладка сохраняется в браузере. 12 тем × 8 акцентных палитр — оформление этого сайта выросло как раз из темы retro.
Это не вкладка браузера, а собственное окно на Chromium (WebView2): без адресной строки и чужих кук, со своим значком на панели задач, сворачивается в трей.
Несколько компьютеров сразу — у каждого окна свой выбор хоста в заголовке.
Тревоги
Правило — это метрика, условие и порог: например «CPU ≥ 90 °C в течение 5 секунд». Срабатывает звук, уведомление в трее и баннер в дашборде. Снимается с гистерезисом, чтобы на границе не получалась очередь «сработало — норма». Правила считаются на бэкенде и работают при закрытом дашборде.
Игровой режим
Dota 2, CS2, EAC и BattlEye не запускаются рядом с монитором, который читает датчики CPU через кольцевой драйвер — по той же причине жалуются на RivaTuner и HWiNFO. Пока игра запущена, источник с драйвером выгружается: загрузка, частоты, RAM, диски и сеть продолжают работать, температуры CPU показываются N/A до выхода из игры. Список процессов правится в настройках.
Что нового
2.2.0 — версия для Linux
System Monitor теперь работает и на Linux: тот же дашборд, графики, тревоги и вкладки удалённых компьютеров, без WinForms, WebView2 и драйверов. Пакеты лежат в «Файлах и релизах»: .deb для Debian, Ubuntu и Mint и tar.gz с install.sh для любого дистрибутива. Бинарник самодостаточный, ставить .NET в систему не нужно.
Датчики читаются из /proc и /sys: процессор (загрузка по потокам, частоты, температуры coretemp и k10temp, мощность RAPL, P- и E-ядра Intel), память, диски (температуры NVMe и SATA, скорости, занятость), сеть, вентиляторы и датчики платы, видеокарты NVIDIA (через NVML), AMD (amdgpu) и Intel (i915 и xe). SMART берётся из smartctl. Права root не нужны, кроме мощности RAPL и SMART.
Окно открывается в режиме приложения Chromium, Chrome, Brave или Edge, а если их нет, то в браузере по умолчанию. Закрытие окна сбор не останавливает: systemmonitor открывает окно, systemmonitor --stop останавливает программу. Интерфейс прячет то, чего на Linux нет: игровой режим, оверлей, FPS и твики Windows.
Проверено в Ubuntu 24.04: установка и удаление .deb и архива, запуск, единственный экземпляр, --stop, автозапуск, датчики, в том числе NVML на настоящей видеокарте.
Что изменилось для обеих систем:
- Новый тип удалённой вкладки «SM-server» рядом со сторонним «LHM Web Server»: адрес, порт и токен, проверка при добавлении, замена токена в настройках вкладки. Токен хранится в
config.jsonи наружу API не отдаётся. Сам сервер, который ставится на наблюдаемую машину, описан ниже, в разделе «Установка». - Локальный API защищён от чужих страниц. Запросы с чужим
Host(DNS-ребиндинг) и сOrigin, не совпадающим сHost, получают 403. Раньше любая страница, открытая в браузере, могла читать и менять настройки приложения. Обновление рекомендуется. - Автозапуск включается в «Настройки → Запуск»: в Windows это задача планировщика, в Linux XDG autostart.
2.1.0 — вкладка «Датчики»
В настройках появилась вкладка «Датчики». Источник выбирается без перезапуска: авто, свои модули на PawnIO или только Windows API. Модули источника показаны со статусом (работает, нет такого железа, отключён, сбой), любой можно выключить. Интервал опроса настраивается от 250 мс до 10 с, есть диагностика: драйвер PawnIO, права, путь к config.json.
Из шапки убрана надпись «LHM 0.9.6»: строка LHM в сведениях о системе теперь показывается, только если библиотека реально загружена.
2.0.0 — датчики без LibreHardwareMonitor
Добавлен собственный источник датчиков на драйвере PawnIO: collector.source = "pawn" в config.json или ключ --source pawn. Модули: Intel CPU, AMD Zen, Super I/O (Nuvoton, ITE, Winbond, Fintek), диски NVMe и SATA, видеокарты NVIDIA, AMD и Intel. По умолчанию по-прежнему LHM, новый источник включается вручную.
Что проверено на железе, а что нет. На живой машине прогнаны Intel i9-14900KF, ASRock Z690 Taichi (Nuvoton), диски Samsung 970 EVO Plus и HGST, RTX 3060. Код для AMD, ITE, Winbond и Fintek, плат ASUS, MSI и Gigabyte, видеокарт AMD и Intel сверен с исходниками LHM, но на железе не запускался. В режиме pawn пока нет температур DIMM и старых AMD (K8–K10, FX).
Заодно две правки. RAM на дашборде стала физической: в режиме LHM вместо неё показывался узел «Virtual Memory» (RAM плюс файл подкачки), например 24,9 из 47,8 ГБ вместо 19,5 из 31,8 ГБ. И программа больше не падает при смене раскладки (Alt+Shift) во время игры: ошибка CultureInfo(1049) в оверлее исправлена.
1.5.5 — FPS в играх
Добавлены плитка FPS и график времени кадра, игра выбирается автоматически или процесс вручную. Оверлей в игре стал отзывчивее: он запускается с обычным приоритетом, а передача движений мыши в редактор ограничена 120 Гц. Сборщик FPS (ETW) меньше блокирует поток событий.
1.5.0 — Linux впервые проверен на реальном сервере
Агент для Linux (sm-agent.py) до этого был закрыт только тестами и фикстурой — ни разу не запускался на настоящей машине. Теперь развёрнут через install.sh на Ubuntu 24.04.5 с Xeon E5-2640 v3, добавлен как удалённая вкладка через /api/remotes, и весь конвейер — CPU, память, диски, сеть, вентиляторы — подтверждён реальными числами без единой правки на стороне бэкенда.
Заодно исправлено определение типа диска: SATA SSD от WD без слова «ssd» в названии модели (например WDC WDS120G2G0A) ошибочно показывался как HDD. У SSD- и HDD-серий WD имя одинаково начинается с «WD», и модель проваливалась в общую эвристику. Добавлен отдельный паттерн, который отличает SSD-модели по букве S сразу после WD и цифре следом.
1.4.1 — падение примерно раз в двое суток
Со стороны это выглядело как самопроизвольный перезапуск: программа исчезала из трея и через мгновение поднималась заново. На деле процесс аварийно завершался при чтении счётчика загрузки видеокарты — из-за особенности работы с памятью Windows изредка подсовывала чужой адрес, и это роняло программу целиком, а не портило одно значение.
Проверено на живой машине: загрузка видеокарты, активность и скорости дисков считаются по-прежнему.
Заодно объяснение к тому, что смущало в журнале: две строки «starting» подряд при каждом запуске — это штатный подъём прав, а не второй запущенный экземпляр.
1.4.0 — установщик exe вместо MSI
Минорный номер здесь не про новые возможности программы, а про смену формата поставки.
Галки в мастере — ради них и переходили: «ярлык в меню Пуск», «ярлык на рабочем столе», а на последней странице «запустить System Monitor». В WiX это требовало собственной темы интерфейса и проброса значений в свойства MSI, в Inno Setup заняло три строки.
Установка поверх предыдущей версии заменяет её, а не ставит вторую копию рядом.
Старые MSI-пакеты (1.0.0–1.3.4) снимаются автоматически. Иначе в «Приложениях и возможностях» осталось бы две записи и две программы на диске. Тут есть тонкость: деинсталляция MSI уносила с собой config.json — раскладку окон, правила тревог, список удалённых машин — и задачу автозапуска. Поэтому установщик сохраняет их до сноса старой версии и возвращает после.
Мастер на русском. Установка по-прежнему в профиль пользователя (%LOCALAPPDATA%\Programs\SystemMonitor), права администратора не нужны.
Внутреннее: список файлов фронтенда больше не генерируется — Inno берёт wwwroot\* маской, поэтому меняющиеся от сборки к сборке имена ассетов Vite ничего не ломают. Зависимость от WiX убрана.
1.3.4 — видеокарты AMD и удалённые машины
Найдено при подключении машины с i5-12400F и Radeon RX 6600. Три отказа, и все молчаливые: ни ошибки на экране, ни строки в журнале.
- Видеокарта AMD пропадала. В LibreHardwareMonitor 0.9.6 переименовали тип железа:
GpuAtiсталGpuAmd. Локально карта из-за этого не попадала в снапшот вообще — ни названия, ни температур, ни VRAM, ни графиков; по сети доезжала без подписи вендора. - SATA-накопитель пропадал. LHM отдаёт его как
/ssd/0, а разбор знал только/hddи/nvme: диск исчезал вместе с температурой, здоровьем и скоростями. Заодно у таких дисков появился тип носителя — по одной модели вроде «TEAM T2532TB» его не угадать. - Из шести ядер показывались два. Номер ядра брался как последнее число в имени датчика, а LHM называет их
CPU Core #3 Thread #2— то есть бралcя номер потока. Это же портило подсчёт P- и E-ядер на гибридных процессорах.
Снимок данных реальной машины добавлен в тесты, поэтому подобные переименования в LHM теперь обнаруживаются автоматически.
1.3.3 — содержимое окон масштабируется вместе с окнами
Раньше цифры в карточках зависели от ширины экрана, а не своего окна: окно уменьшаешь — внутри всё остаётся прежнего размера и уезжает под прокрутку.
Теперь текст уменьшается вместе с окном, поля поджимаются, а на маленьких окнах убираются второстепенные подписи: имя железа, min/max у графиков, легенда. В графике высотой в два ряда это заодно перестало обрезать ось времени.
1.3.2 — установщик закрывает работающий монитор
Программа висит в трее, её файл занят, и Windows Installer молча откладывал замену до перезагрузки: установка отчитывалась об успехе, а работала прежняя сборка.
1.3.1 — критическое исправление, заменяет 1.3.0
Приложение падало при переключении раскладки клавиатуры. Обычный Alt+Shift с фокусом на окне выбрасывал диалог «Unhandled exception… 1049 (0x0419) is an invalid culture identifier» — работать на русской Windows было нельзя.
Технически: сборка идёт без ICU (InvariantGlobalization), а WinForms на смену раскладки запрашивал CultureInfo по LCID. Теперь эти сообщения обрабатывает система напрямую, минуя WinForms.
Если стоит 1.3.0 — обновление обязательное, в ней этот баг есть.
1.3.0
Оформление
- Пять новых тем: Tokyo (ночной индиго), Dracula (фиолетовая), Gruvbox (тёплая землистая), Carbon (графит: цвет только в данных), Paper (светлая, бумага и типографская краска). Всего 12 тем × 8 акцентных палитр.
- Графики наконец берут цвет выбранной палитры. Раньше линии оставались циановыми в любой теме, пока тему не переключишь руками.
- Полоса прокрутки начинается под шапкой, а не от самого верха окна, и окрашена по теме вместо системной светлой.
Окно приложения
- Убрана белая полоса над шапкой в безрамочном режиме; у развёрнутого окна заодно пропали щели по краям.
- Кнопки свернуть / развернуть / закрыть закреплены в правом верхнем углу — при сужении окна они больше не уезжают вниз вместе с бейджами.
- Меню выбора темы закрывается кликом мимо. В окне приложения его нельзя было закрыть вообще никаким кликом.
Раскладка дашборда
- Окна можно перетаскивать снизу вверх: у краёв появилась автопрокрутка, и перенос больше не срывается на обновлении данных. Раньше окно с нижнего края физически нельзя было утащить к верхнему — не хватало хода мыши.
- Обмен местами выбирает то окно, на которое целились (по наибольшему перекрытию), а не первое подходящее.
Обе версии ставятся поверх предыдущей как обычное обновление — удалять старую не нужно. Раскладка виджетов, тема и настройки сохраняются.
Установка
Windows
Скачай установщик ниже — это .exe с обычным мастером на русском: спросит про ярлыки и предложит запустить программу сразу после установки. Ставится в профиль пользователя (%LOCALAPPDATA%\Programs\SystemMonitor), права администратора для установки не нужны. Приложение запрашивает их уже при запуске — без них продолжает работать, но температуры CPU, мощности и SMART будут N/A.
Нужен WebView2 Runtime; в Windows 11 он предустановлен.
Linux — приложение
Debian, Ubuntu, Mint: скачайте .deb из «Файлов и релизов» и поставьте:
sudo apt install ./systemmonitor_2.2.0_amd64.deb
Любой другой дистрибутив: скачайте tar.gz и запустите установку:
tar xzf systemmonitor-2.2.0-linux-x64.tar.gz && cd systemmonitor-2.2.0-linux-x64 && ./install.sh
Запуск: systemmonitor. Автозапуск: «Настройки → Запуск» или systemctl --user enable --now systemmonitor. Настройки лежат в ~/.config/systemmonitor/config.json (права 0600, там токены вкладок), журнал в ~/.local/state/systemmonitor/logs. Какие модули ядра нужны для температур и вентиляторов и как дать права для RAPL и SMART, написано в README внутри пакета.
SM-server — удалённые компьютеры
SM-server — отдельный лёгкий сервер без интерфейса. Он ставится на машину, за которой нужно следить, и отдаёт данные её датчиков по локальной сети, а в System Monitor такая машина подключается вкладкой «SM-server». Это рекомендуемый способ: в отличие от агента ниже, доступ идёт по токену и только из частных сетей. Версии SM-server считаются отдельно от версий приложения.
Скачать:
- SM-server для Windows x64, 1.0.1: установщик, 41 МБ, нужны права администратора. sha256:
b64335dc7896bfb6e7a9b6f80568dc7eb1d53049a0a079fab405e6f5e3fc5996 - SM-server для Linux, 1.0.0: архив с
install.sh, 12 КБ, нужны Python 3.8+ и systemd. sha256:fc97f911cce1b9cd1e87554a1be272cd032e73d339d6a778015154b930d7d2cc
Windows. Запустите установщик. Он создаст службу SystemMonitorServer с автозапуском и правилом брандмауэра для порта 8086 (только частные и доменные сети), сгенерирует токен и в конце предложит показать адрес и токен. Для температур, мощности процессора и датчиков платы нужен драйвер PawnIO (pawnio.eu): без него загрузка, память, диски и сеть работают, остальное будет N/A. Тихая установка: SystemMonitor.Server-1.0.1-x64.exe /VERYSILENT /Port=9100 /NoFirewall=1. Адрес и токен можно показать снова от администратора: "C:\Program Files\SystemMonitor Server\SystemMonitor.Server.exe" --show-token.
Linux.
curl -fsSL https://pixnode.ru/api/files/cmuvk2jep000174ks8s35bum1 -o sm-server-linux.tar.gz && tar xzf sm-server-linux.tar.gz && cd sm-server-linux-1.0.0 && sudo sh install.sh
Скрипт создаёт системного пользователя, ставит сервер в /opt/sm-server, включает службу systemd и печатает адрес, порт и токен. Порт по умолчанию 8086, другой задаёт PORT=9100 sudo sh install.sh. Токен позже: sudo python3 /opt/sm-server/sm-server.py --show-token. Брандмауэр скрипт не настраивает.
Подключение. В System Monitor: «+» → тип «SM-server» → IP, порт и токен → «Проверить» → «Добавить».
Безопасность. Сервер только читает датчики и ничего не меняет на машине. Все запросы, кроме /health, требуют токен; адреса вне частных сетей получают 403 даже с верным токеном; после десяти неверных токенов за минуту адрес блокируется на минуту. Но трафик идёт по обычному HTTP, поэтому токен и данные видны тому, кто слушает вашу сеть. В доверенной домашней или офисной сети это приемлемо, через общий Wi-Fi или интернет подключайтесь только по VPN (диапазон Tailscale 100.64.0.0/10 разрешён по умолчанию).
Linux — удалённая вкладка
Нужен только python3 из стандартной поставки дистрибутива, никаких pip-пакетов агент не тянет — всё читает из /proc и /sys. Установщик ищет ещё два файла рядом с собой, поэтому одной командой забирается архив со всеми тремя сразу, распаковывается и запускается:
curl -fsSL https://pixnode.ru/api/files/cmu4kudeo000174xtjk38zszv -o sm-agent-linux.tar.gz && tar xzf sm-agent-linux.tar.gz && cd sm-agent-linux && sudo sh install.sh
Если в системе есть systemd, скрипт сам поднимет сервис на порту 8085 и включит автозапуск; сменить порт — PORT=9000 sudo sh install.sh. Без systemd установщик ничего не трогает сам, а печатает команду для ручного запуска.
Сам агент после установки работает без root — юнит поднимает его через DynamicUser, ProtectSystem=strict и без доступа к устройствам напрямую. Температуры и обороты вентиляторов читаются через /sys/class/hwmon, для этого root тоже не нужен. Чего в этой версии агента нет — SMART-атрибутов и здоровья накопителей: для них нужен root, и это осознанно оставлено на потом.
Добавить машину в дашборд: в System Monitor на Windows — кнопка «+» у вкладок, адрес http://<ip этой машины>:8085.
Пока тихо. Будь первым.
Войди, чтобы оставить комментарий.