Skip to content

highloadninja/native-monitoring-agent

Native Monitoring Agent

Статус Сборки

Ubuntu Build Rocky Linux Build Windows Build

Documentation Status License: MIT

Latest Release

Кросс-платформенный агент для мониторинга и автоматизации задач, написанный на C++. Проект вдохновлен агентами из "1С:Центр контроля качества" и спроектирован с упором на модульность, производительность и современные практики C++ разработки.

Основные возможности

  • Плагинная архитектура: Функциональность легко расширяется путем добавления новых плагинов (динамических библиотек .dll/.so).
  • Кросс-платформенность: Разрабатывается с поддержкой Windows (MSVC) и Linux (GCC/Clang).
  • Сетевое взаимодействие: Общается с центральным сервером по REST API для получения задач и отправки результатов.
  • Современный C++: Использует C++17 и современные инструменты управления зависимостями.
  • Управление задачами: Встроенный планировщик управляет очередью и выполнением фоновых задач.

Начало работы (Рекомендуемый способ)

Этот проект полностью настроен для разработки внутри Dev Containers, что позволяет получить готовую среду в один клик.

Требования

  1. Docker Desktop
  2. Visual Studio Code
  3. Расширение Dev Containers для VS Code.

Запуск среды

  1. Клонируйте репозиторий:
    git clone https://github.com/nmaks2012/native-monitoring-agent.git
    cd native-monitoring-agent
  2. Откройте проект в VS Code.
  3. VS Code автоматически обнаружит файлы .devcontainer и предложит: "Reopen in Container". Нажмите на эту кнопку.
  4. Дождитесь, пока VS Code создаст и настроит контейнер. После этого вы окажетесь в полностью готовой среде разработки.

Сборка проекта внутри Dev Container

  1. Установите зависимости Conan: Откройте терминал в VS Code (Ctrl+`). Конфигурация Debug уже будет выбрана по умолчанию.

    # Для Debug сборки (уже выбрана по умолчанию)
    conan install . --build=missing -s build_type=Debug
    # Если нужна Release сборка
    conan install . --build=missing -s build_type=Release
  2. Сконфигурируйте проект с помощью CMake:

    # Для Debug
    cmake --preset Debug
    # Для Release
    cmake --preset Release
  3. Соберите проект:

    # Для Debug
    cmake --build --preset Debug
    # Для Release
    cmake --build --preset Release
  4. Запустите тесты: После успешной сборки вы можете запустить юнит-тесты.

    # Для 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.

About

Кросс-платформенный агент на C++17 для удаленного выполнения задач и мониторинга производительности с плагинной архитектурой.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors