Je suis en train d'ingérer plusieurs sources de logs sur une Entrée et j'ai 4 Extracteurs enchaînés dessus. D'après le comportement que j'ai observé, si l'extracteur ne parvient pas à trouver une correspondance, il passe simplement au suivant. Ce n'est qu'une tentative, pas une obligation.
Par exemple, mes extracteurs :
- Décoder JSON (l'entrée arrive en JSON, cela s'aplatit dans des champs)
- Format de journalisation standard de l'application (nous utilisons un standard interne)
- Code d'erreur pour l'application (si ERREUR, nos applications utilisent un champ personnalisé Example_Error=Quelque chose)
- Nom d'hôte de Mac OS X
Lorsqu'un journal d'application sans erreur arrive, il :
- Est décodé à partir du JSON
- Correspond au format via grok avec RegEx
- Pass (pas de champ "Example_Error=")
- Pass (pas de correspondance avec les journaux Mac OS X)
Et lorsqu'un journal système Mac OS X arrive :
- Est décodé à partir du JSON
- Pass (Ne correspond pas au format de journalisation de l'application)
- Pass (Ne correspond pas au champ de code d'erreur)
- Le nom d'hôte est extrait
Avec une bonne planification et de bons ensembles de groks, vous pouvez faire fonctionner cela avec de nombreux Extracteurs basés sur le format attendu de vos logs. Vous pourriez également trouver utile l'option "Essayer l'extraction uniquement si le champ contient (chaîne / expression régulière)" dans les Extracteurs.