Maple — это открытый монопо, который преобразует телеметрию вашей инфраструктуры в интерактивную анимированную карту сервисов в реальном времени. Переходите от чтения холодных метрик к тому, чтобы вид
Maple — это открытый мониторинговый инструмент, который решает фундаментальную проблему DevOps-инженеров и SRE-команд: переход от статичных дашбордов к живому пониманию потоков данных. Вместо того чтобы просматривать десятки графиков в Prometheus или Grafana, пытаясь сопоставить метрики с топологией сервисов, Maple строит анимированную карту зависимостей в реальном времени. Продукт написан на Go и Rust, что обеспечивает минимальное потребление ресурсов при обработке потоковой телеметрии. Стек включает gRPC для сбора метрик, WebSocket для передачи обновлений на фронтенд и WebGL для рендеринга графа.
Ключевое УТП — это не просто визуализация, а детекция аномалий на уровне топологии. Когда latency между API и базой данных ClickHouse возрастает, Maple не просто показывает цифру, а анимирует «затор» на ребре графа, подсвечивая красным весь путь запроса. Это позволяет за секунды локализовать проблему, а не тратить часы на анализ логов. Продукт поддерживает интеграцию с OpenTelemetry, Prometheus и собственные агенты, работающие в Kubernetes.
Maple позиционируется как альтернатива Datadog Live Map и Jaeger UI, но с фокусом на инфраструктурную телеметрию, а не только на трейсинг. Он подходит для микросервисных архитектур, где количество сервисов превышает 50, и ручное картирование зависимостей становится невозможным. Лицензия — Apache 2.0, что делает его привлекательным для компаний, которые хотят избежать vendor lock-in.
Архитектура Maple состоит из трех основных компонентов: Collector, Processor и Visualizer. Collector — это легковесный агент, написанный на Rust, который подключается к источникам телеметрии через OpenTelemetry Collector, Prometheus remote write и собственные плагины для Kafka, MySQL и ClickHouse. Агент собирает метрики latency, throughput, error rate и топологическую информацию (какие сервисы общаются друг с другом) с помощью eBPF-хуков на уровне ядра Linux. Это позволяет детектировать зависимости без модификации кода приложений.
Processor — это Go-сервис, который агрегирует данные в скользящем окне 30 секунд, строит граф зависимостей и применяет алгоритмы обнаружения аномалий (например, изолирующий лес для выбросов latency). Граф хранится в оперативной памяти с использованием структуры данных на основе хэш-таблиц и списков смежности. Processor экспортирует текущее состояние через gRPC-стрим на Visualizer.
Visualizer — это React-приложение с WebGL-рендерингом (Three.js), которое отображает граф в виде анимированной карты. Узлы — это сервисы (API, базы данных, очереди), ребра — это потоки данных с анимацией направления и толщиной, пропорциональной throughput. Цвет ребер меняется от зеленого (latency < 50ms) до красного (> 500ms). При клике на узел открывается панель с детальными метриками и trace-логами.
Важно отметить, что Maple не хранит исторические данные — это инструмент для оперативного реагирования. Для долгосрочного анализа данные экспортируются в Prometheus или ClickHouse. Такая архитектура обеспечивает задержку от сбора метрики до отображения на карте менее 1 секунды при нагрузке до 10 000 сервисов.
| Характеристика | Значение |
|---|---|
| Модель | Self-hosted (Open Source) + Cloud (Managed) |
| Цена | Open Source: бесплатно (Apache 2.0). Cloud: от $0.10/час за инстанс + $0.01/тыс. метрик |
| API | GraphQL (порт 8080), gRPC (порт 9090), WebSocket (порт 8081) |
| Лицензия | Apache 2.0 |
| Язык реализации | Go (Processor), Rust (Collector), TypeScript (Visualizer) |
| Поддерживаемые базы данных | MySQL, PostgreSQL, ClickHouse, MongoDB (через плагины) |
| Очереди сообщений | Kafka, RabbitMQ, NATS |
| Максимальное количество узлов | 10 000 (тестировано), до 50 000 с шардированием |
| Задержка отображения | < 1 секунда (p99) |
| Требования к ресурсам | CPU: 2 ядра, RAM: 4 ГБ (для 1000 узлов) |
Установка Maple в Kubernetes занимает около 10 минут. Рекомендуется использовать Helm-чарт, который автоматически настраивает все компоненты. Для тестирования на локальной машине доступен Docker Compose файл.
# Быстрый старт с Docker Compose
git clone https://github.com/maple-dev/maple.git
cd maple/deploy/docker-compose
docker-compose up -d
# Проверка статуса
curl http://localhost:8080/health
# Открыть визуализатор в браузере
open http://localhost:3000
# Установка в Kubernetes через Helm
helm repo add maple https://maple-dev.github.io/helm-charts
helm install maple maple/maple \
--namespace observability \
--create-namespace \
--set collector.replicas=2 \
--set processor.replicas=1
# Настройка интеграции с Prometheus
kubectl apply -f https://raw.githubusercontent.com/maple-dev/maple/main/examples/prometheus-config.yaml
После запуска Maple автоматически начнет сканировать сетевые соединения. Первая карта появится в течение 30 секунд. Для интеграции с Kafka достаточно указать адрес брокера в конфигурации Collector, и Maple начнет парсить метаданные топиков.
| Критерий | Maple | Datadog Live Map | Jaeger UI |
|---|---|---|---|
| Ключевая фича | Анимированная карта в реальном времени с ML-детекцией аномалий | Статическая карта сервисов с историческими данными | Трейсинг запросов с waterfall-диаграммами |
| Цена | Бесплатно (self-hosted) или $0.10/час (cloud) | От $15/хост/месяц | Бесплатно (self-hosted) |
| Open Source | Да (Apache 2.0) | Нет | Да (Apache 2.0) |
| Обнаружение топологии | Автоматическое через eBPF | Требует установки агента и конфигурации | Только на основе trace-заголовков |
| Поддержка очередей | Kafka, RabbitMQ, NATS (нативные плагины) | Только через интеграцию с Datadog Agent | Только через трейсинг |
| ML-аномалии | Встроенный изолирующий лес | Отдельный модуль Watchdog (доп. оплата) | Нет |
| Производительность | < 1 сек задержка, 10K узлов | 2-5 сек задержка, до 50K узлов | < 1 сек, но только для трейсов |
| Интеграция с K8s | Нативный оператор | Datadog Operator | Jaeger Operator |
Maple выигрывает у Datadog Live Map в цене и открытости, а у Jaeger — в автоматическом обнаружении топологии и поддержке очередей. Однако Jaeger остается лучшим выбором для глубокого анализа отдельных трейсов, а Datadog — для компаний, которым нужна единая платформа с поддержкой.
Maple — это зрелый инструмент для команд, которые устали от статичных дашбордов и хотят видеть живую картину своей инфраструктуры. Он идеально подходит для микросервисных архитектур с интенсивным использованием очередей сообщений и баз данных. Основные сильные стороны — автоматическое обнаружение топологии через eBPF, низкая задержка и встроенная ML-детекция аномалий. Слабые места — отсутствие долгосрочного хранения данных (требуется интеграция с Prometheus или ClickHouse) и ограниченная поддержка баз данных (только SQL и ClickHouse, нет Cassandra или S3).
Рекомендуем Maple для сценариев, где критично быстрое обнаружение проблем в реальном времени: production-среды с высокими требованиями к latency, event-driven архитектуры на Kafka, и Kubernetes-кластеры с динамической топологией. Для команд, которые уже используют Jaeger или Datadog, Maple может стать полезным дополнением, но не полной заменой. Open Source-версия полностью функциональна и не имеет ограничений, что делает ее отличным выбором для стартапов и средних компаний.