El analizador de regex permite el uso de algunas expresiones regulares en datos recopilados.

Los agentes de vRealize Log Insight usan la expresión regular de biblioteca Boost de C++, que utiliza la sintaxis Perl. El analizador de regex se puede definir especificando un patrón de una expresión regular que contenga grupos de captura con nombre. Por ejemplo: (?<campo_1>\d{4})[-](?<campo_2>\d{4})[-](?<campo_3>\d{4})[-](?<campo_4>\d{4})

Los nombres especificados en los grupos (por ejemplo: campo_1, campo_2, campo_3 y campo_4) se convierten en los nombres de los campos extraídos correspondientes. Los nombres tienen los siguientes requisitos:
  • Los nombres especificados en el patrón de expresión regular deben ser nombres de campos válidos para vRealize Log Insight.
  • Los nombres deben contener solamente caracteres alfanuméricos y el carácter de guion bajo "_".
  • El nombre no puede comenzar con un carácter digital.

Si se proporcionan nombres no válidos, se produce un error en la configuración.

Opciones del analizador de regex

La única opción requerida para el analizador de regex es la opción format.

Se puede usar la opción debug si se requiere información de depuración adicional.

Configuración

Para crear un analizador de regex, utilice regex como base_parser y proporcione la opción format.

Ejemplos de configuración de regex

El siguiente ejemplo se puede usar para analizar 1234-5678-9123-4567:

[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

Los resultados son los siguientes:

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

Para analizar registros de Apache con el analizador de regex, proporcione el formato de regex específico para los registros de Apache:

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

Los resultados son los siguientes:

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
El siguiente código muestra otro ejemplo de análisis de registros Apache.
[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

Consideraciones sobre rendimiento

El analizador de regex consume más recursos que otros analizadores como el analizador de CLF. Si puede analizar registros con otros analizadores, para obtener un mejor rendimiento, considere la posibilidad de utilizar esos analizadores en lugar del analizador de regex.

Si no se proporciona un analizador y utiliza el analizador de regex, defina los formatos de la manera más clara posible. El siguiente ejemplo muestra una configuración que proporciona mejores resultados de rendimiento. Este ejemplo especifica campos que poseen valores digitales.
(?<remote_host>\d+.\d+.\d+.\d+) (?<remote_log_name>.*) (?<remote_auth_user>.*) \[(?<log_timestamp>.*)\] "(?<request>.*)" (?<status_code>\d+) (?<response_size>\d+)