eBPF ile Sunucu İzleme Rehberi: Performans ve Güvenlik
eBPF ile Sunucu İzleme Rehberi: Performans, Güvenlik ve Uygulama Örnekleri
Son Güncelleme: Mayıs 2026
eBPF (extended Berkeley Packet Filter) modern Linux sunucularında hem performans izleme hem de güvenlik için güçlü bir altyapı sağlar. Bu rehberde eBPF mimarisi, pratik kullanım senaryoları, kurulum adımları ve örnek komutlar ile üretimde güvenli ve etkili izleme nasıl yapılır adım adım anlatılacaktır.
İçindekiler
- eBPF Nedir?
- eBPF Mimarisi ve Temelleri
- Yaygın Araçlar ve Karşılaştırma
- Kurulum ve Kernel Gereksinimleri
- Temel Komutlar ve Örnekler
- Performans Etkisi ve Güvenlik
- En İyi Uygulamalar
- Pratik Kullanım Senaryoları
- Sıkça Sorulan Sorular
- Sonuç
eBPF Nedir?
eBPF, Linux çekirdeği (kernel) içine güvenli ve izole edilmiş şekilde küçük programlar yükleyerek işletim sistemi seviyesinde veri toplanmasına, paket filtrelemeye ve olay takibine imkan veren bir teknolojidir. eBPF ile:
- Gözlemlenebilirlik (observability): Sistem çağrıları, ağ paketleri, scheduler, kılavuzlar (traces) gibi uç noktalardan ayrıntılı veri elde edilir.
- Güvenlik: Tehdit tespiti, davranış tabanlı izleme ve sandboxed (izole) politika uygulamaları yapılabilir.
- Performans: Kernel seviyesinde düşük gecikmeli ölçümlerle uygulama performansı incelenebilir.
eBPF Mimarisi ve Temelleri
eBPF programları kullanıcı alanından (user space) derlenir ve çekirdeğe yüklenir. Çekirdek, bu programları güvenlik kontrollerinden geçirir (verifier) ve JIT (Just-In-Time) derleme ile native koda çevirir. Temel bileşenler:
- Program Tipleri: kprobe, uprobes, tracepoints, socket filters, XDP (eXpress Data Path) gibi farklı bağlama noktalar.
- Map'ler: Kullanıcı alanı ile kernel arasında veri paylaşımı sağlayan anahtar-değer yapıları.
- Verifier: Güvenlik ve kaynak tüketim kontrollerini yapan modül.
- bpftool / libbpf: Yönetim ve yükleme araçları.
Yaygın Araçlar ve Karşılaştırma
eBPF ekosistemi çok sayıda araç sunar. Aşağıdaki tabloda bazı popüler araçların hızlı karşılaştırması yer alıyor.
| Aracı | Tipi | Kullanım Alanı | Öne Çıkan Özellik |
|---|---|---|---|
| bpftrace | Yüksek seviye betik | Hızlı izleme, ad-hoc debug | LLVM-temelli, kolay sözdizimi |
| BCC (BPF Compiler Collection) | C/Python API | Gelişmiş tracing, araçlar koleksiyonu | Hazır script'ler, geniş örnek kütüphanesi |
| libbpf / bpftool | Low-level kütüphane / araç | Üretim odaklı yükleme ve yönetim | Performans odaklı, C ile entegrasyon |
| Falco | Güvenlik | Davranış tabanlı saldırı tespiti | Kurallar üzerinden gerçek zamanlı uyarı |
Kurulum ve Kernel Gereksinimleri
eBPF için temel gereksinimler:
- Kernel: Linux kernel 4.9+ önerilir; modern özellikler için 5.x veya üstü tavsiye edilir.
- Gerekli paketler: bpftool, bpftrace, llvm, clang, libbpf-dev gibi derleyici ve araçlar.
- Yetkiler: eBPF programı yüklemek için
CAP_BPFveya root yetkisi gerekir.
Örnek kurulum (Ubuntu/Debian):
sudo apt update
sudo apt install -y bpftrace bpftool clang llvm libbpf-dev linux-headers-$(uname -r)
Eğer kernel eskiyse, çekirdek yükseltmesi veya çekirdek modüllerinin aktivasyonu gerekebilir. Bulut ya da VPS ortamında kernel değişikliği mümkün değilse çekirdek özelliklerini sağlayan bir Türkiye VPS Sunucu veya Bulut Sunucu tercih edebilirsiniz.
Temel Komutlar ve Örnekler
Aşağıda üretimde sık kullanılan bazı bpftrace ve bpftool örnekleri bulunmaktadır.
- Çalışan kprobe'ları listeleme:
sudo bpftool prog show
- Basit bpftrace ile sistem çağrıları sayma (open):
sudo bpftrace -e 'tracepoint:syscalls:sys_enter_openat { @[comm] = count(); }'
Belirli bir süreç için bağlamlı izleme:
sudo bpftrace -e 'kprobe:do_sys_open /pid == 1234/ { printf("open called by pid 1234\n"); }'
Network XDP ile paket drop/accept istatistikleri (örnek XDP programları daha gelişmiştir):
sudo ip link set dev eth0 xdpdrv obj xdp_prog.o sec xdp_main
Performans Etkisi ve Güvenlik
Performans açısından eBPF, kernel seviyesinde çalıştığı ve JIT derlemesi yaptığından genelde düşük overhead sağlar. Ancak yanlış yazılmış veya yoğun veri toplayan programlar performansı etkileyebilir. Dikkat edilmesi gerekenler:
- Map boyutu: Çok büyük map'ler bellek tüketimini artırır.
- Sampling (örnekleme): Sürekli full-trace yerine örnekleme kullanın.
- İzleme aralığı: Çok sık toplama yapmak I/O yükü oluşturabilir.
Güvenlik tarafında eBPF verifier kritik rol oynar. Doğru politika ve sınırlar olmadan kernel kaynakları kötüye kullanılabilir. Üretimde şu önlemler alınmalıdır:
- Yetki sınırlandırma: Sadece gerekli kullanıcılar veya servisler eBPF programı yükleyebilmeli.
- Change control: eBPF yüklemeleri değişiklik yönetimi (CI/CD) içerisinde değerlendirilmelidir.
- Audit: Yüklenen programlar ve map'ler düzenli denetlenmeli.
En İyi Uygulamalar
- Başlık: Üretim ortamında doğrudan keşif komutları yerine test/izole ortamda doğrulama yapın.
- Başlık: Map boyutlarını sınırlandırın ve TTL/garbage collector benzeri mekanizmalar kullanın.
- Başlık: Telemetri verilerini Prometheus/Grafana ile entegre ederek uzun süreli analiz sağlayın.
- Başlık: eBPF programlarını versiyonlayın ve değişiklikleri otomatik testlere tabi tutun.
Pratik Kullanım Senaryoları
Aşağıda gerçek dünyada sık karşılaşacağınız birkaç senaryo ve örnek yaklaşımlar yer alıyor.
- Geçici yavaşlama (latency spike): Uygulama aniden yavaşladığında, system call trace ile hangi süreçlerin I/O yoğun olduğunu tespit edin. bpftrace ile latency histogramları oluşturabilirsiniz.
- Şüpheli ağ trafiği: XDP veya socket filter ile bağlantı başlangıçlarını ve paket boyutlarını izleyerek anormallikleri belirleyin. Falco gibi çözümlerle entegre ederek uyarı sistemi kurabilirsiniz.
- Memory leak tespiti: Kernel fonksiyon çağrıları ve per-process memory allocation izlenerek hangi işlem veya kütüphanenin sızıntı yarattığı bulunabilir.
- Database sorgu sapmaları: Uprobes veya userspace trace ile belirli kütüphane fonksiyonlarının (ör. libpq, libmysqlclient) davranışı ölçülüp, yavaş sorguların kaynağı bulunabilir.
Örnek: belirli bir endpoint için latency histogramı (bpftrace):
sudo bpftrace -e '
tracepoint:syscalls:sys_enter_sendto /comm == "nginx"/ { @start[tid] = nsecs; }
tracepoint:syscalls:sys_exit_sendto /@start[tid]/ { @latency = hist(nsecs - @start[tid]); delete(@start[tid]); }'
Sıkça Sorulan Sorular
eBPF kullanmak için hangi kernel sürümüne ihtiyacım var?
Genel olarak Linux kernel 4.9 ve üstü eBPF desteği sunar, ancak modern eBPF özellikleri ve XDP için kernel 5.x veya üzeri önerilir. Üretimde en iyi uyumluluk için dağıtımınızın güncel kernel paketlerini kullanın.
eBPF ile toplanan veriler uzun süre saklanabilir mi?
eBPF map'leri geçici (in-memory) veri sağlar; uzun süreli saklama için verileri alıp (pull) Prometheus, Elastic veya object storage gibi dış sistemlere aktarmanız gerekir. Bu nedenle veriyi normalleştirip harici depolama ile entegre edin.
Üretim ortamında eBPF güvenli midir?
Evet, eBPF verifier sayesinde programlar kernel'e yüklenmeden önce kontrol edilir. Ancak yetki yönetimi, resource limitleri ve değişiklik kontrolü gibi operasyonel önlemler alınmalıdır.
eBPF hangi araçlarla birlikte kullanılır?
Yaygın kullanılanlar: bpftrace (ad-hoc tracing), BCC (script koleksiyonu), bpftool (yönetim), libbpf (Uygulama entegrasyonu). Güvenlik için Falco veya Suricata ile entegrasyon yapılabilir.
eBPF ile toplanan verileri nasıl görselleştiririm?
Toplanan ölçümleri Prometheus formatına dönüştürüp Grafana ile görselleştirebilirsiniz. Ayrıca hazır eBPF exporterlardan yararlanmak zaman kazandırır.
Sonuç
Bu rehberde eBPF ile Linux sunucularında nasıl ayrıntılı performans ve güvenlik izleme yapılacağını, hangi araçların kullanıldığını ve üretimde nelere dikkat edilmesi gerektiğini ele aldık. eBPF, doğru uygulandığında düşük overhead ile güçlü gözlemlenebilirlik sağlar ancak kernel seviyesinde çalıştığı için yetki, resource ve change control uygulamalarına özen göstermek gerekir.
Corelux olarak ihtiyaç duyduğunuz sunucu altyapısını ve yönetilen hizmetleri sağlayabiliriz. eBPF ile izleme yapmak istediğiniz yüksek performanslı uygulamalar için Sanal Sunucu veya Kiralık Sunucu çözümlerimizi inceleyin. Güvenlik ve yedekleme ihtiyaçları için SSL Sertifikası ve Yedekleme Hizmeti sayfalarımızı ziyaret edebilirsiniz.
İleri seviye entegrasyon, otomasyon ve 7/24 operasyonel destek için Corelux ile iletişime geçin.
Yazar
Boran BAR