Aether

0

Описание

Инструмент для мониторинга сетей

Языки

  • Roff33%
  • Go31,9%
  • Shell29,2%
  • Vue3,3%
  • CSS1,2%
  • TypeScript0,8%
  • Остальные0,6%
README.md

Aether logo

Aether

Распределённая высокопроизводительная система сетевого мониторинга и observability,
написанная на Go для современных гибридных инфраструктур.

eBPF
·
WebAssembly
·
P2P Mesh
·
Smart RCA
·
GitOps

Репозиторий на GitVerse


Содержание


Обзор

Aether — не «ещё один Nagios». Это система мониторинга нового поколения, спроектированная для Cloud + On-Premise + Edge инфраструктур. Ключевые отличия от существующих решений:

ПроблемаРешение Aether
Тяжёлые агенты потребляют ресурсыeBPF — аналитика прямо в ядре Linux с нулевым оверхедом
Плагины на Bash небезопасны и медленныWebAssembly — изолированная песочница, любой язык
Единая точка отказа при мониторингеP2P Mesh — агенты продолжают работу автономно
500 алертов при падении одного коммутатораSmart RCA — графовый анализ, один алерт на первопричину
Ручное обновление конфигурацииGitOps — YAML в репозитории, hot-reload без рестарта

Архитектура

Поток данных


Возможности

Сбор данных

  • ICMP — пинг с RTT и потерями
  • TCP/UDP — проверка портов и connect-time
  • HTTP/HTTPS — статусы, SSL-сертификаты, задержки
  • SNMP v2c/v3 — асинхронный опрос сетевого оборудования
  • eBPF — TCP-ретрансмиссии, DNS-латентность на уровне ядра
  • Wasm-плагины — кастомные проверки на любом языке
  • Autodiscovery — сканирование подсетей (ARP/ICMP)

Алертинг

  • Гибкие триггеры с математическими выражениями (
    avg(cpu, 5m) > 90
    )
  • Каналы: Telegram, Webhooks (интеграция с CI/CD, auto-remediation)
  • Графовый анализ первопричин (Smart RCA)

Отказоустойчивость

  • P2P Mesh на базе Gossip-протокола
  • Автономный мониторинг при недоступности Core
  • Синтетические проверки из множества локаций

Управление

  • GitOps — YAML-конфигурация, hot-reload через gRPC-стрим
  • REST + GraphQL API
  • Vue 3 UI c D3.js-визуализацией сетевой топологии

Требования

КомпонентВерсия
Go≥ 1.22
Node.js≥ 18 (для фронтенда)
Docker + ComposeДля PostgreSQL и VictoriaMetrics
PostgreSQL16
VictoriaMetrics≥ 1.95

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

1. Клонирование

2. Запуск зависимостей

Это поднимет:

  • PostgreSQL на
    localhost:5433
  • VictoriaMetrics на
    localhost:8428

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

Рабочие

configs/*.yaml
игнорируются Git'ом, коммитятся только
*.example.yaml
.

4. Сборка и запуск Core

Core запускается на:

  • HTTP API:
    http://localhost:8080
  • gRPC:
    localhost:50051

На старте применяются SQL-миграции, загружаются правила алертов и связи топологии из PostgreSQL.

5. Запуск Probe (в отдельном терминале)

Probe лениво подключается к Core по gRPC и автоматически восстанавливает поток метрик при обрыве соединения.

6. Запуск фронтенда (опционально)

UI будет доступен на

http://localhost:5173
.

7. Проверка работоспособности


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

Примеры конфигов лежат в

configs/
и коммитятся как
*.example.yaml
. Рабочие файлы (
configs/core.yaml
,
configs/probe.yaml
) создаются локально и исключены из репозитория.

Aether Core (
configs/core.yaml
)

Aether Probe (
configs/probe.yaml
)


Структура проекта

aether/ ├── api/ │ ├── proto/ # Protobuf-определения (buf) │ └── pb/ # Сгенерированный Go-код ├── cmd/ │ ├── aether-core/ # Entrypoint управляющего сервера │ └── aether-probe/ # Entrypoint агента-поллера ├── configs/ # YAML-конфигурации для локальной разработки ├── deployments/ │ ├── docker/ # Dockerfile.core, Dockerfile.probe │ └── k8s/ # Kubernetes-манифесты ├── internal/ │ ├── core/ │ │ ├── alerting/ # Движок триггеров, RCA, Telegram, Webhooks │ │ ├── api/ # REST-хэндлеры (chi), GraphQL (gqlgen) │ │ ├── discovery/ # Обработка autodiscovery-данных │ │ ├── gitops/ # Git-watcher, hot-reload конфигурации │ │ ├── grpc/ # gRPC-сервер (метрики, конфигурация, алерты) │ │ ├── store/ # PostgreSQL-репозиторий (pgx), миграции │ │ ├── topology/ # Граф сетевой топологии │ │ └── tsdb/ # VictoriaMetrics Remote Write клиент │ ├── probe/ │ │ ├── checks/ # ICMP, TCP, UDP, HTTP/HTTPS, SNMP │ │ ├── discovery/ # ARP/ICMP-сканирование подсетей │ │ ├── ebpf/ # eBPF-программы (tcp_retrans, dns_latency) │ │ ├── mesh/ # P2P Gossip (hashicorp/memberlist) │ │ └── wasm/ # Wazero-рантайм, host-функции, загрузчик │ └── shared/ │ ├── config/ # Загрузка и валидация YAML-конфигов │ ├── logger/ # Structured logging (log/slog) │ └── models/ # Общие доменные модели ├── scripts/ # Вспомогательные скрипты (eBPF codegen) ├── web/ # Vue 3 + TypeScript + Tailwind + D3.js ├── docker-compose.yml # PostgreSQL + VictoriaMetrics ├── Makefile └── go.mod

API

REST (
/api/v1/
)

МетодПутьОписание
GET
/healthz
Health check
GET
/api/v1/nodes
Список узлов
POST
/api/v1/nodes
Upsert узла
GET
/api/v1/alerts
Список событий алертов (с учётом RCA)
GET
/api/v1/alerts/rules
Список правил алертинга
POST
/api/v1/alerts/rules
Upsert правила алертинга
DELETE
/api/v1/alerts/rules/{id}
Удалить правило алертинга
GET
/api/v1/topology/links
Список связей топологии (DAG)
POST
/api/v1/topology/links
Upsert связи
child -> parent
DELETE
/api/v1/topology/links
Удалить связь (по
child
/
parent
query-параметрам)

Swagger-документация доступна по

/swagger.json
и
/swagger
.

GraphQL (
/graphql
)

gRPC (
:50051
)

СервисМетодТип
MetricIngestion
StreamMetrics
Клиентский стрим
ConfigurationService
StreamConfig
Серверный стрим
AlertService
UpsertAlertRule
Унарный
AlertService
ListAlertRules
Унарный
DiscoveryService
DiscoverNodes
Унарный
grpc.health.v1.Health
Check
/
Watch
Унарный / стрим

Docker & Kubernetes

Сборка образов

Запуск через Docker

Kubernetes

Core деплоится как Deployment (1 реплика, Service ClusterIP), Probe — как DaemonSet на каждую ноду кластера.


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

Backend (Go)

ОбластьБиблиотека
HTTP-роутерchi
GraphQLgqlgen (code-first)
gRPCgoogle.golang.org/grpc + buf
PostgreSQLpgx/v5
Миграцииgolang-migrate
TSDBVictoriaMetrics Remote Write
eBPFcilium/ebpf + bpf2go
WebAssemblywazero (чистый Go, без CGO)
P2P Gossiphashicorp/memberlist
SNMPgosnmp
Логирование
log/slog
(stdlib, structured)

Frontend

ОбластьТехнология
ФреймворкVue 3 + Composition API
РоутингVue Router 5
СтейтPinia 3
СтилиTailwind CSS 4
ВизуализацияD3.js 7
HTTP-клиентAxios
СборкаVite 8

Makefile


Aether · распределённый мониторинг нового поколения