Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Docker Konteynerlerini eBPF Araçları ile İzleme: Syscall ve Ağ Trafiği Analizi

✖ Kapat
Duyuru
✖ Kapat
Duyuru

webnix

Üye
Katılım
14 Mart 2026
Mesajlar
51
Merhaba arkadaşlar, bugün sizlere modern sistem izleme dünyasının en güçlü araçlarından biri olan eBPF'yi kullanarak Docker konteynerlerinizi nasıl derinlemesine izleyebileceğinizi anlatacağım. Klasik log dosyaları ve top komutu artık yeterli değil, özellikle mikroservis mimarilerinde bir konteynerin içinde tam olarak neler olduğunu, hangi sistem çağrılarını (syscall) yaptığını ve ağ trafiğinin detaylarını görmek performans sorunlarını çözmede ve güvenliği artırmada çok kritik. Bu rehberde, BCC (BPF Compiler Collection) araç seti ile pratik adımları göstereceğim.

🔍 eBPF ve BCC Nedir? Neden Kullanmalıyız?

eBPF (extended Berkeley Packet Filter), Linux kernel'ine güvenli bir şekilde program yükleyip çalıştırmamızı sağlayan bir teknoloji. Performansı neredeyse sıfır etkilerken, kernel seviyesinde izleme, ağ filtreleme ve güvenlik politikaları uygulama gibi süper güçler veriyor. BCC ise bu eBPF programlarını kolayca yazıp çalıştırmak için Python ve Lua front-end'leri sağlayan bir araç seti. Docker konteynerlerini izlemek için biçilmiş kaftan çünkü konteyner ID'sine göre filtreleme yapabiliyoruz.

⚙️ Ortam Hazırlığı ve BCC Kurulumu

İlk adım olarak, BCC araçlarını kurmamız gerekiyor. Ben genelde Ubuntu/Debian tabanlı sistemlerde çalıştığım için şu adımları takip ediyorum. Kernel başlık dosyalarının da kurulu olduğundan emin olun.

Bash:
sudo apt update && sudo apt install -y bpfcc-tools linux-headers-$(uname -r)

Kurulum bittikten sonra araçlar `/usr/share/bcc/tools` dizinine yüklenir. Buradaki araçların çoğu `-h` parametresi ile kullanım detaylarını gösterir. Bir Docker konteynerini çalıştıralım ki üzerinde deneme yapabilelim.

Bash:
docker run -d --name test-nginx nginx:alpine

📊 Konteyner Sistem Çağrılarını (Syscall) İzleme

Şimdi sıra geldi en sevdiğim kısma. `execsnoop-bpfcc` aracı, sistemde çalıştırılan yeni prosesleri (ve dolayısıyla `exec()` syscall'larını) gerçek zamanlı gösterir. Docker konteynerlerini izlemek için `-c` parametresini kullanıyoruz. Önce konteynerimizin ID'sini öğrenelim.

Bash:
docker ps --no-trunc --format "table {{.ID}}\t{{.Names}}"

Çıktıdaki konteyner ID'sini (uzun hash değeri) kopyalayıp aşağıdaki komutta kullanın. Bu komut, sadece o konteyner içinde çalıştırılan komutları gösterecek.

Bash:
sudo /usr/share/bcc/tools/execsnoop-bpfcc -c [KONTEYNER_ID]

Başka bir terminalden konteyner içine girip birkaç komut çalıştırdığınızda (örn: `docker exec test-nginx ls /`), bu komutların anında ekrana basıldığını göreceksiniz. Bu, bir konteynerin içinde gizli/kötü amaçlı bir işlem çalışıp çalışmadığını anlamak için harika bir yöntem.

⚠️ Dikkat Edilmesi Gerekenler

eBPF araçları kernel seviyesinde çalışır. Bu yüzden `sudo` yetkisi ile çalıştırılmaları şart. Yanlış kullanım sistem kararsızlığına yol açmaz (eBPF güvenlik kontrollerinden geçer) ancak yine de canlı sunucularda test etmeden önce bir staging ortamında denemenizi şiddetle tavsiye ederim. Ayrıca, `opensnoop` veya `fileslower` gibi araçlar da disk I/O izleme için çok kullanışlıdır.

🌐 Konteyner Ağ Trafiğini İzleme

Ağ performansı konteyner dünyasının can damarı. `tcpconnect-bpfcc` aracı ile konteynerimizin yaptığı TCP bağlantılarını gözlemleyebiliriz. Yine `-c` parametresi ile konteyner ID'sini belirtiyoruz.

Bash:
sudo /usr/share/bcc/tools/tcpconnect-bpfcc -c [KONTEYNER_ID]

Bu komut, konteynerin hangi IP ve port'a bağlantı kurmaya çalıştığını, bağlantının durumunu ve gecikmesini gösterir. Özellikle mikroservisler arası iletişimde beklenmeyen bir bağlantı veya gecikme olup olmadığını tespit etmekte çok faydalı.

Daha detaylı ağ analizi için `tcptracer-bpfcc` veya `tcplife-bpfcc` araçlarını da kullanabilirsiniz. Örneğin, `tcplife` TCP bağlantılarının ömrünü, aktarılan byte miktarını gösterir.

💡 Örnek Bir İzleme Senaryosu ve Çıktı Yorumlama

Diyelim ki `test-nginx` konteynerinizin anormal derecede yavaş çalıştığını fark ettiniz. Hemen birkaç aracı ardışık çalıştırarak sorunu daraltabilirsiniz:

1. `execsnoop` ile aşırı proses oluşturuluyor mu bakın.
2. `opensnoop-bpfcc` ile hangi dosyaların sürekli okunduğunu kontrol edin.
3. `tcpconnect` ile dış servislere yapılan bağlantıların hızını ve sıklığını gözlemleyin.

Bu araçların çıktıları bize sadece "ne" olduğunu değil, "nerede" ve "ne zaman" olduğunu da gösterir. Örneğin, /var/log/application.log dosyasının saniyede yüzlerce kez açıldığını görürseniz, loglama konfigürasyonunda bir hata olduğunu anlarsınız.

Umarım bu rehber, konteyner ortamlarınızı daha iyi anlamanıza ve sorun giderme süreçlerinizi hızlandırmanıza yardımcı olur. eBPF dünyası gerçekten çok geniş ve her geçen gün yeni araçlar çıkıyor. Siz bu konfigürasyonu kendi sunucularınızda nasıl yapıyorsunuz? Özellikle üretim ortamında eBPF kullanırken dikkat ettiğiniz noktalar var mı? Sorusu olan aşağıya yazsın, tecrübelerimizi paylaşalım.
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri