Skip to content

MuraSaichick/SigmaCore

Repository files navigation

SigmaCore 🖥️

.NET PostgreSQL gRPC SignalR

SigmaCore — это программный комплекс для централизованного мониторинга состояния компьютерной техники в корпоративной среде. Система позволяет администраторам в реальном времени отслеживать загрузку CPU/GPU, состояние дисков, сетевую активность и получать уведомления о критических сбоях.


📚 Содержание


📸 Скриншоты интерфейсов

🖥️ Панель Администратора (WPF)

⚙️ Управление и конфигурация

  • Авторизация в системе:
    Авторизация в системе
  • Список подключенных компьютеров: Список компьютеров
  • Детальная информация о компьютере и история тестов: Детальная информация История запусков тестов
  • Информация о профиле: Профиль администратора
  • Управление и запуск тестов производительности: Панель тестов

📊 Мониторинг и Аналитика

Экраны аналитики со сквозными графиками нагрузки, сетевой активности и логов в реальном времени.

  • Главный аналитический дашборд: Общая статистика
  • Анализ метрик железа: Статистика нагрузок
  • Мониторинг сетевой активности: Статистика сети
  • Аналитика результатов тестирования: Статистика тестов
  • Анализ и фильтрация системных логов: Статистика системных логов
👤 Интерфейс Пользователя (WPF)

💻 Мониторинг и самодиагностика

Легкий клиент для конечных пользователей, позволяющий отслеживать состояние своей рабочей станции и запускать локальные тесты.

  • Текущие метрики производительности: Метрики пользователя
  • Информация о системе и аппаратной конфигурации: Системная информация
  • Доступные тесты производительности: Тесты пользователя

🚀 Быстрый старт

1. Требования

2. Клонирование репозитория

git clone https://github.com/MuraSaichick/SigmaCore
cd SigmaCore

3. Настройка базы данных (Server)

  1. Создайте пустую базу данных (например, monitoring_db) через любой удобный CLI/GUI клиент:

  2. Разверните структуру таблиц с помощью актуального скрипта инициализации: 👉 Открыть SQL-скрипт инициализации

4. Конфигурация приложений

Перед запуском скопируйте шаблоны appsettings.Example.json в файлы appsettings.json в папках соответствующих проектов.

Server (SigmaCore.Server/appsettings.json)

{
  "ConnectionStrings": {
    "DefaultConnection": "Host=YOUR_HOST;Database=YOUR_DATABASE;Username=YOUR_USERNAME;Password=YOUR_PASSWORD"
  },
  "Kestrel": {
    "Endpoints": {
      "HttpApi": { "Url": "http://localhost:5163", "Protocols": "Http1" },
      "GrpcApi": { "Url": "http://localhost:5164", "Protocols": "Http2" }
    }
  },
  "Jwt": {
    "Key": "YOUR_SUPER_SECRET_KEY_AT_LEAST_32_CHARS_LONG",
    "Issuer": "SigmaCore.Server",
    "Audience": "SigmaCore.Admin"
  },
  "RegistrationSettings": {
    "MasterKey": "YOUR_REGISTRATION_MASTER_KEY"
  },
  "Logging": {
    "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" }
  },
  "AllowedHosts": "*"
}

Agent (SigmaCore.Agent/appsettings.json)

{
  "AgentSettings": {
    "InventoryNumber": "",
    "Location": "",
    "CollectionIntervalSeconds": 3
  },
  "ServerSettings": {
    "BaseUrl": "http://localhost:5163",
    "GrpcUrl": "http://localhost:5164",
    "MasterKey": "YOUR_REGISTRATION_MASTER_KEY"
  },
  "Logging": {
    "LogLevel": { "Default": "Information", "Microsoft.Hosting.Lifetime": "Information" }
  }
}

Пояснение полей AgentSettings:

  • InventoryNumber — уникальный инвентарный номер ПК в организации.
  • Location — кабинет или локация, где физически находится компьютер.

⚠️ Важно: Перед запуском обязательно заполните InventoryNumber и Location в appsettings.json. С заглушками приложение выдаст ошибку.

🛡️ Права администратора: Для работы LibreHardwareMonitor (опрос температур CPU/GPU и кулеров) приложение должно быть запущено от имени Администратора или работать как служба Windows. Если датчики не отображаются — убедитесь, что у процесса есть админ-права для загрузки встроенного драйвера мониторинга.

5. Запуск решения

Рекомендуется соблюдать следующий порядок запуска компонентов:

  1. SigmaCore.Server — центральный узел (Web API, gRPC, SignalR).
  2. SigmaCore.Agent — служба сбора данных
  3. SigmaCore.Admin / SigmaCore.Client — десктопная панель управления (WPF).

Варианты запуска Агента:

  • Вариант А (Интерактивный запуск через CLI / EXE): Удобно для первоначальной настройки и отладки. Если InventoryNumber или Location в конфигурационном файле пустые, Агент интерактивно запросит их ввод прямо в консоли.
  • Через .NET CLI: Запустите терминал от имени Администратора и выполните:
dotnet run --project SigmaCore.Agent.csproj
  • Через скомпилированный файл: Запустите SigmaCore.Agent.exe от имени Администратора.

  • Вариант Б (Запуск как фоновый процесс / Служба Windows): Рекомендуется для постоянной работы в продакшене. Агент работает скрыто, без открытия консольного окна. ⚠️ Важно: При этом варианте Агент не сможет запросить данные в консоли, поэтому перед регистрацией обязательно заполните InventoryNumber и Location вручную в appsettings.json. Выполните в PowerShell от Администратора:

# Регистрация службы Windows
New-Service -Name "SigmaCoreAgent" -BinaryPathName "C:\Path_To_Publish\SigmaCore.Agent.exe" -StartupType Automatic

# Запуск службы
Start-Service -Name "SigmaCoreAgent"

🔒 Механизмы автоматизации Агента

Для обеспечения безопасности и минимизации трафика в Агенте реализована автономная логика работы с файловой системой:

  • Авторизация и перерегистрация (auth.bin): При первом запуске Агент регистрируется на сервере с помощью MasterKey. После успешной проверки сервер генерирует уникальный токен доступа, который Агент сохраняет локально в файл auth.bin, зашифровав его встроенными средствами Windows. При всех последующих сессиях Агент использует данные из auth.bin для подтверждения подлинности. Если этот файл удален или пуст, Агент автоматически инициирует процедуру повторной регистрации через MasterKey.
  • Предотвращение дублирования логов (last_log_sync.txt): Чтобы избежать повторной отправки одних и тех же записей системного журнала событий Windows при перезапуске Агента или потере сети, в корне каталога Агента создается файл last_log_sync.txt. В нем сохраняется временная метка последнего успешно переданного лога. Новый сбор системных событий всегда начинается строго с этой даты.

✨ Возможности

📊 Мониторинг (Agent)

  • Сбор метрик железа: нагрузка и температура CPU/GPU.
  • Мониторинг накопителей и сети: скорость чтения/записи, заполненность дисков.
  • Инвентаризация: автоопределение типа устройства (ПК/Ноутбук), сбор IP/MAC, привязка локации.
  • Сбор системных логов и расчет чистого времени работы (Uptime).

🖥️ Панель администратора (WPF Admin)

  • Мониторинг парка ПК в реальном времени (Online/Offline статусы через SignalR).
  • Интерактивные графики LiveCharts2 (метрики за 24 часа).
  • Система алертов: оперативное выявление критических сбоев и нехватки места.

🛠️ Встроенная диагностика (без сторонних утилит)

  • Синтетические тесты скорости RAM и дисковой подсистемы.
  • Стресс-тестирование процессора (CPU) на стабильность.
  • Сетевые бенчмарки: измерение пинга и пропускной способности канала (Download Speed).

🗺️ Дорожная карта

  • Глубокая аналитика: Добавление долгосрочных отчетов (неделя/месяц), сравнение производительности однотипных сборок.
  • Умный сбор данных: Чтение характеристик подключенных мониторов (EDID) и предфильтрация "мусорных" логов Windows прямо на клиенте.
  • Кроссплатформенность: Перенос агента на Linux (сбор метрик через sysfs/procfs).
  • Рефакторинг архитектуры: Внедрение DI/IoC во все слои и декомпозиция монолитного AdminService на изолированные доменные сервисы.

🛠 Технологический стек

Компонент Технология Назначение
Backend ASP.NET Core 8 REST API, Центральный узел координации
БД Сервера PostgreSQL Реляционное хранилище конфигураций и метрик
ORM Dapper Высокопроизводительный маппинг сырых SQL-запросов
БД Агента SQLite Локальный кэш метрик при разрыве соединения с сервером
Связь gRPC, SignalR, REST gRPC (Agent ↔ Server), SignalR (Server ↔ Admin Hub), REST для CRUD
Клиенты WPF (.NET 8) Интерфейсы администратора и пользователя
Датчики LibreHardwareMonitor Чтение показателей S.M.A.R.T, температур и вольтажей
Графики LiveCharts2 Легковесная визуализация данных на UI

📄 Лицензия

Проект распространяется под лицензией MIT.

About

Enterprise infrastructure monitoring system based on .NET 8 and PostgreSQL. Includes ASP.NET Core Web API, Background Worker Service (Windows Service), and two WPF client applications with LiveCharts2 data visualization and LibreHardwareMonitor telemetry integration.

Topics

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Contributors

Languages