
高パフォーマンスなeBPFベースのネットワークトラフィックアナライザーで、Rustで書かれています。
ayaFlowは、Aya で構築されたRust + eBPFネットワークトラフィックアナライザです。各Linuxノードで1つのエージェントを実行し、ingressとegressに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-inspectmacOSの場合は、完全なeBPFワークフローにDockerまたはLinux VMを使用してください。両方のパスについては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/ Userspace runtime, API, storage, and host-safe tests
ayaflow-common/ Shared packet/event types used by userspace and eBPF
ayaflow-ebpf/ TC classifier and payload capture program
xtask/ Build and workflow helpers
k8s/ Kubernetes manifests
monitoring/ Prometheus and Grafana assets
ルートレベルの重複したsrc/ツリーはレガシーであり、サポートされているビルドパスの一部ではありません。上記のayaflow/クレートとcargo xtaskコマンドを使用してください。
ホストセーフワークフローは現在、このmacOS開発マシンで以下を通過します:
cargo test -p ayaflow-commoncargo test -p ayaflowcargo xtask check-hostLinuxのみのランタイム検証は、eBPFツールチェーンがインストールされたLinuxホストまたはCIランナーで行う必要があります。
このプロジェクトは、コンポーネントに応じて3つの異なるライセンスを使用しています:
ユーザー空間エージェントと共通ライブラリ(ayaflowおよびayaflow-common)は、以下のいずれかのデュアルライセンスです:
お好みで。
eBPFカーネルコンポーネント(ayaflow-ebpf)は、Linuxカーネル検証器との互換性を確保するために、厳密にGNU General Public License v2.0 (GPL)の下でライセンスされています。
| フラグ | 説明 | デフォルト |
|---|
-i, --interface | 監視するインターフェース。省略するとLinuxでデフォルトルートインターフェースを自動検出します。 | 自動検出、フォールバックeth0 |
-p, --port | APIサーバーポート | 3000 |
--db-path | SQLiteデータベースのパス | traffic.db |
--connection-timeout | 古い接続のクリーンアップ間隔(秒) | 60 |
--data-retention | N秒より古い履歴を自動削除 | 無効 |
--aggregation-window | 生パケット行の代わりに集計履歴ウィンドウを保存 | 0(生モード) |
--allowed-ips | APIへのアクセスを許可するCIDR | 無制限 |
-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 | 1秒ごとのライブ統計 |
/metrics | GET | Prometheusテキスト形式 |