
Высокопроизводительный анализатор сетевого трафика на основе eBPF, написанный на Rust.
ayaFlow — это анализатор сетевого трафика на Rust + eBPF, построенный на Aya. Он запускает один агент на узел Linux, подключает классификатор TC на входе и выходе, а также предоставляет данные о живом трафике, историю на основе SQLite и метрики Prometheus.
/metrics.Среда захвата пакетов ayaFlow работает только на Linux. Рабочие процессы для контрибьюторов намеренно разделены:
cargo test -p ayaflow-commoncargo test -p ayaflowcargo xtask build-usercargo xtask check-hostcargo xtask build-ebpfcargo xtask buildcargo xtask run -- --deep-inspectЕсли вы используете macOS, используйте Docker или виртуальную машину Linux для полного рабочего процесса eBPF. См. HOW_TO_USE_LOCAL.md для обоих сценариев.
cargo xtask check-host
cargo xtask build
sudo ./target/debug/ayaflow --db-path /tmp/traffic.db
Если параметр --interface опущен, ayaFlow автоматически определяет интерфейс маршрута по умолчанию из /proc/net/route и использует запасной eth0 только в случае неудачи.
curl http://localhost:3000/api/health
curl http://localhost:3000/api/stats
curl "http://localhost:3000/api/history?limit=5&row_type=raw"
curl http://localhost:3000/metrics
/api/history поддерживает:
limit, offsetstart_time, end_timeprotocolip, src_ip, dst_ipport, src_port, dst_portdirectiondomainrow_type=raw|aggregatedПример:
curl "http://localhost:3000/api/history?limit=20&protocol=TCP&dst_port=443&row_type=raw"
ayaflow/ Пользовательская среда выполнения, API, хранилище и безопасные для хоста тесты
ayaflow-common/ Общие типы пакетов/событий, используемые пользовательским пространством и eBPF
ayaflow-ebpf/ Программа классификатора TC и захвата нагрузки
xtask/ Вспомогательные скрипты для сборки и рабочего процесса
k8s/ Манифесты Kubernetes
monitoring/ Ресурсы Prometheus и Grafana
Дублирующееся дерево src/ на корневом уровне является устаревшим и не является частью поддерживаемого пути сборки. Используйте пакет ayaflow/ и команды cargo xtask выше.
Безопасный для хоста рабочий процесс теперь проходит на этой машине разработки macOS с:
cargo test -p ayaflow-commoncargo test -p ayaflowcargo xtask check-hostПроверка среды выполнения только на Linux всё ещё должна выполняться на хосте Linux или CI-раннере с установленным набором инструментов eBPF.
Этот проект использует три разные лицензии в зависимости от компонента:
Пользовательский агент и общие библиотеки (ayaflow и ayaflow-common) имеют двойную лицензию на условиях:
на ваш выбор.
Компоненты ядра eBPF (ayaflow-ebpf) строго лицензированы в соответствии с GNU General Public License v2.0 (GPL) для обеспечения совместимости с верификатором ядра Linux.
| Флаг | Описание | По умолчанию |
|---|
-i, --interface | Интерфейс для мониторинга. Если опущен, будет автоматически определён интерфейс маршрута по умолчанию на Linux. | автоопределение, запасной eth0 |
-p, --port | Порт сервера API | 3000 |
--db-path | Путь к базе данных SQLite | traffic.db |
--connection-timeout | Очистка устаревших соединений в секундах | 60 |
--data-retention | Автоматическое удаление истории старше N секунд | отключено |
--aggregation-window | Хранение окон агрегированной истории вместо строк сырых пакетов | 0 (сырой режим) |
--allowed-ips | CIDR, которым разрешён доступ к API | без ограничений |
-c, --config | Путь к YAML-файлу конфигурации | нет |
-q, --quiet | Подавление не-ошибочных логов | false |
--deep-inspect | Включить извлечение DNS-запросов и TLS SNI | false |
--enable-ipv6 | Включить захват пакетов IPv6 | false |
--resolve-dns | Включить обратные DNS-запросы | false |
| Эндпоинт | Метод | Описание |
|---|
/api/health | GET | Статус здоровья, счётчики пакетов и активная конфигурация среды выполнения |
/api/stats | GET | Время работы, пропускная способность, счётчики и активная конфигурация среды выполнения |
/api/live | GET | Топ-50 активных соединений по количеству пакетов |
/api/history | GET | Фильтруемая история трафика с метаданными пагинации |
/api/stream | WS | Статистика в реальном времени каждую секунду |
/metrics | GET | Текстовый формат Prometheus |