Jak obsługiwać niedopasowane filtry Logstash grok

Zastanawiam się, jakie jest najlepsze podejście do moich filtrów Logstash Grok. Mam kilka filtrów, które są przeznaczone dla określonych wpisów dziennika i nie będą miały zastosowania do wszystkich wpisów. Te, które nie mają zastosowania, zawsze generują znaczniki _grokparsefailure. Na przykład mam jeden filtr grok, który jest dla każdego wpisu dziennika i działa dobrze. Następnie mam inny filtr, który służy do wysyłania komunikatów o błędach ze śladami. Filtr traceback zgłasza grokparsefailure dla każdego pojedynczego wpisu dziennika, który nie ma śledzenia.

Wolałbym, żeby po prostu przekazał regułę, jeśli nie ma dopasowania zamiast dodawania tagu parsefailure. Używam znacznika parsefailure, aby znaleźć rzeczy, które nie są poprawnie analizowane, a nie rzeczy, które po prostu nie pasują do konkretnego filtra. Może to tylko nomenklatura „porażka parsena” mnie dopada. Dla mnie oznacza to, że coś jest nie tak z filtrem (np. Źle sformatowane), że nie pasuje.

Pytanie brzmi: jak mam sobie z tym poradzić?

Użyj opcjonalnego wzoru filtra?

(ab) użyj opcji tag_on_failure, ustawiając ją na nic []

ustaw filtr na warunkowy, używając czegoś takiego jak „jeśli traceback w wiadomości”

coś jeszcze nie rozważam?

Z góry dziękuję.

EDYTOWAĆ

Wziąłem ścieżkę dodawania warunkowego wokół filtra:

    if [message] =~ /took\s\d+/ {
        grok {
            patterns_dir => "/etc/logstash/patterns"
            match => ["message", "took\s+(?<servicetime>[\d\.]+)"]
            add_tag => [ "stats", "servicetime" ]
        }
    }

Wciąż jednak interesuje mnie informacja zwrotna. Co jest tutaj uważane za „najlepszą praktykę”?

questionAnswers(4)

yourAnswerToTheQuestion