3 votes

Différents extracteurs pour le même input Graylog?

Je utilise la fonctionnalité sidecar de Graylog avec Filebeat pour récupérer un certain nombre de fichiers journaux différents de mon serveur, y compris Syslog, Nginx et Java App. Tous ces fichiers journaux vont dans le même input Graylog pour Beats (j'ai essayé de fournir plusieurs inputs, malheureusement Filebeat envoie vers un seul emplacement). Tout fonctionne très bien sauf pour les extracteurs.

Comment spécifier un extracteur spécifique pour un message de journal spécifique ? Par exemple : Si le champ 'type' = 'API' (mon application Java), je veux appliquer un extracteur JSON. Si le type = 'nginx', alors appliquer des extracteurs regex.

2voto

markshiz Points 101

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 :

  1. Décoder JSON (l'entrée arrive en JSON, cela s'aplatit dans des champs)
  2. Format de journalisation standard de l'application (nous utilisons un standard interne)
  3. Code d'erreur pour l'application (si ERREUR, nos applications utilisent un champ personnalisé Example_Error=Quelque chose)
  4. Nom d'hôte de Mac OS X

Lorsqu'un journal d'application sans erreur arrive, il :

  1. Est décodé à partir du JSON
  2. Correspond au format via grok avec RegEx
  3. Pass (pas de champ "Example_Error=")
  4. Pass (pas de correspondance avec les journaux Mac OS X)

Et lorsqu'un journal système Mac OS X arrive :

  1. Est décodé à partir du JSON
  2. Pass (Ne correspond pas au format de journalisation de l'application)
  3. Pass (Ne correspond pas au champ de code d'erreur)
  4. 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.

-1voto

Jacob Evans Points 7455

Vous pouvez enchaîner les extracteurs de telle manière que si le message contient API, copiez le message dans api_message, faites un extracteur sur ce nouveau champ.

Faites de même pour nginx, etc.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X