Sie können häufige Optionen für alle Parser konfigurieren, die benannte Felder generieren.

Für Feldnamen reservierte Wörter

Feldnamen sind eingeschränkt. Die folgenden Namen sind reserviert und können nicht als Feldnamen verwendet werden.

  • event_type
  • hostname
  • source
  • text

Gängige Parser-Optionen

Die in der folgenden Tabelle aufgeführten Optionen können mit allen unterstützten Parsern verwendet werden.

Option Beschreibung
base_parser

Der Name des Basis-Parsers, den dieser benutzerdefinierte Parser erweitert. Es kann sich um einen integrierten Parser-Namen oder einen anderen benutzerdefinierten Namen handeln. Dieser Konfigurationsschlüssel ist obligatorisch.

field_decoder
Als JSON-Zeichenfolgen angegebene verschachtelte Parser. Schlüssel sind die Namen des Felds, auf das der verschachtelte Parser angewandt wird, und der Wert ist der Name des Parsers, der für das betreffende Feld verwendet wird. Jeder verschachtelte Parser wird auf das entsprechende, vom Basis-Parser decodierte Feld angewandt. Felddecodierer sind nützlich, wenn der Wert eines Felds ein komplexer Wert ist, z. B. ein Zeitstempel. Die Option field_decoder unterstützt ebenfalls weitere JSON-Objekte als Argumente, mit denen Sie Bedingungen für bestimmte Feldwerte verwenden können, die vor dem Anwenden der verschachtelten Analyse überprüft werden.
Hinweis: Weitere Informationen zur Nutzung und zu bedingten Konfigurationen finden Sie unter „Bedingte Konfigurationen“ für den Abschnitt mit der field_decoder-Option weiter unten.
field_rename

Benennt extrahierte Felder um. Verwenden Sie eine JSON-Zeichenfolge, bei der die Schlüssel die Originalnamen der Felder und die Werte die neuen, gewünschten Namen der Felder sind. Die Option field_decoder wird immer vor field_rename angewendet. Die Reihenfolge dieser Optionen in der INI-Datei ist unwichtig. Geben Sie aus Gründen der Deutlichkeit field_decoder zuerst an.

next_parser

Name des nächsten auszuführenden Parsers. Ermöglicht die Ausführung von mehreren Parsern sequenziell für die gleiche Eingabe.

Hinweis: Parser verarbeiten alle nachfolgenden Parser, die vom next_parser-Schlüsselwort definiert sind und können einen Feldwert ersetzen, der bereits von einem vorherigen Parser extrahiert wurde.
exclude_fields

Eine Liste der mit Semikolons getrennten Feldnamen, die aus dem Ereignis entfernt werden sollen, bevor es an den Server geliefert wird. Die Feldnamen werden vor der Ereignisfilterung entfernt, damit das Feld, das Sie beim Analysieren ausgeschlossen haben, nicht in der Filterbedingung verwendet werden kann.

debug

Ja- oder Nein-Option, welche Debuggen für einen bestimmten Parser aktiviert. Wenn Debuggen aktiviert ist, führt der Parser detaillierte Protokollierung der erhaltenen Eingabe, des durchgeführten Vorgangs und des erhaltenen Ergebnisses durch. Die Option gilt pro Abschnitt, also nur für den Parser, der für den betreffenden Abschnitt definiert ist.

Der Debug-Standardwert für Parser ist debug=no.

Bedingte Konfigurationen für die field_decoder-Option

Für Protokolle mit dem gleichen allgemeinen Format, aber signifikanten Unterschieden in Bezug auf bestimmte Feldwerte, z. B. Protokolle mit den Schweregraden info und error, können Sie mit der bedingten verschachtelten Analyse die Anwendung unnötiger Analysen auf die entsprechenden Felder bereits analysierter Protokolle reduzieren.

Verwenden Sie beispielsweise diese Protokolle:
2019-03-29T11:00:54.858Z host-FQDN Hostd: error hostd[2099230] [Originator@6876 sub=Default opID=1983bdbe-c1-800f user=admin.user] AdapterServer caught exception: SSLExceptionE(SSL Exception: error:140000DB:SSL routines:SSL routines:short read: The connection was closed by the remote end during handshake.)
2019-03-29T11:00:55.477Z host-FQDN Hostd: info hostd[6D620B70] ['commonhost' opID=5759adcc-cf] [transportConnector] -- FINISH task-internal-5726666 -- -- Completed connection restart -- 

Sie können die folgende Konfiguration verwenden, um sie zu analysieren:

[parser|clf_parser]
base_parser=clf
format=%t %{generator_host}i %i: %{log_severity}i %i[%{thread_id}i]%M
field_decoder={"log_message" : {"log_severity" : {"error" : "error_parser", "info" : "info_parser"}}}
exclude_fields=log_message

[parser|info_parser]
base_parser=clf
format=[%{common_info}i] [%{process}i] %M
field_rename={"log_message" : "info_log_content"}

[parser|error_parser]
base_parser=clf
format=[%{common_info}i] %{exception_handler}i %i:%{exception_type}i:%i:%{error_id}i:%i:%i:%i: %M
field_rename={"log_message" : "exception_content"}

Diese Konfiguration erzeugt die folgenden Ergebnisse:

timestamp=2019-03-29T11:00:54.858000 generator_host="host-FQDN" log_severity="error" thread_id="2099230" common_info=Originator@6876 sub=Default opID=1983bdbe-c1-800f user=admin.user exception_handler="AdapterServer" exception_type="SSLExceptionE(SSL Exception" error_id="140000DB" exception_content="The connection was closed by the remote end during handshake.)"

Zudem werden die folgenden Felder für das info-Protokoll analysiert:

timestamp=2019-03-29T11:00:55.477000 generator_host="host-FQDN" log_severity="info" thread_id="6D620B70" log_message="['commonhost' opID=5759adcc-cf] [transportConnector] -- FINISH task-internal-5726666 -- -- Completed connection restart --" common_info="'commonhost' opID=5759adcc-cf" process="transportConnector" info_log_content="-- FINISH task-internal-5726666 -- -- Completed connection restart --"