Comment gérer les non-correspondance Logstash grok filtres

Je me demande quelle est la meilleure approche à adopter avec mon Logstash Grok filtres. J'ai quelques filtres qui sont pour certaines entrées de journal, et ne s'appliquent à toutes les entrées. Ceux qui ne s'appliquent pas toujours de générer _grokparsefailure balises. Par exemple, j'ai un grok filtre pour chaque entrée de journal et il fonctionne très bien. Puis j'ai un autre filtre pour les messages d'erreur avec un retraçage. La traçabilité en amont du filtre jette un grokparsefailure pour chaque entrée de journal qui n'a pas un traceback.

Je préfère avoir juste passer la règle si il n'y a pas un match au lieu d'ajouter le parsefailure tag. J'utilise le parsefailure balise de trouver des choses qui ne sont pas à l'analyse correctement, pas des choses qui ne correspondent pas à un filtre particulier. Peut-être que c'est juste la nomenclature "analyser l'échec", qui me met. Pour moi, cela signifie qu'il ya quelque chose de mal avec le filtre (par exemple, une mauvaise mise en forme), non pas qu'il n'a pas de match.

La question est donc, comment dois-je gérer cela?

  • Faire le modèle de filtre en option à l'aide ?

  • (ab)utiliser le tag_on_failure option par la valeur de rien []

  • rendre le filtre conditionnel à l'aide de quelque chose comme "si" traceback "dans le message"

  • quelque chose d'autre que je ne suis pas pris en compte?

Merci d'avance.

MODIFIER

J'ai pris le chemin de l'ajout d'une condition à travers le filtre:

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

Toujours intéressé dans les commentaires. Ce qui est considéré comme "meilleure pratique" ici?

InformationsquelleAutor Spanky | 2013-12-30