-
Поддерживаемая ОС: Linux
-
Язык реализации: C (C11)
-
Сторонние библиотеки C: не используются (только libc + POSIX)
-
Фронтенд: html + js
-
Склонировать репозиторий к себе
-
В терминале прописать make run
-
Перейти по ссылке из терминала в браузер
-
Для остановки использовать Ctrl+C в терминале
HtopML — системный монитор ресурсов с веб-интерфейсом. Программа работает как фоновый демон на Linux, собирает метрики системы и предоставляет их через HTTP в виде JSON. Пользователь открывает браузер и видит живой дашборд, обновляющийся в реальном времени.
Сценарии использования:
-
Пользователь запускает демон, открывает
http://127.0.0.1:8080/dashboard.htmlи наблюдает текущую нагрузку на CPU, RAM, диск и сеть -
Пользователь видит список процессов, отсортированный по потреблению CPU или памяти
-
Пользователь настраивает интервал опроса через аргумент командной строки
-
Пользователь останавливает демон через сигнал (Ctrl+C или
kill)
Программа читает данные из виртуальной файловой системы ядра Linux:
| Источник | Данные |
|---|---|
/proc/stat |
Загрузка CPU (дельты между снимками) |
/proc/meminfo |
Общая и используемая RAM, swap |
/proc/net/dev |
Входящий/исходящий трафик по интерфейсам |
/proc/diskstats |
Операции чтения/записи на диск |
/proc/[pid]/stat |
PID, имя, CPU и RAM процесса |
/proc/[pid]/status |
Имя процесса, VmRSS |
C-демон работает в фоне, не имеет интерактивного терминального интерфейса. Запускается вручную.
Веб-дашборд — единственный пользовательский интерфейс. Открывается в браузере по адресу http://localhost:\\\<port>.
Элементы дашборда:
-
График загрузки CPU (линейный, скользящее окно ~60 точек)
-
Прогресс-бар и график использования RAM- Счётчики сетевого трафика (rx/tx, кбит/с)
-
Счётчики дискового I/O (read/write, кбайт/с)
-
Таблица процессов: PID, имя, CPU%, MEM (MB), сортировка по столбцу
Дашборд автоматически запрашивает данные каждые 500 мс через fetch() к JSON-эндпоинту. При недоступности сервера показывает индикатор потери соединения.
| Участник | Зона ответственности |
|---|---|
| Петухов Е.А | Сборщик метрик: парсинг /proc (collector) + Makefile + CI |
| Матещук Я.А. | Запись JSON на диск (writer) + нормализация данных (normalizer) |
| Шматок И.А. | Тесты функций + веб-дашборд: HTML/JS + main.c программы |
htopml/
├── src/
│ ├── main.c — точка входа, основной цикл
│ ├── collector.c — чтение /proc, заполнение metrics_t
│ ├── collector.h
│ ├── normalizer.c — дельты CPU, перевод единиц
│ ├── normalizer.h
│ ├── writer.c — сериализация metrics_t → JSON, запись файла
│ └── writer.h
├── web/
│ └── dashboard.html — дашборд html
├── bin/ — артефакты сборки (gitignore)
│ ├── htopml — скомпилированный бинарник
| |── dashboard.html — перенесся с /web
│ └── metrics.json — генерируется во время работы
├── tests/
│ ├── collectortest.c
│ ├── main.c
│ └── normalizertest.c
├── thirdparty/
| ├──.clang-format
| └──ctest.h - библиотека для тестов
├── Makefile
└── README.md
PS: Данный проект был выполнен в среде GitLab, для расширения аудитории перенес его сюда. В папке docs находится презентация данной работы