AyaFlow Nedir?
AyaFlow, Rust dilinde yazılmış yüksek performanslı bir eBPF (extended Berkeley Packet Filter) tabanlı ağ trafiği analizörüdür. Kubernetes ortamlarında çalışmak üzere tasarlanmış olan bu araç, minimum overhead ile node genelinde ağ trafiğini kernel seviyesinde gözlemlemeyi sağlar. AyaFlow, Aya eBPF framework'ü üzerine inşa edilmiştir ve bir DaemonSet olarak çalışır, bu da her bir uygulama pod'u için ayrı bir pod oluşturmak yerine her node için bir pod oluşturulmasını sağlar.
AyaFlow’un Temel Özellikleri
Kernel Tarafı İşlem: AyaFlow, Ethernet, IPv4, TCP ve UDP başlıklarını işleyen bir Traffic Control (TC) sınıflandırıcısı kullanır. Bu sınıflandırıcı, trafik kontrol alt sistemine doğrudan bağlanarak hafif PacketEvent yapılarını bir paylaşılan ring buffer'a gönderir. Bu işlem, ağ trafiğinin yönü hakkında bilgi sağlar.
Kullanıcı Alanı İşlemi: Asenkron bir Tokio ajanı, ring buffer'ı periyodik olarak kontrol eder, canlı bağlantı durumunu DashMap içinde tutar ve olayları SQLite veritabanına kaydeder. Ayrıca, REST API üzerinden Prometheus metrikleri sunar.
Gerçek Zamanlı İzleme: AyaFlow, canlı bir kontrol paneli sunar ve WebSocket akışı ile istatistikleri gerçek zamanlı olarak iletebilir. Bu özellik, ağ trafiğinin anlık durumu hakkında bilgi verir.
Derin L7 İncelemesi: Opsiyonel olarak, TLS SNI ve DNS sorgularını çıkararak şifreli trafiğin alan düzeyinde görünürlüğünü sağlar. Bu, kullanıcılara daha ayrıntılı analiz imkanı sunar.
Prometheus Desteği: AyaFlow, kullanıcıların ağ trafiği ile ilgili çeşitli metrikleri toplamasına yardımcı olur. Örneğin, toplam paket sayısı, aktif bağlantı sayısı ve çözülmüş alan adları gibi veriler sağlar.
Kurulum ve Dağıtım
AyaFlow kurulumu için, öncelikle bpf-linker'ı kurmanız gerekmektedir. Bunun için aşağıdaki komutu kullanabilirsiniz:
cargo +nightly install bpf-linker
Ayrıca, çeşitli kullanım senaryoları için yerel, Docker veya Kubernetes ortamında AyaFlow'u kullanmak mümkündür. Kubernetes üzerinde dağıtımı gerçekleştirmek için aşağıdaki komutu kullanarak DaemonSet'i uygulayabilirsiniz:
kubectl apply -f k8s/daemonset.yaml
Performans ve Kaynak Kullanımı
AyaFlow, minimum kaynak kullanımı ile yüksek performans sunar. Örneğin, 2 vCPU ve 2 GB RAM'e sahip bir sanal makine üzerinde yapılan testlerde, kullanıcı alanı RSS (steady-state) 256 KB olarak ölçülmüştür. Hafıza büyümesi gözlemlenmemiştir, yani istikrarlı bir performans sergilemektedir.
Sonuç
AyaFlow, ağ trafiğini analiz etmek isteyen geliştiriciler ve sistem yöneticileri için son derece etkili bir çözümdür. eBPF'nin sağladığı avantajlar sayesinde, geleneksel yöntemlere göre çok daha az overhead ile kapsamlı bir analiz imkanı sunmaktadır. Özellikle Kubernetes ortamlarında kullanımı, modern mikroservis mimarilerinin gereksinimlerini karşılamak için idealdir.




