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.
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 --"