
Um analisador de tráfego de rede de alto desempenho baseado em eBPF, escrito em Rust.
ayaFlow é um analisador de tráfego de rede em Rust + eBPF construído com Aya. Ele executa um agente por nó Linux, anexa um classificador TC na entrada e saída, e expõe dados de tráfego ao vivo, histórico com suporte a SQLite e métricas do Prometheus.
/metrics do Prometheus.O runtime de captura de pacotes do ayaFlow é apenas para Linux. Os fluxos de trabalho do contribuidor são divididos propositalmente:
cargo test -p ayaflow-commoncargo test -p ayaflowcargo xtask build-usercargo xtask check-hostcargo xtask build-ebpfcargo xtask buildcargo xtask run -- --deep-inspectSe você estiver no macOS, use Docker ou uma VM Linux para o fluxo de trabalho completo do eBPF. Veja HOW_TO_USE_LOCAL.md para ambos os caminhos.
cargo xtask check-host
cargo xtask build
sudo ./target/debug/ayaflow --db-path /tmp/traffic.db
Se --interface for omitido, o ayaFlow detecta automaticamente a interface de rota padrão a partir de /proc/net/route e usa eth0 como fallback apenas se a detecção falhar.
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 suporta:
limit, offsetstart_time, end_timeprotocolip, src_ip, dst_ipport, src_port, dst_portdirectiondomainrow_type=raw|aggregatedExemplo:
curl "http://localhost:3000/api/history?limit=20&protocol=TCP&dst_port=443&row_type=raw"
ayaflow/ Runtime de userspace, API, armazenamento e testes seguros para host
ayaflow-common/ Tipos de pacotes/eventos compartilhados usados pelo userspace e eBPF
ayaflow-ebpf/ Classificador TC e programa de captura de payload
xtask/ Ferramentas de construção e auxiliares de fluxo de trabalho
k8s/ Manifestos Kubernetes
monitoring/ Ativos do Prometheus e Grafana
A árvore src/ duplicada no nível raiz é legado e não faz parte do caminho de construção suportado. Use a crate ayaflow/ e os comandos cargo xtask acima.
O fluxo de trabalho seguro para host agora passa nesta máquina de desenvolvimento macOS com:
cargo test -p ayaflow-commoncargo test -p ayaflowcargo xtask check-hostA validação do runtime apenas para Linux ainda precisa ser feita em um host Linux ou runner de CI com a toolchain eBPF instalada.
Este projeto utiliza três licenças diferentes dependendo do componente:
O agente de userspace e as bibliotecas comuns (ayaflow e ayaflow-common) são duplamente licenciados sob:
à sua escolha.
Os componentes de kernel eBPF (ayaflow-ebpf) são licenciados estritamente sob a GNU General Public License v2.0 (GPL) para garantir compatibilidade com o verificador do kernel Linux.
| Flag | Descrição | Padrão |
|---|
-i, --interface | Interface a monitorar. Omita para detectar automaticamente a interface de rota padrão no Linux. | auto-detect, fallback eth0 |
-p, --port | Porta do servidor da API | 3000 |
--db-path | Caminho do banco de dados SQLite | traffic.db |
--connection-timeout | Limpeza de conexões obsoletas em segundos | 60 |
--data-retention | Excluir automaticamente histórico mais antigo que N segundos | desabilitado |
--aggregation-window | Armazenar janelas de histórico agregadas em vez de linhas de pacotes brutos | 0 (modo bruto) |
--allowed-ips | CIDRs permitidos para acessar a API | irrestrito |
-c, --config | Caminho do arquivo de configuração YAML | nenhum |
-q, --quiet | Suprimir logs não relacionados a erros | false |
--deep-inspect | Habilitar extração de consulta DNS + SNI TLS | false |
--enable-ipv6 | Habilitar captura de pacotes IPv6 | false |
--resolve-dns | Habilitar consultas DNS reversas | false |
| Endpoint | Método | Descrição |
|---|
/api/health | GET | Status de saúde, contadores de pacotes e configuração ativa do runtime |
/api/stats | GET | Tempo de atividade, throughput, contagens e configuração ativa do runtime |
/api/live | GET | Top 50 conexões ativas por contagem de pacotes |
/api/history | GET | Histórico de tráfego filtrável com metadados de paginação |
/api/stream | WS | Estatísticas ao vivo a cada segundo |
/metrics | GET | Formato de texto do Prometheus |