
एक उच्च-प्रदर्शन, 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 पर हैं, तो पूर्ण 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/ उपयोगकर्ता स्थान रनटाइम, 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-hostLinux-केवल रनटाइम सत्यापन अभी भी eBPF टूलचेन स्थापित Linux होस्ट या CI रनर पर होना आवश्यक है।
यह परियोजना घटक के आधार पर तीन अलग-अलग लाइसेंसों का उपयोग करती है:
उपयोगकर्ता स्थान एजेंट और सामान्य पुस्तकालय (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 | प्रति सेकंड लाइव स्टैट्स |
/metrics | GET | Prometheus टेक्स्ट फ़ॉर्मेट |