2015-04-20 16 views
5

Immaginiamo di avere un'istanza Logstash in esecuzione, ma vorrei fermarla in modo pulito, per cambiare le sue configurazioni ad esempio.Modo pulito per arrestare Logstash

Come posso arrestare l'istanza Logstash, assicurandomi che termini l'invio dei bulks a Elasticsearch? Non voglio perdere nessun registro durante l'interruzione del logstash.

risposta

9

Logstash 1.5 svuota la pipeline prima di spegnersi in risposta a un segnale SIGTERM, quindi è necessario spegnerlo con service logstash stop, lo script init.d o qualsiasi altra cosa si usi abitualmente.

Con Logstash 1.4.x un segnale SIGTERM arresta bruscamente Logstash senza consentire alla pipeline di scaricare tutti i messaggi in volo, ma è possibile inviare SIGINT per forzare un flush. Tuttavia, alcuni plugin (come il plugin di input redis) non gestiscono questo con garbo e si bloccano indefinitamente.

+0

Grande! Potete fornire un collegamento ad alcuni documenti che spieghino questo comportamento con maggiori dettagli? – Heschoon

+1

Non penso che sia documentato (almeno non per 1.4.x), ma posso dare un'occhiata. L'ho capito leggendo il codice. –

0

Con Logstash 2.3:

Logstash mantiene tutti gli eventi nella memoria principale durante l'elaborazione. Logstash risponde a un SIGTERM tentando di arrestare gli input e attendere che gli eventi in sospeso finiscano l'elaborazione prima di spegnersi.

Fonte: https://www.elastic.co/guide/en/logstash/2.3/pipeline.html

Problemi correlati