Come monitorare la larghezza di banda di rete per utente sul server Ubuntu?


12

Ho alcuni utenti shell su un server con 300 GB di trasferimento dati mensile. Come posso monitorare l'utilizzo della larghezza di banda per utente?


è anche possibile? Sembra che, in teoria, sarebbe più seccante del suo valore, perché tecnicamente dovresti avere ogni processo che utilizza Internet per identificare chi lo sta eseguendo, quindi capire l'uso combinato della larghezza di banda. Qualche motivo specifico che stai cercando di monitorare su base per utente oltre agli utenti shell che hai? Perché con i dati di entrata / uscita mensili da 300 GB, sembra improbabile che si raggiunga tale importo: /
Thomas Ward

Deve essere possibile, altrimenti in che modo gli ISP limitano la larghezza di banda per utente?
djeikyb,

@EvilPhoenix Voglio monitorare l'utilizzo per utente. 300 GB non è così tanto per un server con almeno 20 utenti che usano questo server come server proxy.
Pedram,

1
Sembra che tu abbia una grande risposta pratica da parte di Kees Cook, ma se stai ancora cercando dei metodi, mi chiedo se formulare la domanda in modo diverso potrebbe aiutare. Ho trovato questa guida su Google "come limitare la larghezza di banda dell'utente su linux": faqs.org/docs/Linux-HOWTO/Bandwidth-Limiting-HOWTO.html
djeikyb

Risposte:


13

Come root, potresti almeno misurare il traffico in uscita per utente usando il modulo "proprietario" di iptables. Se tutti gli utenti che desideri monitorare sono presenti /root/list-of-users.txt, puoi fare:

for login in $(cat /root/list-of-users.txt);
do
    iptables -N out_user_$login
    iptables -A OUTPUT -m owner --uid-owner $(id -u $login) -j out_user_$login
done

Quindi sono visibili i conteggi di pacchetti e byte per il traffico in uscita di ciascun utente:

iptables -L OUTPUT -n -v | grep out_

Questo potrebbe essere ulteriormente esteso con CONNMARK per tracciare anche il lato in entrata.


Grazie, è fantastico, l'ho fatto, ma perché non posso usare lo stesso metodo per INPUT?
Pedram,

1
Il proprietario del pacchetto non è noto per i pacchetti in arrivo perché dal punto di vista del kernel proveniva dall'esterno della macchina. CONNMARK potrebbe essere usato per legare i pacchetti nei flussi TCP al loro creatore, ecc., Ma non ne ho un esempio funzionante.
Kees Cook,

7

Ho appena incontrato NetHogs :

NetHogs è un piccolo strumento "net top". Invece di suddividere il traffico per protocollo o per sottorete, come la maggior parte degli strumenti, raggruppa la larghezza di banda per processo.

inserisci qui la descrizione dell'immagine

Questo dovrebbe consentirti di monitorare la larghezza di banda in base al nome utente. Potrebbe essere necessario un altro paio di strumenti per registrare le informazioni e aggiungerle tutte, ma è un buon inizio senza utilizzare direttamente iptables.


Può anche essere avviato nella modalità per riassumere il traffico: sudo nethogs -v 3 eth0(o premere mpiù volte dopo aver iniziato a scorrere le modalità). Combina con tmuxper l'esecuzione persistente (anche se la sshsessione si arresta in modo anomalo).
tanius

6

Puoi usare Cactus

Cacti è un frontend completo di RRDTool, memorizza tutte le informazioni necessarie per creare grafici e popolarli con i dati in un database MySQL. Il frontend è completamente guidato da PHP. Oltre a essere in grado di mantenere grafici, origini dati e archivi Round Robin in un database, i cactus gestiscono la raccolta dei dati. C'è anche il supporto SNMP per coloro che sono abituati a creare grafici di traffico con MRTG.

O vnStat

vnStat è un monitor del traffico di rete basato su console per Linux e BSD che mantiene un registro del traffico di rete per le interfacce selezionate. Utilizza le statistiche dell'interfaccia di rete fornite dal kernel come fonte di informazioni. Ciò significa che vnStat non annuserà effettivamente il traffico e garantirà anche un leggero utilizzo delle risorse di sistema.

Entrambi sono fantastici.


2
Grazie, ma li ho già visti entrambi e sembra che non ne forniscano il monitoraggio per utente. Voglio monitorare l'utilizzo per utente.
Pedram,

5

Ho guardato un po 'e non ho trovato un pacchetto completo di gui che fa quello che vuoi. Speriamo che ne esista uno e che qualcuno pubblicherà qui alla fine.

Non sono davvero un ragazzo di rete, ma da quello che ho letto, tra molte altre cose netstate iptablessi suppone che facciano per la contabilità degli utenti basata su ip / host cosa hanno fatto gli acctstrumenti per la contabilità dei processi di sistema. Questo link cyberciti.biz potrebbe metterti sulla buona strada per sviluppare un sistema con questi strumenti:

http://www.cyberciti.biz/faq/linux-configuring-ip-traffic-accounting/


Grazie, ma come hai detto, sono utilizzati per la contabilità degli utenti basata su ip. Ho alcuni utenti shell che possono utilizzare il server in posizioni diverse, specialmente in un dipartimento universitario con lo stesso indirizzo IP (dietro un NAT). alla ricerca di una soluzione contabile basata sull'utente, se è possibile.
Pedram,

netstat -emostra gli utenti della shell, consentendo di collegare ip / host al nome utente.
djeikyb,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.