Sunucularınızda bir şeyler ters gittiğinde, ilk bakacağınız yerlerden biri ağ trafiğidir. Bant genişliğinin dolup dolmadığını, hangi arayüzün ne kadar trafik taşıdığını anlamak için karmaşık araçlara gerek yok. nload ve bmon bu işi terminal üzerinden, gerçek zamanlı olarak yapan iki hafif ve etkili araçtır. Bu yazıda her ikisini de derinlemesiyle ele alacağız, kurulumdan gerçek dünya senaryolarına kadar pratik bilgiler paylaşacağız.
nload Nedir ve Ne Zaman Kullanılır?
nload, ağ arayüzlerini gerçek zamanlı izleyen, terminal tabanlı bir araçtır. En büyük artısı son derece sade olmasıdır. Ekranı ikiye böler: üst kısım gelen trafik (Incoming), alt kısım giden trafik (Outgoing). Her iki bölümde de anlık bant genişliği, ortalama, minimum, maksimum değerler ve toplam transfer miktarı görünür.
Özellikle şu durumlarda işe yarar:
- Sunucunuza ani bir yük geldiğinde hızlıca “ne kadar bant genişliği tüketiliyor?” sorusuna cevap aramak
- Upload/download dengesizliğini tespit etmek
- Bant genişliği limitine yaklaşıp yaklaşılmadığını görmek
- Birden fazla ağ arayüzünü hızlıca taramak
nload Kurulumu
Debian/Ubuntu tabanlı sistemlerde:
sudo apt update && sudo apt install nload -y
RHEL/CentOS/Rocky Linux tabanlı sistemlerde:
sudo dnf install epel-release -y
sudo dnf install nload -y
Arch Linux için:
sudo pacman -S nload
nload Temel Kullanımı
Sadece nload yazıp çalıştırdığınızda, sistem varsayılan ağ arayüzünü izlemeye başlar. Sol ve sağ ok tuşları ile arayüzler arasında geçiş yapabilirsiniz.
nload
Belirli bir arayüzü izlemek için arayüz adını argüman olarak geçebilirsiniz:
nload eth0
Birden fazla arayüzü aynı anda izlemek isterseniz:
nload eth0 eth1 ens3
Bu komut tüm arayüzleri arka arkaya gösterir, ok tuşlarıyla aralarında gezinirsiniz.
nload Parametreleri
nload‘ın kullanışlı parametrelerini şöyle sıralayabiliriz:
- -u h: Bant genişliği birimini insan okunabilir formata ayarlar (otomatik Kbit, Mbit seçimi)
- -u k: Trafik değerlerini Kbit/s cinsinden gösterir
- -u m: Trafik değerlerini Mbit/s cinsinden gösterir
- -u g: Trafik değerlerini Gbit/s cinsinden gösterir
- -U M: Toplam transfer miktarını MB cinsinden gösterir
- -t 500: Yenileme aralığını milisaniye cinsinden ayarlar (varsayılan 500ms)
- -a 300: Ortalama hesaplama için zaman penceresini saniye cinsinden belirler
- -i 1024: Gelen trafik için maksimum ölçek değeri (Kbit/s)
- -o 1024: Giden trafik için maksimum ölçek değeri (Kbit/s)
Örneğin Mbit/s cinsinden ve 1 saniyelik yenileme aralığıyla çalıştırmak için:
nload -u m -t 1000 eth0
nload Çıktısını Anlama
nload arayüzü oldukça basittir ama bazı değerlerin ne anlama geldiğini bilmek önemlidir.
Device eth0 [192.168.1.10] (1/1):
================================================================================
Incoming:
Curr: 24.52 MBit/s
Avg: 18.33 MBit/s
Min: 0.00 Bit/s
Max: 31.07 MBit/s
Ttl: 14.23 GByte
Outgoing:
Curr: 1.23 MBit/s
Avg: 0.98 MBit/s
Min: 0.00 Bit/s
Max: 2.11 MBit/s
Ttl: 1.02 GByte
- Curr: O an ölçülen anlık bant genişliği değeri
- Avg: Belirlenen zaman penceresi içindeki ortalama
- Min: O oturumda görülen minimum değer
- Max: O oturumda görülen maksimum değer
- Ttl:
nloadbaşladığından bu yana toplam transfer miktarı
Bir web sunucusunda gelen trafiğin giden trafiğe oranının normalin çok üzerinde olduğunu görürseniz, ya büyük dosya indirmeleri oluyor ya da bir tür amplifikasyon saldırısı var demektir.
bmon Nedir ve nload’dan Farkı Ne?
bmon (Bandwidth Monitor) biraz daha zengin özelliklere sahip bir ağ izleme aracıdır. Aynı ekranda birden fazla arayüzü listeleyebilir, grafik gösterimini özelleştirebilir, farklı çıktı formatlarında (JSON, XML, ASCII) sonuç üretebilir ve betiklerle entegrasyon sağlayabilirsiniz.
nload‘u “hızlı bakış” aracı olarak tanımlarsak, bmon‘u “daha detaylı analiz” aracı olarak konumlandırabiliriz. Özellikle birden fazla arayüzü olan sunucularda, her arayüzün durumunu tek bir ekranda görmek büyük kolaylık sağlar.
bmon Kurulumu
Debian/Ubuntu için:
sudo apt update && sudo apt install bmon -y
RHEL/CentOS/Rocky Linux için:
sudo dnf install epel-release -y
sudo dnf install bmon -y
Arch Linux için:
sudo pacman -S bmon
Kaynak koddan derlemek isterseniz:
sudo apt install libconfuse-dev libnl-3-dev libnl-route-3-dev -y
git clone https://github.com/tgraf/bmon.git
cd bmon
./autogen.sh
./configure
make
sudo make install
bmon Temel Kullanımı
Sadece bmon komutuyla tüm ağ arayüzlerini izlemeye başlayabilirsiniz:
bmon
Belirli arayüzleri filtrelemek için -p parametresini kullanın:
bmon -p eth0,eth1
Belirli arayüzleri hariç tutmak isterseniz önüne ! koyun:
bmon -p '!lo'
Bu komut loopback arayüzünü hariç tutarak diğer tüm arayüzleri gösterir, ki çoğu senaryoda istediğiniz şey budur.
bmon Parametreleri
- -p eth0: İzlenecek arayüzleri belirtir, virgülle ayırarak birden fazla yazılabilir
- -r 1: Ekran yenileme aralığı (saniye cinsinden)
- -o curses: Çıktı modunu belirler (curses, ascii, html, json)
- -s 0: Grafik geçmişini devre dışı bırakır
- -b: Bant genişliğini bit cinsinden gösterir (varsayılan byte)
- -f /etc/bmon.conf: Özel konfigürasyon dosyası kullanır
bmon ASCII Modu
bmon’un en kullanışlı özelliklerinden biri ASCII modudur. Özellikle betikler içinde veya log’a yazmak istediğinizde işe yarar:
bmon -p eth0 -o ascii
Bu mod terminal grafiklerini ASCII karakterlerle çizer ve pipe ile başka komutlara gönderilebilir.
bmon JSON Çıktısı
Otomasyon veya monitoring sistemleriyle entegrasyon için JSON çıktısı oldukça değerlidir:
bmon -p eth0 -o format:'$(attr:rxrate:bytes) $(attr:txrate:bytes)n'
Ya da daha zengin formatta:
bmon -p eth0,eth1 -r 2 -o json
Bu çıktıyı bir dosyaya yönlendirerek düzenli aralıklarla kayıt altına alabilirsiniz.
Gerçek Dünya Senaryoları
Senaryo 1: Web Sunucusunda Anormal Trafik Tespiti
Sabah 3’te monitörünüze “yüksek CPU kullanımı” uyarısı geldi. SSH ile bağlanıp ilk yaptığınız şey ağ trafiğini kontrol etmektir.
nload -u m ens3
Gelen trafiğin 950 Mbit/s’e yaklaştığını, giden trafiğin ise neredeyse sıfır olduğunu görüyorsunuz. Bu klasik bir DDoS belirtisidir, sunucunuz cevap veremediği için giden trafik yok, ama gelen paket bombardımanı sürüyor.
Bu durumda bmon ile hangi arayüzlerin etkilendiğini kontrol edin:
bmon -p '!lo' -r 1
Tüm fiziksel arayüzleri tek ekranda görüp hangisinden saldırı geldiğini hızlıca anlarsınız. Ardından iptables veya fail2ban ile müdahale edebilirsiniz.
Senaryo 2: Bant Genişliği Kullanım Raporu
Aylık bant genişliği kotası olan bir VPS’te toplam transfer miktarını takip etmek istiyorsunuz. nload‘ı belirli aralıklarla çalıştırıp çıktısını kayıt altına alan bir betik yazabilirsiniz:
#!/bin/bash
# bw_check.sh - Bant genişliği anlık raporu
INTERFACE="eth0"
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
LOG_FILE="/var/log/bandwidth_report.log"
# bmon ile anlık değerleri al
RX_BYTES=$(cat /sys/class/net/${INTERFACE}/statistics/rx_bytes)
TX_BYTES=$(cat /sys/class/net/${INTERFACE}/statistics/tx_bytes)
RX_MB=$(echo "scale=2; $RX_BYTES / 1048576" | bc)
TX_MB=$(echo "scale=2; $TX_BYTES / 1048576" | bc)
echo "$TIMESTAMP | RX: ${RX_MB} MB | TX: ${TX_MB} MB" >> $LOG_FILE
echo "[$TIMESTAMP] Rapor kaydedildi: RX ${RX_MB}MB, TX ${TX_MB}MB"
Bu betiği cron ile her saat çalıştırırsanız günlük/haftalık bant genişliği tüketiminizi takip edebilirsiniz:
0 * * * * /usr/local/bin/bw_check.sh
Senaryo 3: Yük Devretme (Failover) Testi Sırasında İzleme
İki uplink’i olan bir sunucuda yük devretme testi yaparken bmon’un çoklu arayüz görünümü paha biçilmezdir:
bmon -p eth0,eth1 -r 1
Birinci arayüzü (eth0) elle kapattığınızda trafiğin eth1’e geçip geçmediğini ve ne kadar sürede geçiş yaptığını gerçek zamanlı olarak görebilirsiniz. Grafik geçmişi sayesinde geçiş anını da net biçimde görmek mümkündür.
Senaryo 4: NFS veya SMB Performans Testi
Dosya sunucusuna NFS mount kurdunuz ve performans düşük. İlk soru: “Ağ mı darboğaz, disk mi?” Büyük bir dosya kopyalarken paralel terminalde nload çalıştırın:
# Terminal 1 - kopyalama
rsync -avh --progress /data/bigfile.tar.gz user@fileserver:/backup/
# Terminal 2 - izleme
nload -u m -t 500 eth0
Eğer nload‘da trafik 100Mbit/s’de takılı kalıyorsa ve gigabit ağınız varsa, sorun ağda değil disk veya CPU’dadır. Eğer trafik 100Mbit/s’nin çok altındaysa, ağ katmanında bir sorun var demektir.
Senaryo 5: Container Ortamında Ağ İzleme
Docker veya Kubernetes ortamında çalışıyorsanız, sanal ağ arayüzleri çoğalır. bmon burada gerçekten parlıyor:
# Docker bridge ve container arayüzlerini izle
bmon -p 'docker0,veth*' -r 1
Ya da tüm arayüzleri listeleyip hangisinin aktif olduğunu görmek için:
bmon -p '!lo' -r 2
Container trafiğinin docker0 bridge üzerinden geçtiğini görünce hangi container’ın yüksek trafik ürettiğini docker stats ile daha ayrıntılı inceleyebilirsiniz.
nload ve bmon’u Birlikte Kullanmak
Bu iki araç birbirini güzel tamamlar. Şöyle bir iş akışı önerebilirim:
Hızlı triage için nload: Bir sorun bildirildiğinde, ilk 30 saniyede ne kadar trafik olduğunu anlamak için nload açın. Sade arayüzü sayesinde saniyeler içinde durumu değerlendirirsiniz.
Detaylı analiz için bmon: Sorunun devam ettiğini ve hangi arayüzlerin etkilendiğini anlamak istiyorsanız bmon açın. Grafik geçmişi sayesinde trafiğin nasıl şekillendiğini görürsünüz.
Betik entegrasyonu için bmon: Otomatik raporlama veya alarm sistemi kurarken bmon‘un format çıktı özelliklerinden yararlanın.
Grafiksel Geçmiş ve Uzun Süre İzleme
Her iki araç da terminal tabanlı olduğundan uzun süreli izleme için screen veya tmux ile kullanmak mantıklıdır:
# tmux ile arka planda çalıştırma
tmux new-session -d -s netmon 'bmon -p eth0 -r 1'
# Daha sonra oturuma bağlanmak için
tmux attach -t netmon
Ya da script komutuyla terminal çıktısını kayıt altına alabilirsiniz:
script -t 2>timing.log -a output.log
nload -u m eth0
Bu yöntemle izleme seansını daha sonra scriptreplay komutuyla yeniden oynatabilirsiniz.
Alternatif Komut Satırı Araçları ile Karşılaştırma
nload ve bmon dışında da terminal tabanlı ağ izleme araçları var. Bunları kısaca ele alarak hangi durumda hangisini kullanacağınızı netleştirelim:
- iftop: Bağlantı bazında izleme yapar, hangi IP ile ne kadar trafik olduğunu gösterir.
nload‘dan farklı olarak kaynak/hedef IP bilgisi verir. - nethogs: Hangi prosesin ne kadar bant genişliği kullandığını gösterir. Uygulama bazlı analiz için idealdir.
- vnstat: Geçmişe yönelik trafik istatistikleri tutar, aylık/haftalık raporlar üretir.
- iperf3: Gerçek bant genişliği testi için kullanılır, mevcut trafiği değil maksimum kapasiteyi ölçer.
nload ve bmon bu araçların hiçbirinin yerini tutmaz ama onların da yerine geçmez. Her biri farklı bir soruya cevap verir. Sysadmin araç kutunuzda hepsinin bulunması en doğrusu.
Performans İpuçları
nload ve bmon‘u kullanırken dikkat etmeniz gereken bazı noktalar var:
- Yenileme aralığını çok düşük ayarlamak (50ms gibi) yüksek trafikli sunucularda CPU kullanımını artırabilir. 500ms ile 1000ms arasında tutmak genellikle yeterlidir.
- Çok sayıda arayüzü aynı anda izlemek de kaynak tüketimini artırır. Sadece ihtiyacınız olan arayüzleri filtreleyin.
- SSH üzerinden kullanırken terminal boyutunun yeterli olduğundan emin olun. Özellikle
bmon‘un grafikleri dar terminalde bozuk görünür. - root yetkisi her iki araç için de gerekmez, normal kullanıcı olarak çalıştırabilirsiniz. Bu production sistemlerde sudo kullanma ihtiyacını azaltır.
Basit Alarm Betiği
İzlemeyi bir adım öteye taşıyıp belirli bir eşiği aştığında bildirim gönderen basit bir betik yazalım:
#!/bin/bash
# bw_alert.sh - Bant genişliği alarm betiği
INTERFACE="eth0"
THRESHOLD_MBPS=800 # 800 Mbit/s eşik
CHECK_INTERVAL=5 # 5 saniye aralık
EMAIL="[email protected]"
while true; do
# Anlık RX byte'larını iki kez ölçerek hız hesapla
RX1=$(cat /sys/class/net/${INTERFACE}/statistics/rx_bytes)
sleep $CHECK_INTERVAL
RX2=$(cat /sys/class/net/${INTERFACE}/statistics/rx_bytes)
BYTES_PER_SEC=$(( (RX2 - RX1) / CHECK_INTERVAL ))
MBPS=$(echo "scale=2; $BYTES_PER_SEC * 8 / 1000000" | bc)
echo "$(date): ${INTERFACE} RX hizi: ${MBPS} Mbit/s"
# Eşik kontrolü
if (( $(echo "$MBPS > $THRESHOLD_MBPS" | bc -l) )); then
MSG="UYARI: ${INTERFACE} uzerinde yuksek trafik: ${MBPS} Mbit/s"
echo "$MSG" | mail -s "Bant Genisligi Alarmi" $EMAIL
logger -t bw_alert "$MSG"
fi
done
Bu betiği bir systemd servisi veya tmux oturumu içinde çalıştırabilirsiniz.
Sonuç
nload ve bmon sysadmin araç kutusunun küçük ama çok değerli üyeleridir. Karmaşık bir kurulum gerektirmez, kaynak tüketimleri minimumdur ve öğrenme eğrileri çok kısadır.
nload‘un sadeliği onu “acil durum” aracı yapar. Bir şeyler ters gittiğinde SSH açıp nload eth0 yazmak sadece saniyeler alır ve anında görsel bir cevap alırsınız. bmon ise biraz daha plan gerektirir ama çoklu arayüz desteği, grafik geçmişi ve betik entegrasyon özellikleriyle daha sistematik izleme ihtiyaçlarını karşılar.
Ağ sorunlarının büyük çoğunluğu aslında bu iki araçla hızlıca teşhis edilebilir. Bant genişliği doldu mu? nload ile bakın. Hangi arayüz ne kadar trafik taşıyor? bmon ile görün. Alarm kurmak mı istiyorsunuz? /sys/class/net/ dizinini okuyan basit bir betik yeterli.
Pratik tavsiyem: Her yeni sunucu kurduğunuzda bu iki aracı da kurun. Paket boyutları küçücük, maliyeti sıfır, ama kritik bir anda hayat kurtarabilirler. Ağ sorunları çoğunlukla gece gelir, stres altında karmaşık araçlarla boğuşmak yerine basit ve güvenilir araçlara sahip olmak çok daha değerlidir.