Padrão Logstash Grok

Padrão Logstash Grok

Em primeiro lugar, peço desculpas por isso, sou muito ruim em expressões regulares e tento escrever um padrão personalizado (já que não consigo encontrar algo no padrão grok existente ou posso estar faltando alguma coisa) para analisar os logs do svn que estão no 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

Então está no formato de

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

Então eu escrevi um padrão personalizado

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

e o meu logstash-conf ficaria assim para a seção de filtro

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

}

Não tenho certeza se está correto, mas como sempre não está funcionando. Qualquer ajuda é muito apreciada

Responder1

Aqui está uma versão mais simples de um padrão que pode ajudá-lo a começar:

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

Para simplificar, não usei padrões nomeados e o carimbo de data e hora não é muito específico, mas isso deve ser mais fácil de corrigir.

Coisas importantes a serem observadas:

  • o caractere de barra vertical é um OR lógico nessas expressões, ele precisa ser escapado
  • como @tigran apontou: você precisa do símbolo de mais para "um ou mais" dígitos na revisão SVN
  • seu padrão SVN_TIMESTAMP é muito complexo, mas não parece certo. No mínimo você precisa escapar dos parênteses para corresponder.

Eu recomendei que você pegasse sua opinião e meu padrão e os colocasse emhttps://grokdebug.herokuapp.com/- isso permitirá que você aprimore gradualmente até o que você realmente precisa.

informação relacionada