Désolé pour le titre, mon cas ne pouvait vraiment pas être expliqué avec une seule phrase.Ajout de données de MongoDB dans des fichiers journaux en cours de traitement par Logstash et analysés dans Elasticsearch
Voici ma situation:
- J'ai un grand nombre de fichiers journaux (environ 4 Go) que je souhaite analyser avec Logstash à utiliser avec pile élastique (Logstash, ElasticSearch, Kibana).
- Dans les journaux, il y a un numéro de série que j'ai analysé avec succès avec Logstash. Ce nombre correspond à un index d'une collection MongoDB. Au fur et à mesure que chaque journal est analysé, je veux pouvoir interroger la collection avec le numéro analysé et extraire les données que je veux inclure dans la sortie finale transmise à Elasticsearch.
Pour rendre les choses plus claires, voici un exemple approximatif. Supposons que j'ai le journal brut:
2017-11-20 14:24:14.011 123 log_number_one
Avant le journal analysable est envoyé à ElasticSearch, je veux interroger ma collection MongoDB avec 123
et obtenir des données data1
et data2
à ajouter au document à envoyer à ElasticSearch, donc mon résultat final aura des champs ressembler à quelque chose comme:
{
timestamp: 2017-11-20 14:24:14.011,
serial: 123,
data1: "foo",
data2: "bar",
log: log_number_one
}
Un moyen plus facile d'y arriver, je suppose, serait simplement prétraiter les journaux et exécuter les numéros par MongoDB avant de les analyse par Logstash. Cependant, vu que j'ai 4 Go de valeur de fichiers journaux, j'espérais un moyen d'y parvenir en un seul coup. Je me demandais si mon boîtier de bord serait résolu avec le plugin de filtre ruby, où je pourrais éventuellement exécuter un code arbitraire ruby pour faire ce qui précède?
Toute aide/conseil serait grandement apprécié!