SlideShare uma empresa Scribd logo
1 de 17
logstash-filter-aggregate
Par Fabien Baligand
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
logstash-filter-aggregate
Objectif :
Agréger les informations
dispersées dans plusieurs lignes de log,
dans un seul document logstash
Exemple
INFO - 12345 - TASK_START - start
INFO - 12345 - SQL - sqlQuery1 - 12
INFO - 12345 - SQL - sqlQuery2 - 34
INFO - 12345 - TASK_END - end
Résultat attendu
{
"message" => "INFO - 12345 - TASK_END - end",
"sql_duration" => 46
}
Configuration logstash (1/3)
if [logger] == "TASK_START" {
aggregate {
task_id => "%{taskid}"
code => "map['sql_duration'] = 0"
}
}
INFO - 12345 - TASK_START - start
Configuration logstash (2/3)
if [logger] == "SQL" {
aggregate {
task_id => "%{taskid}"
code => "map['sql_duration'] +=
event['duration']"
}
}
INFO - 12345 - SQL - sqlQuery1 - 12
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
DEMO
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
Création de plugin logstash
Compliqué ?
Création de plugin logstash
Comment on fait ? (1/3)
logstash-filter-yourplugin
logstash-filter-yourplugin.gemspec
lib
 logstash
 filters
 yourplugin.rb
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 :
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 :
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é
Publication officielle de plugin logstash
Comment ?
1. Issue sur github.com/elastic/logstash
Demande de création de repository sur le
compte logstash-plugins
2. Fork du repository
3. Dev du plugin + Tests unitaires
4. Pull Request
Questions

Mais conteúdo relacionado

Semelhante a Plugin logstash-filter-aggregate (meetup Elastic FR)

Spark Streaming
Spark StreamingSpark Streaming
Spark StreamingPALO IT
 
Nouveautés de PostgreSQL 9.5
Nouveautés de PostgreSQL 9.5Nouveautés de PostgreSQL 9.5
Nouveautés de PostgreSQL 9.5slardiere
 
Déploiement ELK en conditions réelles
Déploiement ELK en conditions réellesDéploiement ELK en conditions réelles
Déploiement ELK en conditions réellesGeoffroy Arnoud
 
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...Normandy JUG
 
PostgreSQL sous linux
PostgreSQL sous linuxPostgreSQL sous linux
PostgreSQL sous linuxKhalid ALLILI
 
Microbox : Ma toolbox microservices - Julien Roy
Microbox : Ma toolbox microservices - Julien RoyMicrobox : Ma toolbox microservices - Julien Roy
Microbox : Ma toolbox microservices - Julien Royekino
 
Aspect avec AspectJ
Aspect avec AspectJAspect avec AspectJ
Aspect avec AspectJsimeon
 
Mariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDCMariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDCChristophe Villeneuve
 
Python application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgentsPython application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgentsNicolas Mussat
 
Techniques de programmation avancée LabVIEW : gestion des données de la local...
Techniques de programmation avancée LabVIEW : gestion des données de la local...Techniques de programmation avancée LabVIEW : gestion des données de la local...
Techniques de programmation avancée LabVIEW : gestion des données de la local...Luc Desruelle
 
Productivité avec l'export LaTeX d'Org mode
Productivité avec l'export LaTeX d'Org modeProductivité avec l'export LaTeX d'Org mode
Productivité avec l'export LaTeX d'Org modeFabrice Niessen
 

Semelhante a Plugin logstash-filter-aggregate (meetup Elastic FR) (20)

Liquibase en action
Liquibase en actionLiquibase en action
Liquibase en action
 
1 2-3-grails
1 2-3-grails1 2-3-grails
1 2-3-grails
 
Spark Streaming
Spark StreamingSpark Streaming
Spark Streaming
 
Nouveautés de PostgreSQL 9.5
Nouveautés de PostgreSQL 9.5Nouveautés de PostgreSQL 9.5
Nouveautés de PostgreSQL 9.5
 
Pg11 pgday 2018
Pg11 pgday 2018Pg11 pgday 2018
Pg11 pgday 2018
 
Déploiement ELK en conditions réelles
Déploiement ELK en conditions réellesDéploiement ELK en conditions réelles
Déploiement ELK en conditions réelles
 
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...
 
PostgreSQL sous linux
PostgreSQL sous linuxPostgreSQL sous linux
PostgreSQL sous linux
 
graylog.pptx
graylog.pptxgraylog.pptx
graylog.pptx
 
Présentation de Node.js
Présentation de Node.jsPrésentation de Node.js
Présentation de Node.js
 
Chiffrer et sécuriser MariaDB
Chiffrer et sécuriser MariaDBChiffrer et sécuriser MariaDB
Chiffrer et sécuriser MariaDB
 
graylogF (2).pptx
graylogF (2).pptxgraylogF (2).pptx
graylogF (2).pptx
 
Paris RailsCamp 2009
Paris RailsCamp 2009Paris RailsCamp 2009
Paris RailsCamp 2009
 
LOG4J
LOG4JLOG4J
LOG4J
 
Microbox : Ma toolbox microservices - Julien Roy
Microbox : Ma toolbox microservices - Julien RoyMicrobox : Ma toolbox microservices - Julien Roy
Microbox : Ma toolbox microservices - Julien Roy
 
Aspect avec AspectJ
Aspect avec AspectJAspect avec AspectJ
Aspect avec AspectJ
 
Mariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDCMariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDC
 
Python application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgentsPython application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgents
 
Techniques de programmation avancée LabVIEW : gestion des données de la local...
Techniques de programmation avancée LabVIEW : gestion des données de la local...Techniques de programmation avancée LabVIEW : gestion des données de la local...
Techniques de programmation avancée LabVIEW : gestion des données de la local...
 
Productivité avec l'export LaTeX d'Org mode
Productivité avec l'export LaTeX d'Org modeProductivité avec l'export LaTeX d'Org mode
Productivité avec l'export LaTeX d'Org mode
 

Mais de Fabien Baligand

Logstash Editor: The vscode extension to boost your productivity!
Logstash Editor: The vscode extension to boost your productivity!Logstash Editor: The vscode extension to boost your productivity!
Logstash Editor: The vscode extension to boost your productivity!Fabien Baligand
 
POSS19 - Publier du code Open Source dans une banque : Mission impossible ?
POSS19 - Publier du code Open Source dans une banque : Mission impossible ?POSS19 - Publier du code Open Source dans une banque : Mission impossible ?
POSS19 - Publier du code Open Source dans une banque : Mission impossible ?Fabien Baligand
 
Classification de courriers postaux avec elasticsearch
Classification de courriers postaux avec elasticsearchClassification de courriers postaux avec elasticsearch
Classification de courriers postaux avec elasticsearchFabien Baligand
 
Google+ To RSS As A Service
Google+ To RSS As A ServiceGoogle+ To RSS As A Service
Google+ To RSS As A ServiceFabien Baligand
 
Environnements, Sources de propriétés et Profils avec Spring 3.1
Environnements, Sources de propriétés et Profils avec Spring 3.1Environnements, Sources de propriétés et Profils avec Spring 3.1
Environnements, Sources de propriétés et Profils avec Spring 3.1Fabien Baligand
 
Présentation de gplus to-twitter
Présentation de gplus to-twitterPrésentation de gplus to-twitter
Présentation de gplus to-twitterFabien Baligand
 
Présentation de jQuery UI
Présentation de jQuery UIPrésentation de jQuery UI
Présentation de jQuery UIFabien Baligand
 
Présentation de alfresco - l'outil de GED open-source java
Présentation de alfresco - l'outil de GED open-source javaPrésentation de alfresco - l'outil de GED open-source java
Présentation de alfresco - l'outil de GED open-source javaFabien Baligand
 
Comment répondre aux besoins de log en production avec log4j
Comment répondre aux besoins de log en production avec log4jComment répondre aux besoins de log en production avec log4j
Comment répondre aux besoins de log en production avec log4jFabien Baligand
 
RestFul Evented Javascript avec sammyjs et jquery
RestFul Evented Javascript avec sammyjs et jqueryRestFul Evented Javascript avec sammyjs et jquery
RestFul Evented Javascript avec sammyjs et jqueryFabien Baligand
 

Mais de Fabien Baligand (11)

Logstash Editor: The vscode extension to boost your productivity!
Logstash Editor: The vscode extension to boost your productivity!Logstash Editor: The vscode extension to boost your productivity!
Logstash Editor: The vscode extension to boost your productivity!
 
POSS19 - Publier du code Open Source dans une banque : Mission impossible ?
POSS19 - Publier du code Open Source dans une banque : Mission impossible ?POSS19 - Publier du code Open Source dans une banque : Mission impossible ?
POSS19 - Publier du code Open Source dans une banque : Mission impossible ?
 
Classification de courriers postaux avec elasticsearch
Classification de courriers postaux avec elasticsearchClassification de courriers postaux avec elasticsearch
Classification de courriers postaux avec elasticsearch
 
Google+ To RSS As A Service
Google+ To RSS As A ServiceGoogle+ To RSS As A Service
Google+ To RSS As A Service
 
Environnements, Sources de propriétés et Profils avec Spring 3.1
Environnements, Sources de propriétés et Profils avec Spring 3.1Environnements, Sources de propriétés et Profils avec Spring 3.1
Environnements, Sources de propriétés et Profils avec Spring 3.1
 
Présentation de gplus to-twitter
Présentation de gplus to-twitterPrésentation de gplus to-twitter
Présentation de gplus to-twitter
 
Présentation de jQuery UI
Présentation de jQuery UIPrésentation de jQuery UI
Présentation de jQuery UI
 
Présentation de alfresco - l'outil de GED open-source java
Présentation de alfresco - l'outil de GED open-source javaPrésentation de alfresco - l'outil de GED open-source java
Présentation de alfresco - l'outil de GED open-source java
 
Comment répondre aux besoins de log en production avec log4j
Comment répondre aux besoins de log en production avec log4jComment répondre aux besoins de log en production avec log4j
Comment répondre aux besoins de log en production avec log4j
 
RestFul Evented Javascript avec sammyjs et jquery
RestFul Evented Javascript avec sammyjs et jqueryRestFul Evented Javascript avec sammyjs et jquery
RestFul Evented Javascript avec sammyjs et jquery
 
Atmosphere Framework
Atmosphere FrameworkAtmosphere Framework
Atmosphere Framework
 

Plugin logstash-filter-aggregate (meetup Elastic FR)

  • 2. 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
  • 3. logstash-filter-aggregate Objectif : Agréger les informations dispersées dans plusieurs lignes de log, dans un seul document logstash
  • 4. Exemple INFO - 12345 - TASK_START - start INFO - 12345 - SQL - sqlQuery1 - 12 INFO - 12345 - SQL - sqlQuery2 - 34 INFO - 12345 - TASK_END - end
  • 5. Résultat attendu { "message" => "INFO - 12345 - TASK_END - end", "sql_duration" => 46 }
  • 6. Configuration logstash (1/3) if [logger] == "TASK_START" { aggregate { task_id => "%{taskid}" code => "map['sql_duration'] = 0" } } INFO - 12345 - TASK_START - start
  • 7. Configuration logstash (2/3) if [logger] == "SQL" { aggregate { task_id => "%{taskid}" code => "map['sql_duration'] += event['duration']" } } INFO - 12345 - SQL - sqlQuery1 - 12
  • 8. 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
  • 10. 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
  • 11. Création de plugin logstash Compliqué ?
  • 12. Création de plugin logstash Comment on fait ? (1/3) logstash-filter-yourplugin logstash-filter-yourplugin.gemspec lib  logstash  filters  yourplugin.rb
  • 13. 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 :
  • 14. 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 :
  • 15. 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é
  • 16. Publication officielle de plugin logstash Comment ? 1. Issue sur github.com/elastic/logstash Demande de création de repository sur le compte logstash-plugins 2. Fork du repository 3. Dev du plugin + Tests unitaires 4. Pull Request