Domanda

Ok, quel titolo sarà un po 'confuso. Fammi provare a spiegarlo un po 'meglio. Sto costruendo un programma di registrazione. Il programma avrà 3 stati principali:

  1. Scrivi su un file buffer round-robin, mantenendo solo gli ultimi 10 minuti di dati.

  2. Scrivi su un file buffer, ignorando il tempo (registra tutti i dati).

  3. Rinomina l'intero file buffer e avvia uno nuovo con gli ultimi 10 minuti di dati (e cambia lo stato in 1).

Ora, il caso d'uso è questo. Di tanto in tanto ho sperimentato alcuni colli di bottiglia di rete nella nostra rete. Quindi voglio costruire un sistema per registrare il traffico TCP quando rileva il collo di bottiglia (rilevamento tramite Nagios). Tuttavia, quando rileva il colloquio di bottiglia, la maggior parte dei dati utili è già stata trasmessa.

Quindi, quello che vorrei è avere un deamon che gestisce qualcosa di simile dumpcap tutto il tempo. In modalità normale, manterrà gli ultimi 10 minuti di dati (poiché non ha senso mantenere un carico di dati in barca se non è necessario). Ma quando Nagios avvisi, invierò un segnale nel deamon per archiviare tutto. Quindi, quando Naigos recupera invierà un altro segnale per interrompere l'archiviazione e scaricare il buffer in un file di salvataggio.

Ora, il problema è che non riesco a vedere come archiviare in modo pulito 10 minuti di dati rotanti. Potrei archiviare un nuovo file ogni 10 minuti ed eliminare quelli vecchi se in modalità 1. ma mi sembra un po 'sporco (specialmente quando si tratta di capire quando l'avviso è avvenuto nel file).

Idealmente, il file che è stato salvato dovrebbe essere tale che l'avviso è sempre al segno delle 10:00 nel file. Sebbene ciò sia possibile con nuovi file ogni 10 minuti, sembra un po 'sporco "riparare" i file fino a quel momento.

Qualche idea? Dovrei semplicemente fare un file system rotante e combinarli in 1 alla fine (facendo un bel po 'di post-elaborazione)? C'è un modo per implementare il file semi-round-robin in modo pulito in modo che non sia necessario un post-elaborazione?

Grazie

Oh, e la lingua non ha importanza tanto in questa fase (mi sto avvicinando a Python, ma non ho obiezioni a nessun'altra lingua. È meno un problema del design generale) ...

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top