Tu peux regarder du côté du plugin kv qui est inclu dans logstash qui permet de découper automatiquement les champs de type key/value.
N'oublie pas de refresh les index dans kibana pour les récupérer et pouvoir les utiliser dans tes filtres. Après, pour des logs qui proviennent de sources différentes et sans nomenclature, y a pas de solution miracle malheureusement... Le lundi 9 mai 2016, Lamarre, Jonathan <[email protected]> a écrit : > Bonjour et merci pour vos réponses. > > > > Le problème du « grok » c’est que demain si dans mon « message » j’ai un > nouvel « @blabla » qui s’ajoute, je vais devoir le retravailler or le but > de la manip c’est que tout se fasse automatiquement car clairement je ne > suis pas maître du message émis initialement. > > > > Je pensais plus aux « filters » mais je n’ai pas eu de succès jusqu’à > présent… > > > > Merci quand même, > > Jonathan > > > > *De :* FRsAG [mailto:[email protected] > <javascript:_e(%7B%7D,'cvml','[email protected]');>] *De la part de* > Jocelyn Lagarenne > *Envoyé :* jeudi 5 mai 2016 16:49 > *À :* Guillaume Hilt <[email protected] > <javascript:_e(%7B%7D,'cvml','[email protected]');>> > *Cc :* French SysAdmin Group <[email protected] > <javascript:_e(%7B%7D,'cvml','[email protected]');>> > *Objet :* Re: [FRsAG] [Problem] Logstash/Kibana > > > > j'ai pas mal travaillé avec logstash/elastic pendant un moment. > > De memoire le champs "message" que logstash rajoute est le "log brut" > qu'il reçoit. si tu n'as pas les champs deja découpé en field c'est que tu > n'as les bon filtre (parser). il faut soit: > > - trouve un filtre deja existant si ton log est standard, par exemple pour > les apache etc > > - sinon il faut que tu parses toi meme via logstash les champs. ce n'est > pas tres dur mais la syntaxe est un peu crade. si dessous un exemple que > j'ai fait pour parser des logs de mon pfsense: > > > > > > > > dans la conf filter de logstash: > > > > if [prog] =~ /^filterlog$/ { > > mutate { > > remove_field => [ "msg", "datetime" ] > > } > > grok { > > patterns_dir => "/etc/logstash/patterns" > > match => [ "message", > "%{PFSENSE_LOG_DATA}%{PFSENSE_IP_SPECIFIC_DATA}%{PFSENSE_IP_DATA}%{PFSENSE_PROTOCOL_DATA}"] > > > > --- > > cette partie vérifie que j'ai un champ "prog" qui contient "filterlog" > > et avec le filtre (pattern matching) "grok" je decoupe le champ "message" > en respectant mes patterns qui sont les suivantes: > > > > [...] > > PFSENSE_LOG_DATA > (%{INT:rule}),(%{INT:sub_rule}),,(%{INT:tracker}),(%{WORD:iface}),(%{WORD:reason}),(%{WORD:action}),(%{WORD:direction}),(%{INT:ip_ver}), > > PFSENSE_IP_SPECIFIC_DATA > (%{PFSENSE_IPv4_SPECIFIC_DATA}|%{PFSENSE_IPv6_SPECIFIC_DATA}) > > PFSENSE_IPv4_SPECIFIC_DATA > (%{BASE16NUM:tos}),,(%{INT:ttl}),(%{INT:id}),(%{INT:offset}),(%{WORD:flags}),(%{INT:proto_id}),(%{WORD:proto}), > > [...] > > > > > > ce n'est qu'un extrait mais ça devrait deja t'aider à mieux comprendre. > cherche sur le net il y a beaucoup de tutorial, par exemple > https://blog.jocelynlagarenne.fr/jsn/index.php/integration/102-elasticsearch-log-analyser > ;) > > > > 2016-05-04 14:48 GMT+02:00 Guillaume Hilt <[email protected] > <javascript:_e(%7B%7D,'cvml','[email protected]');>>: > > Il veut décoder le json en tableau et que chaque index du tableau devienne > un filtre (donc un field avec sa checkbox). > > Guillaume Hilt > > Le 04/05/2016 à 12:30, Florent Rivoire a écrit : > > 2016-05-04 12:00 GMT+02:00 Lamarre, Jonathan <[email protected] > <javascript:_e(%7B%7D,'cvml','[email protected]');>>: > > Est-il possible de découper le message à chaque « @ »pour faire en sorte > que chacun d’eux deviennent des fields à part entière et ainsi qu’ils > s’ajoutent à la liste des fields par défaut dans l’interface Kibana ? > > Si oui, comment ? Parce que j’ai testé pas mal de choses déjà qui se sont > révélées infructueuses L > > > > Je ne suis pas sur d'avoir compris ce que tu veux faire. > > Tu devrais détailler clairement le format de tes données, essaie de donner > un exemple de données de ton application et un exemple de json qui est > indexé dans ElasticSearch (après le traitement par logstash donc). > > > > Mais je pense que tu devrais regarder au niveau de logstash : il faut > surement rajouter des options dans la partie "filter" de la configuration. > > C'est à dire changer le traitement qui est fait avant l'indexation dans > E.S, car Kibana ne pourra pas faire ce "split" par @ lui-même. > > > > NB: j'ai l'impression que tu as 2 timestamp (celui à la racine mis par > logstash, et celui dans ton field message que tu veux splitté), il faudrait > surement que tu arrive au final à en avoir qu'un seul (via le filter "date" > je pense), et qui soit à la racine, car c'est le schéma standard de la > stack ELK. > > > > -- > > Florent > > > > _______________________________________________ > > Liste de diffusion du FRsAG > > http://www.frsag.org/ > > > > > _______________________________________________ > Liste de diffusion du FRsAG > http://www.frsag.org/ > > >
_______________________________________________ Liste de diffusion du FRsAG http://www.frsag.org/
