2014-12-12 7 views
6

Sto cercando di abbinare i messaggi di evento con diverse espressioni regolari. Stavo per usare il filtro grep, ma è deprecato quindi sto provando per il rilascio con la negazione.Come posso avere il logstash di eliminare tutti gli eventi che non corrispondono a un gruppo di espressioni regolari?

La funzionalità che sto cercando è quella di far cadere tutti gli eventi a meno che il messaggio corrisponda a diverse espressioni regolari.

Il soffietto del filtro non funziona, ma testato singolarmente entrambe le espressioni funzionano bene. Cosa mi manca?

filter {  
    if ([message] !~ ' \[critical\]: ' or [message] !~ '\[crit\]: ') { 
     drop { } 
    } 
} 

risposta

3

Sei usando un'espressione regolare nel condizionale, ma non passando l'argomento nel formato corretto. Il documento mostra questo:

if [status] =~ /^5\d\d/ { 
    nagios { ... } 
} 

Nota l'espressione regolare è non quotata e circondata da barre.

+0

Grazie, in realtà questo ha risolto questo e altri problemi. Buona chiamata! – Darkbluesea

11

stavo leggendo un po 'di più e sono andato lungo con la pittura gli eventi con Grok con l'aggiunta di un tag e rilasciandoli alla fine, se il tag non c'era:

filter { 
    grok { 
    add_tag => [ "valid" ] 
    match => [ 
     "message", ".+ \[critical\]: ?(.+)", 
     "message", ".+ \[crit\]: ?(.+) ", 
     "message", '.+ (Deadlock found.+) ', 
     "message", "(.+: Could not record email: .+) " 
    ] 
    } 

    if "valid" not in [tags] {    
    drop { } 
    } 

    mutate { 
    remove_tag => [ "valid" ] 
    } 
} 
6
if "_grokparsefailure" in [tags] { 
    drop {} 
} 
Problemi correlati