2013-11-26 13 views
8

W moim Logstash nadawcy chcę odfiltrować wiersze skomentował z charakterem hash:kropli zawierających hash charakter

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

byłem w stanie wykorzystać grep filtr, ale jak to jest zalecane (będzie wycofany), Próbuję uzyskać zamiast tego filtr grok. Ten filtr nie działa:

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

Próbowałem również umieścić wyrażenie w niestandardowym pliku sygnatur, ale nie pomogło. Jakieś pomysły?

Odpowiedz

21

jeszcze prostsze, jeśli jesteś zainteresowany:

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

W ciągu ostatnich kilku wersjach Logstash zostały położenie większego nacisku na logikę directly in the config files rozgałęzienia. Trochę się przyzwyczaja, ale całkiem poręczne, gdy już to zrobisz.

+1

Nie potrzebujesz dodatkowej() wokół warunku if. jeśli [message = ~ "^ #"] {jest teraz wystarczający. – jmcollin92

2

Poprawną odpowiedzią jest błąd w wersji drop_if_match=>true (Logstash v1.2.2). Użyj tego typu rozwiązania:

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

Składnia add_tag ​​jest zła. Musisz użyć: mutate {add_tag ​​....} – jmcollin92