nload ve bmon ile Ağ Arayüzü İzleme

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: nload baş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.

Yorum yapın