2014-10-22 12 views
5

Sto per distribuire un'istanza logstash che gestirà una varietà di input ed eseguirà più azioni filtro. Molto probabilmente il file di configurazione finirà per avere un sacco di istruzioni if-then date la complessità e il numero degli input.Quali sono le migliori pratiche per la gestione di file di configurazione di logstash di grandi dimensioni?

Le mie domande sono:

  1. C'è un modo per rendere il file di configurazione piu 'modulare'? In un senso di programmazione, creerei le funzioni/subroutine in modo che io possa testare indipendentemente. Ho pensato di creare dinamicamente i file di mini-configurazione che posso usare per i test. Questi mini file potrebbero quindi essere combinati in un'unica configurazione di produzione.

  2. Esistono "migliori pratiche" per testare, implementare e gestire configurazioni Logstash più complesse?

Grazie!

risposta

2

Nessun supporto per funzioni/subroutine di per sé. Spezzo diversi filtri in file separati per mantenere una separazione logica ed evitare di avere file giganteschi. Ho anche ingressi e uscite in diversi file. In questo modo posso combinare tutti i filtri con ingressi/uscita di debug, ad esempio

input { 
    stdin {} 
} 

output { 
    stdout { 
    codec => rubydebug 
    } 
} 

e richiamare Logstash a mano per controllare i risultati di dato in ingresso. Poiché l'ordinamento dei filtri è importante, sto utilizzando il fatto che Logstash legge i file di configurazione in ordine alfabetico, quindi i file sono denominati NN -ome-nomeconfigivo-descrittivo, dove NN è un numero intero.

Ho anche scritto uno script che automatizza questo processo, consentendo di scrivere una specifica con input di test e i messaggi risultanti attesi e, in caso di mancata corrispondenza, si verificherà un errore e visualizzerà la differenza. Potrei essere in grado di aprirlo.

Per quanto riguarda la distribuzione, utilizzare qualsiasi sistema di gestione della configurazione come Puppet, Chef, SaltStack, Ansible, CFEngine o simile con cui si ha familiarità. Sono abbastanza soddisfatto di Ansible.

+0

Quando si dice "legge i file di configurazione in ordine alfabetico", stai specificando più file di configurazione come argomenti della riga di comando Logstash? – alexpotato

+0

No, sto indicando Logstash in una directory con file. L'opzione '-f' accetta sia file che directory. In quest'ultimo caso Logstash leggerà tutti i file tranne * ~. –

1

Come dichiarato da @Magnus Bäck, la risposta a 1. è no. attualmente non c'è supporto per le funzioni.

Ma per quanto riguarda la seconda domanda, c'è un modo per rendere la configurazione del logstash più modulare. è possibile suddividere il file di configurazione in più file e puntare il logstash nella directory dei file.

controllo l'opzione directory nell'uomo logstash:

-f, --config CONFIG_PATH  Load the logstash config from a specific file 
            or directory. If a direcory is given, all 
            files in that directory will be concatonated 
            in lexicographical order and then parsed as a 
            single config file. You can also specify 
            wildcards (globs) and any matched files will 
            be loaded in the order described above. 
Problemi correlati