2014-06-18 6 views
5

Attualmente ho:qual è il modello di espressione regolare per multilinea (logstash)

multiline { 
type => "tomcat" 
pattern => "(^.+Exception: .+)|(^\s+at .+)|(^\s+... \d+ more)|(^\s*Caused by:.+)|(---)" 
what => "previous" 
} 

e questo fa parte del mio registro:

TP-xxxxxxxxxxxxxxxxxxxxxxxx: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
    at xxxxxx 
Caused by: xxxxxxxxx 
    at xxxxxx 
Caused by: xxxxxxxxx 
--- The error occurred in xxxxxxxxx. 
--- The error occurred xxxxxxxxxx. 

Il mio modello non funziona qui. Probabilmente perché ho aggiunto il (---) alla fine. Qual è la frase corretta corretta per aggiungere anche le linee ---?

Grazie

risposta

2

Ti consigliamo di tenere conto di altri personaggi sulla linea così:

(^---.*$) 
+0

Provato ma non funziona. Anche provato (^ .---. +) E (^ \ - \ - \ -. *) E tutto il resto. Inoltre non riesco a trovare un logstash che mi dice quale sia l'errore. – user3752671

+0

Che ne dici di '(^ ---. +)'? Inoltre, se rimuovi '(---)' dalla tua configurazione originale, l'espressione funziona per le altre linee che ti aspetteresti che raccolgano? –

+0

Se rimuovo (---) funziona correttamente. (eccetto per le - linee :-P). Anche provato (^ ---. +) Ma non ha funzionato. – user3752671

1

Se un evento di registro inizia con un timestamp o una parola specifica, ad esempio, nella vostra registra se tutti i registri iniziano con TP, quindi è possibile utilizzarlo come pattern di filtro.

multiline { 
      pattern => "^TP" 
      what => "previous" 
      negate => true 
    } 

Con questo filtro è possibile eseguire il multilinea dei log in modo semplice, senza utilizzare pattern complessi.

+0

A volte è^TP. A volte è [Unloading e qualche volta è log4j:. ha provato a farlo in questo modo "^ TP |^\ [Unloading |^log4j:" ma non funziona – user3752671

+0

Penso che tu l'abbia frainteso.Lo schema "^ TP" indica che tutti i registri avviati saranno "TP". Il "^" significa l'inizio di una riga a regexp. Quindi, i tuoi registri, "TPXXXXXXXX", potranno gestire tutti i registri tramite logstash. Puoi provare a modificare i tuoi log con tutti iniziano con "TP". Quindi prova di nuovo. :) –

2

ho messo il tuo regex e testo in questi compagni regex on-line e provato il suggerimento di Eric:

volte questi amici online davvero aiutare a liberare la mente . Questa immagine mostra ciò che è riconosciuto:

Regex processing on regexr.com

Se fossi bloccato su questo, non vorrei concentrarsi sul regex in sé oltre. Piuttosto mi piacerebbe verificare questi punti:

  • Come ci sono diversi dialetti regex, cosa dialetto è usato da logstash? Cosa significa per il mio modello?
  • Esistono modificatori specifici del logstash che non sono impostati e devono essere impostati?
  • Come menzionato Ben, ci sono altri strumenti di filtro. Aiuterebbe a utilizzare grok invece?