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/

Répondre à