Pour être précis, je gère un fichier journal qui contient presque des millions d'enregistrements. Comme il s'agit d'un journal de récapitulatif de facturation, les informations client ne seront pas enregistrées dans un ordre particulier. J'utilise customized GROK Patterns
et logstash XML filter plugin
pour extraire les données qui seraient suffisantes pour suivre. Pour suivre les activités des clients individuels, j'utilise "Customer_ID" comme clé unique. Donc, même si je suis en utilisant plusieurs Logstash fichiers et modèles de GROK multiples, toutes ses informations pourrait être borné/Agrégé en utilisant son « Customer_ID » (clé unique)Face à un problème lors de l'envoi de données depuis Filebeats vers plusieurs fichiers Logstash
voici mon exemple de fichier journal,
7-04-2017 08:49:41 INFO abcinfo (ABC_RemoteONUS_Processor.java52) - Customer_Entry :::<?xml version="1.0" encoding="UTF-8"?><ns2:ReqListAccount xmlns:ns2="http://vcb.org/abc/schema/"/"><Head msgId="1ABCDEFegAQtQOSuJTEs3u" orgId="ABC" ts="2017-04-27T08:49:51+05:30" ver="1.0"/><Cust id="ABCDVFR233cd662a74a229002159220ce762c" note="Account CUST Listing" refId="DCVD849512576821682" refUrl="http://www.ABC.org.in/" ts="2017-04-27T08:49:51+05:30"
Mon Grok motif,
grok {
patterns_dir => "D:\elk\logstash-5.2.1\vendor\bundle\jruby\1.9\gems\logstash-patterns-core-4.0.2\patterns"
match => [ "message" , "%{DATESTAMP:datestamp} %{LOGLEVEL:Logseverity}\s+%{WORD:ModuleInfo} \(%{NOTSPACE:JavaClass}\)%{ABC:Customer_Init}%{GREEDYDATA:Cust}"]add_field => { "Details" => "Request" }remove_tag => ["_grokparsefailure"]}
Mon profil personnalisé qui est stocké à l'intérieur Pattern_dir,
ABC (- Customer_Entry :::)
Mon plug-in XML Filter,
xml {
source => "Cust"
store_xml =>false
xpath => [
"//Head/@ts", "Cust_Req_time",
"//Cust/@id", "Customer_ID",
"//Cust/@note", "Cust_note", ]
}
Alors quelles que soient les détails vient derrière ** - ** Customer_Entry :::, je serai en mesure d'extraire à l'aide de XML Plugin Filter (sera stocké similaire à plusieurs lignes codec). J'ai écrit 5 fichiers Logstash différents pour extraire différentes Activités du Client avec 5 Patterns Grok différents. Ce qui nous le dira,
1.Customer_Entry
2.Customer_Purchase
3.Customer_Last_Purchase
4.Customer_Transaction
5.Customer_Authorization
Tous les modèles ci-dessus Grok a différents ensemble d'informations, qui seront regroupées par Customer_ID comme je l'ai dit plus tôt.
Je peux extraire les informations et les visualiser clairement dans Kibana sans aucun défaut en utilisant mon modèle personnalisé avec différents fichiers journaux. Depuis que j'ai des centaines de fichiers journaux chaque jour à mettre dans logstash, j'ai opté pour Filebeats, mais Filebeats fonctionne avec un seul port "5044". J'ai essayé de courir avec 5 ports différents pour 5 fichiers logstash différents mais cela ne fonctionnait pas, Un seul fichier logstash de 5 était chargé Le reste des fichiers de configuration était inactif.
ici est mon exemple filebeat output.prospector,
output.logstash:
hôtes: [ "localhost: 5044"]
output.logstash:
hôtes: [ "localhost: 5045" ]
output.logstash:
hôtes: [ "localhost: 5046"]
je ne pouvais pas ajouter tous les grok Patt erns dans un fichier de configuration logstash, car le plugin XML Filter prend la source "GREEDYDATA". dans ce cas, je vais avoir 5 différents Source=>
pour 5 modèles de Grok différents. J'ai même essayé ça aussi mais ça ne fonctionnait pas.
Vous cherchez une meilleure approche.
Ouais ça fonctionnait .. !! mais je veux m'assurer que, chargera le journal d'analyse d'équilibrage chaque ligne? parce que comme je l'ai mentionné dans ma question, j'ai plusieurs fichiers de configuration avec des modèles différents. Je ne veux pas que l'équilibrage de charge laisse un de ces motifs. et aussi pourriez-vous nous parler de globbing? et comment la globalisation augmentera le parallélisme quand je tiens plusieurs fichiers de configuration. Parce que j'utilise un caractère générique dans mon prospecteur d'intrants. –