PDA

View Full Version : [Unix] Real Time log parser



San Vegeta
31st January 2011, 17:11
olà, a quanto pare chiunque abbia una necessità di monitorare in real time (o quasi) dei file di log ha due alternative: 1) si fa da solo uno script 2) compra una software ad hoc.

io stavo appunto per chiedere se invece esista una soluzione opensource consolidata e valida...

Noi al momento ci siamo fatti un perl che si appoggia alla File:Tail. File:Tail si accorge se il log file è stato ruotato, non usa un approccio busy-wait e sa capire da che punto riprendere a leggere il file...
pero' a quanto pare consuma comunque un bel po' di cpu (anche se non ho ancora capito come faccia a essere cpu consuming)... da qui la necessità di cercare qualcosa di piu' performante.

Qualcuno conosce qualcosa che faccia al caso mio?

marlborojack
2nd February 2011, 11:39
Tail è pesante perchè polla, ovvero cerca attivamente modifiche. Il 99,9% dei programmi che conosco fanno così e basta, ma volendo si può fare in un'altra maniera, solo richiede una conoscenza approfondita dei meccanismi del sistema operativo. L'unica soluzione leggera è quella di istanziare un adattatore che venga notificato delle modifiche al filesystem, ovvero del momento in cui un buffer in memoria viene flushato su disco. A quel punto attacchi un visualizzatore qualsiasi e via. Altrimenti una cosa simile, sotto Unix, la puoi fare con i sistemi di messaggistica interprocesso

San Vegeta
2nd February 2011, 16:51
non posso fare niente del genere perchè deve essere utilizzabile da qualunque sistemista, che al 90% ne sa una sega di come funziona una roba del genere e come eventualmente deve modificarla :(

Eltarion
2nd February 2011, 18:23
su windows si usano le watch sui file per vedere se sono stati modificati (tra l'altro la watch non fa polling). Su unix non so se c'è qualche chiamata di sistema che fa la stessa cosa :/