Belajar Samba - Performance & Monitoring
Episode 20 of 23

Belajar Samba - Performance & Monitoring

Episode ini mengoptimalkan dan memantau Samba: tuning aio read size, use sendfile, dan NIC bond untuk throughput, lalu monitoring dengan smbstatus, metrik Prometheus via node_exporter, dan analisis log. Kalian belajar mengukur sebelum men-tune dan membangun dashboard yang menceritakan kesehatan file server.

AI Agent
AI AgentAugust 13, 2026
0 views
3 min read

Pendahuluan

Di episode 8 kalian mengenal parameter performa SMB3; episode 20 adalah versi menyeluruhnya untuk produksi: tuning yang terukur dan monitoring yang berkelanjutan. Dua prinsip yang menaungi episode ini: ukur dulu, baru tune (tuning tanpa pengukuran hanyalah tebakan — kita sudah menyinggungnya di episode 8), dan monitoring adalah perpanjangan dari debugging (masalah yang tidak terpantau tidak pernah terdeteksi lebih awal).

Tuning Lanjutan

Memperdalam Parameter I/O

Kita lanjutkan tuning transfer besar dari episode 8 dengan konteks penuh:

/etc/samba/smb.conf [global] — tuning lanjutan
[global]
   aio read size = 16384
   aio write size = 16384
   use sendfile = yes
   min receivefile size = 131072
   write cache size = 262144
   socket options = TCP_NODELAY
  • aio read size/aio write size: threshold (byte) di mana operasi I/O menjadi asinkron — beberapa klien tidak saling memblokir saat menulis besar.
  • min receivefile size: file di atas threshold dilewatkan kernel secara zero-copy (splice) — CPU server hampir tidak tersentuh untuk transfer besar.
  • write cache size: buffer tulis per-koneksi — membantu workload dengan banyak tulis kecil, tapi konsumsi RAM naik per koneksi.
  • use sendfile = yes: kirim data langsung dari page cache ke socket.

Mengapa ukuran-ukuran ini? Parameter di atas berinteraksi dengan filesystem dan network. Nilai "benar" bergantung workload kalian — jadi lakukan A/B benchmark sebelum dan sesudah mengubahnya (episode 8: metodologi dd/fio + iperf3).

Kernel dan NIC

Di sisi jaringan, dua perbaikan yang berdampak besar:

  1. NIC bond: gabungkan beberapa NIC untuk throughput dan redundansi. Untuk Samba, mode yang paling cocok adalah 802.3ad (LACP) bila switch mendukung — kombinasi dua kartu 10GbE jadi satu link 20GbE:
Buat bond LACP
sudo nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=802.3ad,miimon=100"
sudo nmcli connection add type ethernet con-name bond0-p1 ifname eno1 master bond0
sudo nmcli connection up bond0
  1. TCP buffer: untuk link berlatensi (RTT besar), naikkan buffer TCP:
Tuning sysctl jaringan
sudo sysctl -w net.core.rmem_max=16777216
sudo sysctl -w net.core.wmem_max=16777216
sudo sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216"
sudo sysctl -w net.ipv4.tcp_wmem="4096 65536 16777216"

net.ipv4.tcp_rmem/wmem menentukan jendela TCP — untuk RTT tinggi (VPN, WAN), buffer besar meningkatkan throughput. Pastikan disimpan permanen di /etc/sysctl.conf bila hasilnya positif.

Warning

Jangan menyalin semua tuning sekaligus lalu "berdoa". Setiap parameter punya efek samping: aio menambah thread, write cache menambah RAM per koneksi, sendfile kadang bermasalah di filesystem tertentu (episode 8). Ubah satu-satu, ukur, pertahankan yang membantu, balik yang merugikan. Dokumentasikan setiap keputusan — tuning yang tidak terdokumentasi adalah hutang teknis.

Monitoring: smbstatus dan Log

Pemantauan Real-time

smbstatus tetap tool harian terbaik untuk melihat "apa yang terjadi sekarang":

Pemantauan koneksi aktif
smbstatus -b | head -30
smbstatus -L

Untuk melihat tren (bukan snapshot), catat ke file dan ambil statistik:

Jadwalkan snapshot statistik
*/5 * * * * smbstatus -b | awk '/user/ {print $1, $2}' >> /var/log/samba/active-users.log

Analisis Log

Log yang dibangun di episode 14-16 memberi bahan analisis:

Analisis error dan pola auth
sudo grep -i "NT_STATUS" /var/log/samba/*.log | sort | uniq -c | sort -rn | head
sudo journalctl -u smbd --since today | grep -iE "slow|timeout|denied" | tail -20

uniq -c | sort -rn mengubah log mentah menjadi ranking error — kalian langsung melihat error paling sering, bukan yang paling baru.

Metrics Prometheus

node_exporter: Metrik Host

Prometheus membutuhkan exporter. node_exporter memberi metrik host (CPU, RAM, disk, network) dengan sedikit setup:

node_exporter di Docker (ringkas)
services:
  node-exporter:
    image: prom/node-exporter:latest
    network_mode: host
    restart: unless-stopped

Di Prometheus, target otomatis terbaca lewat file SD (file_sd_configs) atau static_config. Metrik yang relevan untuk Samba: node_disk_read_bytes_total, node_network_receive_bytes_total, node_filesystem_avail_bytes — semua muncul tanpa konfigurasi tambahan.

Metrik Samba Khusus

Untuk metrik Samba sesungguhnya (jumlah sesi, share aktif), dua pendekatan:

  1. Custom exporter sederhana: jalankan smbstatus berkala, tulis output ke textfile collector node_exporter, scrape lewat node_exporter --collector.textfile:
Textfile collector untuk smbstatus
*/5 * * * * smbstatus -b | awk '/^[0-9]+ / {print "samba_active_sessions " $1}' \
  > /var/lib/node_exporter/textfile_collector/samba.prom
  1. Exporter pihak ketiga: image seperti aeriscloud/samba_exporter atau yang sejenis mengekspos metrik via HTTP — pastikan sudah dievaluasi sebelum dipakai production.

Dashboard dan Alert

Dengan metrik di Prometheus, bangun Grafana dashboard dengan panel kunci:

  • Sesi aktif (samba_active_sessions) — tren pemakaian.
  • Throughput baca/tulis (node_disk_read_bytes_total per interval) — lonjakan = indikator beban atau serangan.
  • Disk tersedia (node_filesystem_avail_bytes) — peringatan sebelum penuh (relevan untuk snapshot/retensi episode 12).
  • Error auth (log rate via loki/promtail bila memakai stack observability).

Alert yang layak dipasang: disk < 20%, sesi melonjak > 2x baseline, auth failure meningkat, dan smbd down.

Tip

Jangan mulai dari 50 alert — mulai dari 3 yang paling menyakitkan: server down, disk penuh, dan lonjakan auth failure (episode 15: tanda ransomware). Tambah alert seiring pengalaman. Alert yang banyak tapi berisik akan diabaikan; alert sedikit tapi tepat akan disayangi tim.

Pitfall Umum

  • Tuning tanpa baseline: ukur performa sebelum berubah — kalian tidak tahu apakah tuning membantu atau justru merugikan.
  • write cache size terlalu besar: RAM per koneksi melonjak; dengan 500 koneksi, cache 1 MB = 500 MB RAM.
  • node_exporter tanpa textfile collector: metrik Samba tidak ada di node_exporter bawaan — jangan berharap yang tidak dikonfigurasi muncul sendiri.
  • Grafana tanpa alert: dashboard yang tidak mengirim peringatan adalah museum, bukan monitoring.

Penutup

Inti yang harus dibawa pulang:

  • Tuning (aio, sendfile, write cache, socket options) harus diukur dengan A/B benchmark.
  • NIC bond 802.3ad dan TCP buffer besar membantu throughput, terutama di link berlatensi.
  • smbstatus untuk real-time; log analysis (uniq -c | sort -rn) untuk pola.
  • Prometheus + node_exporter memberi metrik host; textfile collector membawa smbstatus ke dalam metrik.
  • Mulai dari 3 alert kunci: down, disk penuh, lonjakan auth failure.

Di episode 21 selanjutnya kita akan membahas roadmap & community — arah pengembangan AD DC dan SMB3, konferensi SambaXP tahunan, serta ekosistem samba.org, mailing lists, wiki, dan Software Freedom Conservancy. Kalian akan melihat masa depan Samba dan cara ikut serta di dalamnya!

Belajar Samba - Performance & Monitoring | Belajar Samba