Angenommen, Sie haben zwei sehr unterschiedliche Arten von Protokollen, z. B. technische und geschäftliche Protokolle, und Sie möchten:
- Technische Rohprotokolle werden mithilfe einer
gelf
Ausgabe an einen Graylog2-Server weitergeleitet. - JSON-Geschäftsprotokolle werden mithilfe der dedizierten
elasticsearch_http
Ausgabe in einem Elasticsearch-Cluster gespeichert .
Ich weiß, dass mit Syslog-NG
der Konfigurationsdatei beispielsweise mehrere unterschiedliche Eingaben definiert werden können, die dann vor dem Versand separat verarbeitet werden können. was Logstash
scheint unfähig zu tun. Selbst wenn eine Instanz mit zwei spezifischen Konfigurationsdateien initiiert werden kann, verwenden alle Protokolle denselben Kanal und werden auf dieselbe Weise angewendet ...
Sollte ich so viele Instanzen ausführen, wie ich verschiedene Arten von Protokollen habe?
Antworten:
Nein! Sie können nur eine Instanz ausführen, um verschiedene Protokolltypen zu verarbeiten.
In der Logstash-Konfigurationsdatei können Sie jede Eingabe mit einem anderen Typ angeben . Dann können Sie im Filter if verwenden, um unterschiedliche Verarbeitungen zu unterscheiden, und am Ausgang können Sie die if-Ausgabe an unterschiedliche Ziele verwenden.
Hoffe das kann dir helfen :)
quelle
type
Attribut (mit derselbentype => "value"
Syntax) auch in den Filter- und Ausgabedefinitionen verwenden, wodurch die zusätzliche Formatierung in der Konfigurationsdatei etwas reduziert werden sollte. Beispiel: gist.github.com/fairchild/3030472 Pro Dokumentation: Fügen Sie allen Ereignissen, die von dieser Eingabe verarbeitet werden, ein Feld 'Typ' hinzu. Typen werden hauptsächlich zur Filteraktivierung verwendet. Der Typ wird als Teil des Ereignisses selbst gespeichert, sodass Sie den Typ auch verwenden können, um in der Weboberfläche danach zu suchen.type => "value"
in einer Ausgabe wurde die folgende Meldung angezeigt: "Sie verwenden eine veraltete Konfigurationseinstellung" Typ ", die in stdout festgelegt ist. Veraltete Einstellungen funktionieren weiterhin, sollen jedoch in Zukunft aus dem Protokoll entfernt werden. Dies können Sie erreichen das gleiche Verhalten mit den neuen Bedingungen, wie:if [type] == "sometype" { stdout { ... } }
" Ich ziehe meinen vorherigen Kommentar zurück. :)type
Attribut nicht angewendet wird, wenn die Eingabe bereits ein Typfeld enthält. Dies ist ein spezielles Attribut, das nicht überschrieben und dokumentiert wird. Ich habe ein Ticket in Elastic geöffnet und sie haben mir empfohlen,tags
oderadd_field
anstelle vontype
Ich habe Tags für die Eingabe mehrerer Dateien verwendet:
quelle
Ich denke, logstash kann nicht mehr als 2 Dateien im Eingabebereich lesen. Versuchen Sie das Folgende
quelle