Patrón Logstash Grok

Patrón Logstash Grok

En primer lugar, me disculpo por esto, soy bastante malo con las expresiones regulares e intento escribir un patrón personalizado (ya que no puedo encontrar algo en el patrón grok existente o tal vez me falta algo) para analizar los registros svn que se encuentran en el formato de

r24|prashant|2015-02-26 12:38:04 -0800 (Thu, 26 Feb 2015)|33|Log: ABC-123 / Initial version||A   test/log_testing1 A   test/log_testing2 A   test/log_testing3 A   test/log_testing4 A   test/log_testing5 \n

Entonces está en el formato de

$REVISION:$USER ID:$DATE:$CHECKED IN MESSAGE:$FILE CHECKED IN 

Entonces escribí un patrón personalizado.

SVN [r0-9]
SVN_TIMESTAMP %{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE}?  (%{DAY}, %{MONTHDAY} %{MONTH} %{YEAR})

y mi logstash-conf se vería así para la sección de filtro

filter {
  grok {
  match => { "message" => "%{SVN:revision}|%{USERNAME:username}|%{SVN_TIMESTAMP:svntimestamp}|%{GREEDYDATA:syslog_message}||%{GREEDYDATA:syslog_message" }
}

}

No estoy seguro de que sea correcto pero, como siempre, no funciona. Cualquier ayuda es realmente apreciada.

Respuesta1

Aquí hay una versión más simple de un patrón que podría ayudarlo a comenzar:

(?<SVN>[0-9]+)\|%{USERNAME:username}\|(?<SVN_TIMESTAMP>[^\|]+)\|%{GREEDYDATA:syslog_message}

En aras de la simplicidad, no utilicé patrones con nombre y la marca de tiempo no es muy específica en absoluto, pero debería ser más fácil de solucionar.

Cosas importantes a tener en cuenta:

  • el carácter de barra vertical es un OR lógico en estas expresiones, es necesario utilizar un carácter de escape
  • como señaló @tigran: necesita el símbolo más para "uno o más" dígitos en la revisión SVN
  • su patrón SVN_TIMESTAMP es muy complejo, pero no parece del todo correcto. Como mínimo, debe eliminar los paréntesis para que coincidan.

Te recomendé que tomaras tus aportes y mi patrón y los pusieras enhttps://grokdebug.herokuapp.com/-- eso le permitirá mejorarlo gradualmente hasta alcanzar lo que realmente necesita.

información relacionada