Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
cpra — CPRA - это высокопроизводительная система мониторинга инфраструктуры, предназначенная для платформенных команд, управляющих крупномасштабными микросервисными архитектурами. Построенная на принципах Entity-Component-System (ECS) и теории очередей, CPRA обрабатывает более 1 000 000 одновременных проверок работоспособности с автоматическим масштабированием пула рабочих процессов для достижения целей SLO. | Kitploit
Инструменты/GitHubGitHub/ziad-hsn/cpra
Безопасность облачной инфраструктурыУтилиты общего назначенияБезопасность контейнеровАудит конфигурацииСетевая безопасностьDevSecOpsРеагирование на ИнцидентыОбнаружение АномалийАнализ Журналов
GitHubziad-hsn/cpra

cpra

Репозиторий
146 месяцев назадЕщё не проверено
Сайт

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →

Описание

CPRA - это высокопроизводительная система мониторинга инфраструктуры, предназначенная для платформенных команд, управляющих крупномасштабными микросервисными архитектурами. Построенная на принципах Entity-Component-System (ECS) и теории очередей, CPRA обрабатывает более 1 000 000 одновременных проверок работоспособности с автоматическим масштабированием пула рабочих процессов для достижения целей SLO.

Поделиться

CPRA - Concurrent Pulse-Remediation-Alerting System

Go Version License Documentation

Мониторинг миллионов сервисов одновременно с автоматическим восстановлением и динамическим масштабированием рабочих процессов.

CPRA — это высокопроизводительная система мониторинга инфраструктуры, предназначенная для команд платформ, управляющих крупномасштабными микросервисными архитектурами. Построенная на архитектуре Entity-Component-System (ECS) и принципах теории очередей, CPRA обрабатывает более 1 000 000 одновременных проверок работоспособности с автоматическим масштабированием пула рабочих процессов для достижения целей SLO.


Содержание

  • Зачем CPRA?
  • Ключевые возможности
  • Характеристики производительности
  • Архитектура
  • Быстрый старт
  • Установка
  • Конфигурация
  • Параметры командной строки
  • Документация
  • Устранение неполадок
  • Участие в разработке
  • Лицензия

  • Зачем CPRA?

    Используйте CPRA, когда необходимо:

    • Мониторить 100 000+ одновременных сервисов, контейнеров или конечных точек
    • Автоматически устранять сбои без вмешательства человека
    • Динамически масштабировать инфраструктуру мониторинга в зависимости от нагрузки
    • Достигать задержки P95 менее 100 мс от обнаружения до оповещения
    • Минимизировать потребление памяти (~100 байт на монитор)

    Ключевые возможности

    🚀 Огромная масштабируемость

    • Обрабатывает 1 000 000+ одновременных мониторов на стандартном оборудовании
    • Линейное масштабирование с минимальными накладными расходами на монитор
    • Эффективное использование памяти: ~100 байт на монитор

    ⚡ Высокая производительность

    • 10 000+ проверок работоспособности в секунду на конвейер
    • Задержка P95 < 100 мс от планирования до обработки результата
    • Пакетная обработка и очереди без блокировок минимизируют накладные расходы

    🔄 Автоматическое восстановление

    • Три независимых конвейера:
      1. Pulse: Проверка работоспособности (HTTP, TCP, ICMP, пользовательские скрипты)
      2. Intervention: Автоматическое восстановление (перезапуск сервисов, масштабирование ресурсов, выполнение скриптов)
      3. Code: Оповещение и уведомления (email, SMS, webhooks, PagerDuty)

    🧠 Интеллектуальное масштабирование

    • Теория очередей M/M/c: Автоматический расчет оптимального количества рабочих процессов
    • Аппроксимация Аллена-Куннина: Учитывает вариабельность рабочей нагрузки в реальных условиях
    • Масштабирование на основе SLO: Динамическая настройка для достижения целей по задержке

    🏗️ Ориентированная на данные архитектура

    • Entity-Component-System (ECS) с использованием mlange-42/ark
    • Кэш-дружественное расположение памяти для максимальной производительности
    • Минимальное количество аллокаций и нагрузка на GC

    🔧 Готовность к продакшену

    • Встроенный профайлинг pprof для отладки
    • Корректное завершение работы с отменой контекста
    • Полное логирование с режимом отладки
    • Управление памятью с автоматическим запуском GC

    Характеристики производительности

    МетрикаЗначение
    Максимальное количество одновременных мониторов1 000 000+
    Пропускная способность10 000+ проверок/сек/конвейер
    Задержка (P95)< 100 мс (настраивается через SLO)
    Память на монитор~100 байт
    Общая память (1М мониторов)~100 МБ + накладные расходы пула рабочих процессов
    Масштабирование рабочих процессовДинамическое (на основе M/M/c)

    Подробные бенчмарки и анализ см. в Обзоре архитектуры.


    Архитектура

    CPRA использует архитектуру из трёх конвейеров, построенную на принципах Entity-Component-System:

    ECS Architecture

    Три независимых конвейера обработки

    Pipeline Flow

    1. Конвейер Pulse: Выполняет проверки работоспособности (HTTP-запросы, TCP-соединения, пользовательские скрипты)
    2. Конвейер Intervention: Выполняет автоматическое восстановление при сбоях мониторов
    3. Конвейер Code: Отправляет оповещения в системы управления инцидентами

    Каждый конвейер работает независимо, имея собственную очередь и динамически масштабируемый пул рабочих процессов, что позволяет:

    • Настройка каждого конвейера отдельно
    • Изоляция сбоев: Сбой одного конвейера не влияет на другие
    • Независимое масштабирование: Масштабирование рабочих процессов на основе нагрузки каждого конвейера

    Архитектура очереди и пула рабочих процессов

    Queue and Worker Pool

    Реализации очередей:

    • HybridQueue: Кольцевой буфер + резервный срез для надёжной FIFO-обработки
    • AdaptiveQueue: Автомасштабируемый кольцевой буфер для переменной нагрузки
    • WorkivaQueue: Кольцевой буфер без блокировок для сверхнизкой задержки

    Динамические пулы рабочих процессов:

    • На базе panjf2000/ants пула горутин
    • Автоматическое масштабирование с использованием теории очередей M/M/c
    • Настраиваемые минимальное/максимальное количество рабочих процессов и цели SLO

    Полное объяснение архитектуры см. в Обзоре архитектуры.


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

    Вариант 1: Сборка и запуск локально

    root@kitploit:~
    # Предварительные требования: Go 1.25 или новее
    go version  # Должна показывать go1.25 или выше
    
    # Сборка из исходников
    git clone https://github.com/ziad/cpra.git
    cd cpra
    go build .
    
    # Запуск с примером конфигурации
    ./cpra --yaml mock-servers/test_10k.yaml
    

    Ожидаемый вывод:

    root@kitploit:~
    Starting CPRA Optimized Controller for 1M Monitors
    Profiling server listening at http://localhost:6060/debug/pprof/
    Loading monitors from mock-servers/test_10k.yaml...
    Monitor loading completed in 1.2s
    [INFO] Controller started successfully
    [INFO] Pulse pipeline processing 10,000 monitors
    [INFO] Worker pool scaled to 143 workers (target SLO: 100ms)
    

    Установка

    Предварительные требования

    • Go 1.25 или новее (скачать)
    • Docker (опционально, для контейнерного развертывания)

    Сборка из исходников

    1. Клонируйте репозиторий:

      root@kitploit:~
      git clone https://github.com/ziad/cpra.git
      cd cpra
      
    2. Загрузите зависимости:

      root@kitploit:~
      go mod download
      
    3. Соберите приложение:

      root@kitploit:~
      go build .
      
    4. Проверьте установку:

      root@kitploit:~
      ./cpra --help
      

    Развертывание в Docker

    1. Соберите Docker-образ:

      root@kitploit:~
      docker build -f docker/Dockerfile -t cpra:latest .
      
    2. Запустите контейнер:

      root@kitploit:~
      docker run -it --rm \
        -v $(pwd)/my-monitors.yaml:/app/monitors.yaml \
        cpra:latest \
        ./cpra --yaml monitors.yaml
      

    Конфигурация

    Конфигурация мониторов (YAML)

    Создайте файл monitors.yaml для определения проверок работоспособности:

    root@kitploit:~
    monitors:
      - name: "my-service-health-check"
        pulse_check:
          type: http
          interval: 30s
          timeout: 5s
          max_failures: 3
          config:
            method: GET
            url: http://my-service.example.com/health
            retries: 2
        intervention:
          action: docker
          config:
            container: my-service-container
            action: restart
        codes:
          red:
            dispatch: true
            notify: pagerduty
            config:
              url: https://events.pagerduty.com/v2/enqueue
          yellow:
            dispatch: true
            notify: log
            config:
              file: /var/log/cpra-alerts.log
    

    Генерация тестовых конфигураций:

    Используйте mock-servers/generate_monitors.py для генерации тестовых конфигураций с любым количеством мониторов.

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

    Настройте поведение CPRA программно:

    root@kitploit:~
    package main
    
    import (
        "cpra/internal/controller"
    )
    
    func main() {
        config := controller.DefaultConfig()
    
        // Режим отладки
        config.Debug = true
    
        // Настройки пула рабочих процессов (применяется ко всем трём конвейерам)
        config.WorkerConfig.MinWorkers = 10
        config.WorkerConfig.MaxWorkers = 500
    
        // Настройки очереди
        config.QueueCapacity = 131072  // Должно быть степенью двойки
    
        // Настройка производительности
        config.BatchSize = 2000
        config.SizingServiceTime = 20 * time.Millisecond  // Средняя длительность задания
        config.SizingSLO = 100 * time.Millisecond         // Целевая задержка
        config.SizingHeadroomPct = 0.15                   // 15% буфер безопасности
    
        ctrl := controller.NewController(config)
        // ... остальная инициализация
    }
    

    Полные параметры конфигурации см. в Справочнике API.


    Параметры командной строки

    root@kitploit:~
    ./cpra [ОПЦИИ]
    
    ОпцияТипПо умолчаниюОписание
    --yamlstringinternal/loader/replicated_test.yamlПуть к YAML-файлу мониторов
    --configstring-Путь к файлу конфигурации (опционально)
    --debugboolfalseВключить отладочное логирование
    --pprofbooltrueВключить сервер профилирования pprof
    --pprof.addrstringlocalhost:6060Адрес прослушивания pprof-сервера

    Примеры:

    root@kitploit:~
    # Запуск с отладочным логированием
    ./cpra --yaml monitors.yaml --debug
    
    # Запуск с пользовательским портом pprof
    ./cpra --yaml monitors.yaml --pprof.addr localhost:8080
    
    # Отключение профилирования
    ./cpra --yaml monitors.yaml --pprof=false
    

    Документация

    Подробные руководства

    • Обзор архитектуры — Системный дизайн, диаграммы и анализ производительности
    • Справочник API — Полная документация API с сигнатурами функций
    • Справочник типов — Структуры данных и определения компонентов
    • Учебник по быстрому старту — Начало работы за 5–10 минут
    • Типовые задачи — Руководства по типовым операциям

    Дополнительные ресурсы

    • Начало работы — Подробное руководство по установке и развертыванию

    Устранение неполадок

    Частые проблемы

    Проблема: YAML file not found

    root@kitploit:~
    Warning: YAML file monitors.yaml not found, starting without loading monitors
    

    Решение: Проверьте правильность пути к файлу. Используйте абсолютные пути или пути относительно места запуска бинарного файла:

    root@kitploit:~
    ./cpra --yaml $(pwd)/monitors.yaml
    

    Проблема: Сборка не удалась из-за ошибки версии Go

    root@kitploit:~
    go.mod requires go >= 1.25
    

    Решение: Обновите Go до версии 1.25 или новее:

    root@kitploit:~
    go version  # Проверьте текущую версию
    # Скачайте Go 1.25+ с https://go.dev/dl/
    

    Проблема: Высокое использование памяти Решение: Проверьте использование памяти с помощью pprof:

    root@kitploit:~
    # Пока CPRA работает, получите доступ к pprof
    go tool pprof http://localhost:6060/debug/pprof/heap
    
    # Просмотр основных потребителей памяти
    (pprof) top
    

    Отрегулируйте лимиты памяти в конфигурации:

    root@kitploit:~
    config.WorkerConfig.MaxWorkers = 200  // Уменьшите максимальное количество рабочих процессов
    config.QueueCapacity = 65536          // Уменьшите размер очереди
    

    Проблема: Пул рабочих процессов не масштабируется Решение: Включите отладочное логирование, чтобы увидеть решения о масштабировании:

    root@kitploit:~
    ./cpra --yaml monitors.yaml --debug
    

    Проверьте параметры теории очередей:

    root@kitploit:~
    config.SizingServiceTime = 50 * time.Millisecond  // Увеличьте, если задания выполняются дольше
    config.SizingSLO = 200 * time.Millisecond         // Смягчите SLO при необходимости
    

    Проблема: Мониторы не выполняются Решение: Проверьте формат конфигурации мониторов и посмотрите логи:

    root@kitploit:~
    ./cpra --yaml monitors.yaml --debug 2>&1 | grep ERROR
    

    Проверьте синтаксис YAML:

    root@kitploit:~
    # Используйте валидатор YAML
    python -m yaml monitors.yaml
    

    Получение помощи

    • Документация: Обратитесь к папке docs/ за подробными руководствами
    • Проблемы: Откройте issue для сообщений об ошибках или запросов функций
    • Обсуждения: Задавайте вопросы и делитесь идеями в GitHub Discussions
    • Логи: Всегда прикладывайте логи при сообщении о проблемах (используйте флаг --debug)

    Участие в разработке

    Мы приветствуем вклад сообщества! CPRA — это проект с открытым исходным кодом, и мы ценим:

    • 🐛 Сообщения об ошибках и их исправления
    • ✨ Запросы функций и их реализацию
    • 📖 Улучшение документации
    • 🧪 Увеличение покрытия тестами
    • 💡 Оптимизацию производительности

    Начало работы:

    1. Посмотрите на issues с меткой good first issue
    2. Сделайте форк репозитория и отправьте pull request

    Ресурсы для разработчиков:

    • Обзор архитектуры — Понимание системного дизайна
    • Справочник API — Сигнатуры функций и их использование

    Лицензия

    Этот проект лицензирован в соответствии с MIT License — подробнее см. в файле LICENSE.


    Благодарности

    CPRA построен на отличных библиотеках с открытым исходным кодом:

    • mlange-42/ark — Высокопроизводительная Entity-Component-System
    • panjf2000/ants — Пул горутин с динамическим масштабированием
    • Workiva/go-datastructures — Структуры данных без блокировок
    • uber-go/zap — Структурированное логирование

    Документация • Архитектура • Проблемы

    Создано с ❤️ для команд платформ, управляющих крупномасштабной инфраструктурой

    Скачать инструмент