Cómo manejar los filtros de logstash no coincidentes

Me pregunto cuál es el mejor enfoque a seguir con mis filtros Logstash Grok. Tengo algunos filtros que son para entradas de registro específicas y no se aplicarán a todas las entradas. Los que no se aplican siempre generan etiquetas _grokparsefailure. Por ejemplo, tengo un filtro de grok para cada entrada de registro y funciona bien. Luego tengo otro filtro que es para mensajes de error con tracebacks. El filtro de rastreo arroja un error grave para cada entrada de registro que no tiene un rastreo.

Preferiría que solo pasara la regla si no hay una coincidencia en lugar de agregar la etiqueta parsefailure. Utilizo la etiqueta parsefailure para encontrar cosas que no se analizan correctamente, no cosas que simplemente no coinciden con un filtro en particular. Tal vez sea solo la nomenclatura "fallo de análisis" lo que me molesta. Para mí, eso significa que hay algo mal con el filtro (por ejemplo, mal formateado), no que no coincidiera.

Entonces la pregunta es, ¿cómo debo manejar esto?

Hacer el patrón de filtro opcional usando?

(ab) use la opción tag_on_failure configurándola en nada []

condiciona el filtro usando algo como "if traceback in message"

otra cosa que no estoy considerando?

Gracias por adelantado.

EDITAR

Tomé el camino de agregar un condicional alrededor del filtro:

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

Todavía estoy interesado en la retroalimentación sin embargo. ¿Qué se considera "mejor práctica" aquí?

Respuestas a la pregunta(4)

Su respuesta a la pregunta