Skip to content

ttsbtw/HTopML

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HtopML

  • Поддерживаемая ОС: Linux

  • Язык реализации: C (C11)

  • Сторонние библиотеки C: не используются (только libc + POSIX)

  • Фронтенд: html + js


Как пользоваться:

  • Склонировать репозиторий к себе

  • В терминале прописать make run

  • Перейти по ссылке из терминала в браузер

  • Для остановки использовать Ctrl+C в терминале


1. Функциональность проекта

HtopML — системный монитор ресурсов с веб-интерфейсом. Программа работает как фоновый демон на Linux, собирает метрики системы и предоставляет их через HTTP в виде JSON. Пользователь открывает браузер и видит живой дашборд, обновляющийся в реальном времени.

Сценарии использования:

  • Пользователь запускает демон, открывает http://127.0.0.1:8080/dashboard.html и наблюдает текущую нагрузку на CPU, RAM, диск и сеть

  • Пользователь видит список процессов, отсортированный по потреблению CPU или памяти

  • Пользователь настраивает интервал опроса через аргумент командной строки

  • Пользователь останавливает демон через сигнал (Ctrl+C или kill)


2. Формат входных данных

Программа читает данные из виртуальной файловой системы ядра Linux:

Источник Данные
/proc/stat Загрузка CPU (дельты между снимками)
/proc/meminfo Общая и используемая RAM, swap
/proc/net/dev Входящий/исходящий трафик по интерфейсам
/proc/diskstats Операции чтения/записи на диск
/proc/[pid]/stat PID, имя, CPU и RAM процесса
/proc/[pid]/status Имя процесса, VmRSS

3. Интерфейс приложения

C-демон работает в фоне, не имеет интерактивного терминального интерфейса. Запускается вручную.

Веб-дашборд — единственный пользовательский интерфейс. Открывается в браузере по адресу http://localhost:\\\<port>.

Элементы дашборда:

  • График загрузки CPU (линейный, скользящее окно ~60 точек)

  • Прогресс-бар и график использования RAM- Счётчики сетевого трафика (rx/tx, кбит/с)

  • Счётчики дискового I/O (read/write, кбайт/с)

  • Таблица процессов: PID, имя, CPU%, MEM (MB), сортировка по столбцу

Дашборд автоматически запрашивает данные каждые 500 мс через fetch() к JSON-эндпоинту. При недоступности сервера показывает индикатор потери соединения.


5. Распределение ролей

Участник Зона ответственности
Петухов Е.А Сборщик метрик: парсинг /proc (collector) + Makefile + CI
Матещук Я.А. Запись JSON на диск (writer) + нормализация данных (normalizer)
Шматок И.А. Тесты функций + веб-дашборд: HTML/JS + main.c программы

6. Структура проекта


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 находится презентация данной работы

About

Системный монитор ресурсов с веб-интерфейсом для Linux

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors