2015-06-02 17 views
13

BACKGROUND:Descrittori file di chiusura logstash?

Abbiamo rsyslog file di log di creazione directory come: /var/log/rsyslog/SERVER-NAME/LOG-DATE/LOG-FILE-NAME Quindi più server sono fuoriuscite loro log di date diverse per una posizione centrale.

Ora a leggere questi registri e memorizzarli in elasticsearch per l'analisi ho il mio file di configurazione logstash qualcosa di simile:

file{ 
    path => /var/log/rsyslog/**/*.log 
} 

NUMERO:

Ora, come il numero di file di log nella directory aumento, logstash apre i descrittori di file (FD) per i nuovi file e non rilascia gli FD per i file di registro già letti. Poiché i file di registro sono generati per data, una volta letto, non è più utile dopo di ciò poiché non verrà aggiornato dopo tale data.

ho aumentato il limite di aperture di file da 65K nel /etc/security/limits.conf

Possiamo fare logstash chiudere la maniglia dopo qualche tempo in modo che il numero di handle di file aperto non aumentano troppo ??

+0

Che versione di Logstash è presente? Inoltre, puoi pubblicare il file di configurazione completo? –

+0

Chiedere a causa di questo: https://github.com/elastic/logstash/issues/1604. Hai gli stessi sintomi? Eccezioni nei log dopo un po 'di tempo? Se si esegue 'sudo lsof | grep java | wc -l 'vedi i descrittori che aumentano costantemente nel tempo? –

risposta

6

Penso che potresti aver colto questo bug: http://github.com/elastic/logstash/issues/1604. Hai gli stessi sintomi? Eccezioni nei log dopo un po 'di tempo? Se esegui sudo lsof | grep java | wc -l, i descrittori aumentano costantemente nel tempo? (alcuni potrebbero chiudersi, ma alcuni resteranno aperti e il loro numero aumenterà)

0

Ho seguito questo problema per un po 'di tempo e non so che sia stato risolto correttamente.

Eravamo in una barca simile, forse più grande: Logstash non poteva aprire le maniglie per centinaia di migliaia di file di registro su una scatola, anche se molto pochi di essi sono stati scritti attivamente. LOGSTASH-271 catturato questo problema, e ci sono stati alcuni tentativi di patch Logstash, tra cui PR #1260.

Sembra che una correzione potrebbe essere entrata in Logstash 1.5 con PR #1545, ma non l'ho mai testata personalmente. Abbiamo terminato la biforcazione della libreria sottostante utilizzata da Logstash per implementare l'input di file, chiamato FileWatch, in FFileWatch, che aggiunge uno "eviction mechanism".

L'idea alla base di questo approccio è di tenere aperti i file solo mentre vengono scritti. Normalmente, Logstash aprirà un handle sul file e lo manterrà aperto per sempre, ma FFileWatch aggiunge un'opzione per chiudere l'handle se il file non è stato modificato di recente (eviction_interval). Ho quindi creato una build personalizzata di Logstash utilizzando la gemma biforcuta.

Ovviamente questo non è l'ideale, ma ha funzionato per noi. Alla fine abbiamo abbandonato Logstash interamente per raccogliere i file di log, sebbene lo utilizziamo ancora più in basso nella pipeline di elaborazione dei log. Abbiamo implementato il nostro log shipping leggero (Franz), che non soffre di questo problema.