Monitorare e raccogliere statistiche sulla connessione TCP a host src o dst

Vorrei raccogliere statistiche sui pacchetti TCP / UDP inviati tra due host (A e B). Sto cercando uno strumento da installare su A e B per get le seguenti informazioni:

  • kb / secondo
  • pacchetti / secondi
  • (cumulativi) inviati fino ad ora
  • (cumulativi) inviati finora
  • avg in window scorrevole

C'è l' iptraf , ma ho difficoltà a configurarlo dalla row di command. tcptrack non aggregare dati … sono un po 'perduta ..: DI potrebbe scrivere tcpdump: /

Probabilmente, mi manca qualcosa di abbastanza ovvio …

UPDATE: Entrambi i server eseguono ubuntu 14.04.

UPDATE 2: sperimenta ora con tcpflow (i registri crescono abbastanza velocemente) e verrò controllata da collectId

UPDATE 3: Il modo più semplice per monitorare il traffico su un dato IP o networking è utilizzare IPTABLES e IPTABLES collectD plugin.

  • nagios mysql controlla usando l'utente inaspettato dopo l'aggiornamento da ubuntu 12.04 al 14.04
  • Aggiorna automaticamente l'ubuntu
  • apt-get ha incongruenze per autoremove
  • Perché Ubuntu 14.04.2 ha i pacchetti host9 di bind9 all'installazione?
  • getent passwd dosen't mostrare gli utenti del server LDAP
  • Convalida OCSP - imansible get il certificato locale dell'emittente
  • Nginx inoltra git.example.com a www.example.com
  • Devo utilizzare la riscrittura o il return o il proxy_pass in nginx?
  • 4 Solutions collect form web for “Monitorare e raccogliere statistiche sulla connessione TCP a host src o dst”

    Questa è una domanda molto interessante.
    La risposta dipende dalla configuration della networking, ma cercherò di coprire qualche caso.
    Credo proprio che CollectD fa parte della risposta.

    Innanzitutto, come si desidera raccogliere le metriche "each secondo" la tua necessità di configurare il valore CollectD Interval

    Soluzione n ° 1 – ServerA è esprimente parlando con ServerB su un'interface specifica? (e viceversa)
    Installare CollectD con il plugin Interface . Sarà "raccogliere" parte di ciò che ti serve:

    • kb / secondo
    • pacchetti / secondi
    • (cumulativi) inviati fino ad ora
    • (cumulativi) inviati finora

    Inoltra le metriche di CollectD a un database di serie temporale come Graphite.
    Sarai in grado di visualizzare quelle metriche e di applicare una function media mobile . Converrà la tua necessità:

    • avg in window scorrevole

    Soluzione N ° 2 – ServerA sta solo parlando con ServerB su TCP e port specifica? (e viceversa)
    Molto simile. Utilizza CollectD e controlla il traffico solo sulla port TCP specifica utilizzando il plugin CollectD e TCPConns . Inoltre, utilizzare Graphie per la window " avg in scorrevole "

    Un modo per farlo è usare il tshark .

    Fare quanto segue :

    1. Cattura traffico con i relativi filtri su entrambi i lati usando tshark / tcpdump / whatever produce un file formattato pcap.
    2. Una volta terminata, eseguire tshark opzione tshark -z sopra i file di cattura.

    Poi :

    • per get i pacchetti e le tasche di byte al secondo:

      tshark -q -r myfile.cap -z io,stat,1

    Questo produrrà qualcosa di simile:

     ============================= | IO Statistics | | | | Interval size: 1 secs | | Col 1: Frames and bytes | |---------------------------| | |1 | | Interval | Frames | Bytes | |---------------------------| | 0 <> 1 | 29 | 2026 | | 1 <> 2 | 35 | 2440 | | 2 <> 3 | 35 | 2440 | | 3 <> 4 | 43 | 2920 | | 4 <> 5 | 93 | 5776 | | 5 <> 5 | 77 | 25758 | ============================= 
    • per get l'aggregazione di pacchetti e byte e la window TCP media:

      tshark -q -r myfile.cap -z io,stat,0,"AVG(tcp.window_size)tcp.window_size"

    Il risultato sarà qualcosa di simile:

     ============================================== | IO Statistics | | | | Interval size: 5.109 secs (dur) | | Col 1: Frames and bytes | | 2: AVG(tcp.window_size)tcp.window_size | |--------------------------------------------| | |1 |2 | | | Interval | Frames | Bytes | AVG | | |-----------------------------------------| | | 0.000 <> 5.109 | 312 | 41360 | 41363 | | ============================================== 

    Ora, se si ottiene la dimensione media della window di TCP dall'equazione (non si ottiene questa metrica senza uno strumento che controlla il traffico), è ansible utilizzare strumenti di monitoraggio standard per calcolare tutto ciò che si desidera circa i tassi di pacchetti / aggregazione su qualsiasi protocollo usando per esempio cactus .

    Modifica: Non sapete cosa intendevi scorrere la window dato le altre risposte (superate). Se si intende la media di metriche per un determinato periodo di tempo a partire da una data (e non la dimensione della window di TCP), è ansible fare tutto ciò gettando in un filter di date con i comandi di tshark.

    Ma sembra che stai cercando semplicemente una soluzione globale di monitoraggio. Cacti, collectd, zabbix, shinken, nagios (con icinga o qualcosa del genere) dovrebbero essere in grado di soddisfare le vostre esigenze e personalizzabili abbastanza per filtrare su traffico specifico se necessario.

    Creare uno specchio port per server e eseguire il wireshark da due computer per raccogliere i dati. Quindi questo non influisce sul tuo server in produzione.

    La mia soluzione per eseguire test di 1-2 ore:

    • tcpflow per raccogliere il stream TCP, uso tcpflow -i eth0 -FT per avere timestamp nei nomi dei file di risultato
    • analizzare report.xml (DFXML) per creare report sulle connessioni chiuse
    • analizzare i nomi di file con traffico acquisito + registrare le loro size per segnalare la connessione in corso durante la misurazione
    • utilizzare matplotlib per tracciare grafici

    Vantaggio:

    • una visione dettagliata su ciò che sta succedendo

    Svantaggio:

    • i file con la cattura del traffico crescono molto velocemente
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.