2013-11-26 7 views
8

Nel mio spedizioniere Logstash voglio filtrare le righe commentate con il carattere cancelletto:goccia linea di log che contiene il carattere hash

#This log row should be dropped. 
But one this should not. 

ero in grado di utilizzare grep filtro, ma come si è scoraggiato (sta per essere dismesso), Sto cercando di ottenere un filtro grok per farlo invece. Questo filtro non funziona:

grok { 
    match => ["message", "^#.*"] 
    drop_if_match => true 
} 

Ho anche provato a inserire la regex in un file di pattern personalizzato, ma non ha aiutato. Qualche idea?

risposta

21

Ancora più semplice, se siete interessati:

filter { 
    if ([message] =~ /^#/) { 
     drop{} 
    } 
} 

Le ultime versioni di Logstash sono state mettendo maggiormente l'accento sulla logica ad albero directly in the config files. Ci vuole un po 'per abituarsi, ma è molto utile una volta fatto.

+1

Non hai bisogno di extra() attorno alla condizione if. se [message = ~ "^ #"] {è ora sufficiente. – jmcollin92

2

La risposta corretta è che c'è un errore in drop_if_match=>true (Logstash v1.2.2). Utilizzare questo tipo di soluzione:

grok { 
    ... 
    add_tag => ["some_comment"] 
} 
if "some_comment" in [tags] { 
    drop {} 
} 
+0

La sintassi add_tag ​​non è buona. Devi usare: mutate {add_tag ​​....} – jmcollin92

Problemi correlati