2014-10-22 7 views
5

Ich werde eine Logstash-Instanz bereitstellen, die eine Vielzahl von Eingaben verarbeitet und mehrere Filteraktionen ausführt. Die Konfigurationsdatei wird höchstwahrscheinlich aufgrund der Komplexität und Anzahl der Eingaben eine Menge von Wenn-Dann-Anweisungen enthalten.Welche Best Practices für die Verarbeitung großer Logstash-Konfigurationsdateien gibt es?

Meine Fragen sind:

  1. Gibt es eine Möglichkeit die Konfigurationsdatei mehr 'modular' zu machen? Im Sinne eines Programmierens würde ich Funktionen/Subroutinen erstellen, um selbständig testen zu können. Ich habe darüber nachgedacht, Mini-Konfigurationsdateien dynamisch zu erstellen, die ich zum Testen verwenden kann. Diese Mini-Dateien könnten dann in einer Produktionskonfiguration kombiniert werden.

  2. Gibt es "Best Practices" zum Testen, Bereitstellen und Verwalten komplizierterer Logstash-Konfigurationen?

Vielen Dank!

Antwort

2

Es gibt keine Unterstützung für Funktionen/Subroutinen per se. Ich zerlege verschiedene Filter in separate Dateien, um eine logische Trennung zu erhalten und gigantische Dateien zu vermeiden. Ich habe auch Eingänge und Ausgänge in verschiedenen Dateien. Auf diese Weise kann ich alle Filter mit Debug-Ein-/Ausgang verbinden, zum Beispiel

input { 
    stdin {} 
} 

output { 
    stdout { 
    codec => rubydebug 
    } 
} 

und rufe Logstash von Hand der Ergebnisse der Eingabe zu überprüfen. Da Filterbestellung wichtig ist, verwende ich die Tatsache, dass Logstash Konfigurationsdateien in alphabetischer Reihenfolge liest, so dass die Dateien NN -some-deskriptive-name.conf heißen, wobei NN eine ganze Zahl ist.

Ich habe auch ein Skript geschrieben, das diesen Prozess automatisiert, indem Sie eine Spezifikation mit Testeingaben und die erwarteten resultierenden Nachrichten schreiben können, und wenn es eine Nichtübereinstimmung gibt, wird es mit einem Fehler retten und das diff anzeigen. Ich bin vielleicht in der Lage, es zu öffnen.

Verwenden Sie für die Bereitstellung ein beliebiges Konfigurationsverwaltungssystem wie Puppet, Chef, SaltStack, Ansible, CFEngine oder ähnliches, mit dem Sie vertraut sind. Ich bin ziemlich glücklich mit Ansible.

+0

Wenn Sie sagen, „Konfigurationsdateien in alphabetischer Reihenfolge liest“, werden Sie mehrere Konfigurationsdateien als Logstash Befehlszeilenargumente spezifizieren? – alexpotato

+0

Nein, ich zeige Logstash auf ein Verzeichnis mit Dateien. Die Option '-f' akzeptiert sowohl Dateien als auch Verzeichnisse. Im letzteren Fall liest Logstash alle Dateien außer * ~. –

1

Wie @Magnus Bäck sagte, ist die Antwort auf 1. nein. Derzeit gibt es keine Unterstützung für Funktionen.

Aber wie für Ihre zweite Frage gibt es eine Möglichkeit, die Logstash-Konfiguration modularer zu machen. Sie können die Konfigurationsdatei in mehrere Dateien aufteilen und logstash auf das Dateiverzeichnis verweisen.

überprüfen Sie das Verzeichnis Option in logstash Mann:

-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. 
Verwandte Themen