Transcript
Page 1: Plugin logstash-filter-aggregate (meetup Elastic FR)

logstash-filter-aggregate

Par Fabien Baligand

Page 2: Plugin logstash-filter-aggregate (meetup Elastic FR)

Fabien Baligand

Passionné de technos java et web Passionné de logs

Développeur OpenSource sur GitHub : github.com/fbaligand/lognavigator github.com/logstash-plugins/logstash-filter-aggregate

Tech Lead chez Informatique CDC

+FabienBaligand @fbaligand

Page 3: Plugin logstash-filter-aggregate (meetup Elastic FR)

logstash-filter-aggregate

Objectif :

Agréger les informations dispersées dans plusieurs lignes de log,

dans un seul document logstash

Page 4: Plugin logstash-filter-aggregate (meetup Elastic FR)

Exemple

INFO - 12345 - TASK_START - startINFO - 12345 - SQL - sqlQuery1 - 12INFO - 12345 - SQL - sqlQuery2 - 34INFO - 12345 - TASK_END - end

Page 5: Plugin logstash-filter-aggregate (meetup Elastic FR)

Résultat attendu

{ "message" => "INFO - 12345 - TASK_END - end", "sql_duration" => 46}

Page 6: Plugin logstash-filter-aggregate (meetup Elastic FR)

Configuration logstash (1/3)

if [logger] == "TASK_START" { aggregate { task_id => "%{taskid}" code => "map['sql_duration'] = 0" }}

INFO - 12345 - TASK_START - start

Page 7: Plugin logstash-filter-aggregate (meetup Elastic FR)

Configuration logstash (2/3)

if [logger] == "SQL" { aggregate { task_id => "%{taskid}" code => "map['sql_duration'] +=

event['duration']" }}

INFO - 12345 - SQL - sqlQuery1 - 12

Page 8: Plugin logstash-filter-aggregate (meetup Elastic FR)

Configuration logstash (3/3)

if [logger] == "TASK_END" { aggregate { task_id => "%{taskid}" code => "event['sql_duration'] =

map['sql_duration']" end_of_task => true }}

INFO - 12345 - TASK_END - end

Page 9: Plugin logstash-filter-aggregate (meetup Elastic FR)

DEMO

Page 10: Plugin logstash-filter-aggregate (meetup Elastic FR)

logstash-filter-aggregate

Usages :

Répartition temps appels externes / traitement applicatif

Agrégation des erreurs

Récupération d’informations de corrélation dispersées

Page 11: Plugin logstash-filter-aggregate (meetup Elastic FR)

Création de plugin logstash

Compliqué ?

Page 12: Plugin logstash-filter-aggregate (meetup Elastic FR)

Création de plugin logstash Comment on fait ? (1/3)

logstash-filter-yourpluginlogstash-filter-yourplugin.gemspeclib

logstash filters

yourplugin.rb

Page 13: Plugin logstash-filter-aggregate (meetup Elastic FR)

Création de plugin logstash Comment on fait ? (2/3)

class LogStash::Filters::YourFilter < LogStash::Filters::Base

public def filter(event) ... end

end

yourplugin.rb :

Page 14: Plugin logstash-filter-aggregate (meetup Elastic FR)

Création de plugin logstash Comment on fait ? (3/3)

Gem::Specification.new do |s| s.name = 'logstash-filter-yourfilter' s.version = '0.0.1' s.summary = "bla bla plugin"  ...end

logstash-filter-yourplugin.gemspec :

Page 15: Plugin logstash-filter-aggregate (meetup Elastic FR)

Publication officielle de plugin logstash

Pourquoi ?

Intégration dans le compte officiel github : logstash-plugins

Intégration dans la doc officielle de logstash

Gagner en visibilité

Page 16: Plugin logstash-filter-aggregate (meetup Elastic FR)

Publication officielle de plugin logstash

Comment ?

1. Issue sur github.com/elastic/logstashDemande de création de repository sur le

compte logstash-plugins2. Fork du repository 3. Dev du plugin + Tests unitaires4. Pull Request

Page 17: Plugin logstash-filter-aggregate (meetup Elastic FR)

Questions


Recommended