Кросс-платформенный агент для мониторинга и автоматизации задач, написанный на C++. Проект вдохновлен агентами из "1С:Центр контроля качества" и спроектирован с упором на модульность, производительность и современные практики C++ разработки.
- Плагинная архитектура: Функциональность легко расширяется путем добавления новых плагинов (динамических библиотек .dll/.so).
- Кросс-платформенность: Разрабатывается с поддержкой Windows (MSVC) и Linux (GCC/Clang).
- Сетевое взаимодействие: Общается с центральным сервером по REST API для получения задач и отправки результатов.
- Современный C++: Использует C++17 и современные инструменты управления зависимостями.
- Управление задачами: Встроенный планировщик управляет очередью и выполнением фоновых задач.
Этот проект полностью настроен для разработки внутри Dev Containers, что позволяет получить готовую среду в один клик.
- Docker Desktop
- Visual Studio Code
- Расширение Dev Containers для VS Code.
- Клонируйте репозиторий:
git clone https://github.com/nmaks2012/native-monitoring-agent.git cd native-monitoring-agent - Откройте проект в VS Code.
- VS Code автоматически обнаружит файлы
.devcontainerи предложит: "Reopen in Container". Нажмите на эту кнопку. - Дождитесь, пока VS Code создаст и настроит контейнер. После этого вы окажетесь в полностью готовой среде разработки.
-
Установите зависимости Conan: Откройте терминал в VS Code (Ctrl+`). Конфигурация Debug уже будет выбрана по умолчанию.
# Для Debug сборки (уже выбрана по умолчанию) conan install . --build=missing -s build_type=Debug
# Если нужна Release сборка conan install . --build=missing -s build_type=Release
-
Сконфигурируйте проект с помощью CMake:
# Для Debug cmake --preset Debug# Для Release cmake --preset Release -
Соберите проект:
# Для Debug cmake --build --preset Debug# Для Release cmake --build --preset Release -
Запустите тесты: После успешной сборки вы можете запустить юнит-тесты.
# Для Debug ctest --preset debug# Для Release ctest --preset releaseСкомпилированные бинарные файлы можно найти в директории
build/bin/debug(или release)/<архитектура>/.
Локальная разработка (без Docker)
Если вы предпочитаете настраивать окружение вручную, вам понадобятся:
- Компилятор C++ с поддержкой C++17 (MSVC, GCC, Clang).
- CMake (версия 3.22+).
- Git.
- Conan (версия 2.x).
- Doxygen (опционально, для локальной генерации документации).
Процесс сборки идентичен тому, что используется в Dev Container (см. команды выше).
Проект использует Conan 2 для управления внешними библиотеками. Все зависимости перечислены в файле conanfile.py.
Примеры зависимостей:
boost: для асинхронной работы с сетью (Asio) и других утилит.spdlog: для логирования.nlohmann-json: для работы с JSON.gtest: для юнит-тестирования.
Чтобы добавить новую зависимость, добавьте ее в conanfile.py и повторно выполните команду conan install.
src/- Исходный код ядра агента.plugins/- Исходный код плагинов.include/agent_api/- Публичный интерфейс (ITaskRunner.h) для разработки плагинов.tests/- Юнит-тесты с использованием GoogleTest.docs/- Проектная документация, включая руководство по разработке плагинов.conanfile.py- Файл с перечислением зависимостей проекта.
Подробное описание архитектуры можно найти в docs/architecture/C4_model.md.