Como lidar com filtros Grok Logstash não correspondentes

Gostaria de saber qual a melhor abordagem a ser adotada com os meus filtros Logstash Grok. Eu tenho alguns filtros que são para entradas de log específicas e não serão aplicáveis a todas as entradas. Os que não se aplicam sempre geram tags _grokparsefailure. Por exemplo, eu tenho um filtro grok que é para cada entrada de log e funciona bem. Então eu tenho outro filtro que é para mensagens de erro com rastreamentos. O filtro traceback gera um grokparsefailure para cada entrada de log única que não possui um traceback.

Eu preferiria que apenas passasse a regra se não houver uma correspondência, em vez de adicionar a tag parsefailure. Eu uso a tag de análise de falhas para encontrar coisas que não estão analisando corretamente, não coisas que simplesmente não correspondem a um filtro específico. Talvez seja apenas a nomenclatura "falha na análise" que me pegue. Para mim, isso significa que há algo errado com o filtro (por exemplo, mal formatado), não que não corresponda.

Portanto, a questão é: como devo lidar com isso?

Tornar o padrão de filtro opcional usando?

(ab) use a opção tag_on_failure configurando-a para nada []

condicione o filtro usando algo como "if traceback in message"

outra coisa que eu não estou considerando?

Desde já, obrigado.

EDITAR

Peguei o caminho de adicionar um condicional ao redor do filtro:

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

Ainda estou interessado em feedback. O que é considerado "melhor prática" aqui?

questionAnswers(4)

yourAnswerToTheQuestion