Техническое задание (ТЗ): Программа мониторинга состояния ПК/сервера с интерфейсом

Описание задачи:

Необходимо разработать программу для мониторинга состояния ПК или сервера. Программа должна выводить следующие характеристики:

1. Аппаратная часть:

  • Процессор (CPU):

    • Модель и количество ядер.
    • Частота работы.
  • Оперативная память (RAM):

    • Общий объём.
    • Используемый объём.
    • Свободный объём.
  • Жесткий диск (HDD/SSD):

    • Общий объём диска.
    • Используемое пространство.
    • Свободное пространство.
  • Графический процессор (GPU) (если не встройка):

    • Модель и основные характеристики.

2. Мониторинг системы:

  • Нагрузка на процессор:

    • Текущая загрузка CPU в процентах.
  • Использование оперативной памяти:

    • Объём использованной и свободной памяти RAM.
  • Использование диска (HDD/SSD):

    • Занятое и свободное место на диске.
  • Список всех запущенных процессов с возможностью:

    • Сортировки по объёму потребляемой оперативной памяти.
    • Сортировки по загрузке процессора.
    • Поиска по названию процесса.

3. Настройки программы:

  • Возможность включения/отключения логирования выбранных ключевых показателей. В настройках можно выбрать, какие метрики логировать (например, нагрузку на CPU, использование RAM и т.д.).

Дополнительные требования:

  • Реализовать проверку состояния SMART для HDD/SSD. SMART (Self-Monitoring, Analysis, and Reporting Technology) предоставляет информацию о состоянии накопителя и предсказывает возможные отказы. Основные показатели SMART включают:
    • Температура диска.
    • Количество переназначенных секторов.
    • Время работы диска.
    • Ошибки чтения/записи.

Ограничения:

  • Запрещено использование скриптовых языков программирования (например, Python, AWK, Bash, PowerShell и других).
  • Используемые библиотеки должны быть компилируемыми (например, на C, C++, Rust).

Крайне желательно: В интерфейсе программы должна присутствовать главная страница с Dashboard'ом с возможностью настройки отображаемых метрик. Визуализация должна быть реализована в виде графиков, диаграмм и текстовых полей, напоминающих Grafana.

Grafana Grafana