Der regex-Parser ermöglicht die Verwendung einiger regulärer Ausdrücke für erfasste Daten.

VMware Aria Operations for Logs-Agenten verwenden die C++ Boost-Bibliothek Regex, die in der Perl-Syntax geschrieben ist. Der regex-Parser kann definiert werden, indem ein Muster für reguläre Ausdrücke angegeben wird, welches benannte Erfassungsgruppen enthält. Beispiel: (?<field_1>\d{4})[-](?<field_2>\d{4})[-](?<field_3>\d{4})[-](?<field_4>\d{4})

Die in den Gruppen angegebenen Namen (z. B.: field_1, field_2, field_3 und field_4) werden zu Namen der entsprechenden extrahierten Felder. Für Namen gelten die folgenden Anforderungen:
  • Bei den im Muster für reguläre Ausdrücke angegebenen Namen muss es sich um gültige Feldnamen für VMware Aria Operations for Logs handeln.
  • Die Namen dürfen nur alphanumerische Zeichen und den Unterstrich (_) enthalten.
  • Der Name darf nicht mit einer Ziffer beginnen.

Wenn ungültige Namen angegeben werden, schlägt die Konfiguration fehl.

Optionen für den Regex-Parser

Die einzig erforderliche Option für den regex-Parser ist die format-Option.

Die debug-Option kann verwendet werden, wenn weitere Informationen zum Debuggen benötigt werden.

Konfiguration

Um einen Regex-Parser zu erstellen, verwenden Sie regex als base_parser (Basis-Parser) und geben Sie die Option format an.

Beispiele für Regex-Konfigurationen

Das folgende Beispiel kann für die Analyse von 1234-5678-9123-4567 verwendet werden:

[parser|regex_parser]
base_parser=regex
format=(?<tag1>\d{4})[-](?<tag2>\d{4})[-](?<tag3>\d{4})[-](?<tag4>\d{4})
[filelog|some_info]
directory=D:\Logs
include=*.txt
parser=regex_parser

Das Ergebnis lautet:

tag1=1234
tag2=5678
tag3=9123
tag4=4567

Um Apache-Protokolle mit dem regex-Parser zu analysieren, geben Sie das spezifische regex-Format für Apache-Protokolle an:

[parser|regex_parser]
base_parser=regex
format=(?<remote_host>.*) (?<remote_log_name>.*) (?<remote_auth_user>.*) \[(?<log_timestamp>.*)\] "(?<request>.*)" (?<status_code>.*) (?<response_size>.*)

Das Ergebnis lautet:

127.0.0.1 - admin [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326
remote_host=127.0.0.1
remote_log_name=-
remote_auth_user=admin
log_timestamp=10/Oct/2000:13:55:36 -0700
request=GET /apache_pb.gif HTTP/1.0
status_code=200
response_size=2326
Bei dem folgenden Code handelt es sich um ein weiteres Beispiel für die Analyse von Apache-Protokollen.
[parser|regex_parser]
base_parser=regex
format=(?<remote_host>.* (?<remote_log_name>.*)) (?<remote_auth_user>.*) \[(?<log_timestamp>.*)\] "(?<request>.* (?<resource>.*) (?<protocol>.*))" (?<status_code>.*) (?<response_size>.*)
127.0.0.1 unknown - [17/Nov/2015:15:17:54 +0400] \"GET /index.php HTTP/1.1\" 200 4868
remote_host=127.0.0.1 unknown
remote_log_name=unknown
remote_auth_user=-
log_timestamp=17/Nov/2015:15:17:54 +0400
request=GET /index.php HTTP/1.1
resource=/index.php
protocol=HTTP/1.1
status_code=200
response_size=4868

Überlegungen zur Leistung

Der regex-Parser verbraucht mehr Ressourcen als andere Parser, wie z. B. der CLF-Parser. Wenn Sie Protokolle mit anderen Parsern analysieren können, ziehen Sie die Verwendung dieser Parser anstelle des regex-Parsers in Betracht, um eine höhere Leistung zu erzielen.

Wenn kein Parser angegeben wurde und Sie den regex-Parser verwenden, definieren Sie die Formate so eindeutig wie möglich. Im folgenden Beispiel wird eine Konfiguration dargestellt, mit der bessere Leistungsergebnisse erzielt werden. Bei diesem Beispiel werden Felder angegeben, die Ziffernwerte aufweisen.
(?<remote_host>\d+.\d+.\d+.\d+) (?<remote_log_name>.*) (?<remote_auth_user>.*) \[(?<log_timestamp>.*)\] "(?<request>.*)" (?<status_code>\d+) (?<response_size>\d+)