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})
- 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
[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.
(?<remote_host>\d+.\d+.\d+.\d+) (?<remote_log_name>.*) (?<remote_auth_user>.*) \[(?<log_timestamp>.*)\] "(?<request>.*)" (?<status_code>\d+) (?<response_size>\d+)