SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Jérôme Creignou - @jcreignou
Sébastien Prunier - @sebprunier
Application
 Application                                                           Application




                        ESB                        ESB
                                                                               ESB

 ESB

                                                                        Controler
                     Rules                   Controler




Service [R]    Service [R]           Service [W]                                     Legacy
                                                         Service [W]




                                                                       Mainframe
                                SGBDR
Load
                                      Balancer




            Cluster 1                                        Cluster 2




                          Service A                                         Service A
Service A                                        Service A




              Service A                                         Service A
Application



                           load bal.



      cluster                                 cluster




ESB               ESB                   ESB               ESB




                           load bal.




        cluster                                 cluster




Serv.             Serv.                 Serv.             Serv.




                            SGBDR
Application



                           load bal.



      cluster                                 cluster




ESB               ESB                   ESB               ESB




                           load bal.




        cluster                                 cluster




Serv.             Serv.                 Serv.             Serv.




                            SGBDR
Application



                         load bal.



      cluster                               cluster




ESB             ESB                   ESB               ESB




                         load bal.




      cluster                                 cluster




                Serv.                 Serv.             Serv.




                          SGBDR
Application



                           load bal.



      cluster                                 cluster




ESB               ESB                   ESB               ESB




                           load bal.




        cluster                                 cluster




Serv.             Serv.                 Serv.             Serv.




                            SGBDR
SGBDR


org.apache.log4j.jdbc.JDBCAppender
   CREATE TABLE ALL_LOGS (DATA BLOB)




   « On va abstraire la notion de log, créer un
    schéma pivot, des convertisseurs et … »
* Log  Logarithme  John Neper  NepR
Outil permettant de consolider un
 ensemble de traces (logs) techniques
et applicatives et de les restituer selon
       plusieurs axes d’analyse.
1


   Loguer dans des fichiers


                        Log
                        File


            org.apache.log4j.FileAppender


                  Données brutes
1


   Que logue-t-on ?
    ◦   Horodatage
    ◦   Id unique de requête (RequestID)
    ◦   User
    ◦   Service et opération exécutée
    ◦   Machine, nœud du cluster
    ◦   Couche applicative
    ◦   Environnement (dev, re7, prod …)
    ◦   Temps d’exécution
    ◦   En cas d’erreur
         Code d’erreur
         Message
         Stacktrace
1


   RequestID
    ◦ ID unique généré pour chaque action utilisateur
    ◦ Transporté de couche en couche
    ◦ Permet de reconstruire l’enchaînement des services


-Xrequestid=123456789



                        <soap:Header>
                            <traces>
                                <requestid>123456789</requestid>
                            </traces>
                        </soap:Header>
2


   Loguer au plus proche de l’environnement
    d’exécution
                                          Log
                                          File
                 Log
                 File



                                   Log
                                   File




          La perte d’informations est limitée
3


   Consolider de manière asynchrone

            Log
            File




                   Log
                   File




       Les performances ne sont pas impactées
4


   Stocker de l’information structurée


                                  {
                                      ts : "2013-03-18…" ,
          Log                         user : "johndoe",
          File                        service : "xxxxx",
                                      op : "abcdef",
                                      elapsed : "154"
                                  }




      L’exploitation des informations est facilitée
5


   Ne pas oublier de purger !




     Les données brutes & les données consolidées
nepr
 Log      nepr
                          console
 File    agent




  Log     nepr
File
  File   agent
                  nepr
                 server
 Log      nepr
 File    agent


 Log
                  nepr
          nepr
 File    agent     db

                              Objet « trace »

                              Objet « perf »

                              Objet « anomalie »
   Nepr agent & server : NodeJS
    ◦ Processus légers
    ◦ Simplicité de mise en œuvre
    ◦ Données structurées JSON

   Nepr db : MongoDB
    ◦   Stockage de données hétérogènes (schema less)
    ◦   Gros volumes de données en écriture
    ◦   L’ « eventual consistency » n’est pas un problème
    ◦   Stockage JSON
   REST API
    ◦ POST
      /data/:env/:couche/:machine
    ◦ GET
        /perfs/:env/:service/:operation
        /errors/:env/:service/:operation
        /traces/:env/:requestid
        /stats/:env/:service/:operation
   Map Reduce
 var mapFn = function () {
    emit({
        service: this.service,
        operation: this.operation,
        couche: this.couche
    }, {
        count: 1,
        elapsed: this.elapsed
    });
};                                 var reduceFn = function (key, values) {
                                       var result = {
                                           count: 0,
                                           elapsed: 0
                                       };
                                       values.forEach(function (val) {
                                           result.count += val.count;
                                           result.elapsed += val.elapsed;
                                       });
                                       return result;
                                   };
    Extraction de logs significatifs via des regexp
^ INFO|([0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3})|([^|]*)|([^|]*)|([^|]*)|([^|]*)|([^|]*) TIME-USED;(d*);0;0;



     Envoi de données structurées au serveur

                           {
                                    type:'perf',
                                    date:todate(m[1]),
                                    userid:m[2],
                                    sessionid:m[3],
                                    requestid:m[4],
                                    service:m[5],
                                    operation:m[6],
                                    elapsed:parseInt(m[7])
                           }
   Configurations centralisées sur le serveur


             nepr
            agent   GET /conf/:env/


                                       nepr
                                      server



   Mise à jour via « svn update » / « git pull »
   Démonstration !

Weitere ähnliche Inhalte

Was ist angesagt?

Bases de données Spatiales - POSTGIS
Bases de données Spatiales - POSTGISBases de données Spatiales - POSTGIS
Bases de données Spatiales - POSTGISOmar El Kharki
 
[2017년 5월 정기세미나] Network with OpenStack - OpenStack Summit Boston Post
[2017년 5월 정기세미나] Network with OpenStack - OpenStack Summit Boston Post[2017년 5월 정기세미나] Network with OpenStack - OpenStack Summit Boston Post
[2017년 5월 정기세미나] Network with OpenStack - OpenStack Summit Boston PostOpenStack Korea Community
 
Cassandra pour les développeurs java
Cassandra pour les développeurs javaCassandra pour les développeurs java
Cassandra pour les développeurs javaJérémy Sevellec
 
PostgreSQL sous linux
PostgreSQL sous linuxPostgreSQL sous linux
PostgreSQL sous linuxKhalid ALLILI
 
Cctp migration servers
Cctp migration serversCctp migration servers
Cctp migration serversQuentinVERY
 
Retour AFUP du forumphp 2017
Retour AFUP du forumphp 2017Retour AFUP du forumphp 2017
Retour AFUP du forumphp 2017AFUP_Limoges
 
Big Data Paris 2015 - Cassandra chez Chronopost
Big Data Paris 2015 - Cassandra chez ChronopostBig Data Paris 2015 - Cassandra chez Chronopost
Big Data Paris 2015 - Cassandra chez ChronopostAlexander DEJANOVSKI
 
Modern DevOps - kill the bottleneck (part 2/2)
Modern DevOps - kill the bottleneck (part 2/2)Modern DevOps - kill the bottleneck (part 2/2)
Modern DevOps - kill the bottleneck (part 2/2)Loic Ortola
 
Modern DevOps - kill the bottleneck (part 1/2)
Modern DevOps - kill the bottleneck (part 1/2)Modern DevOps - kill the bottleneck (part 1/2)
Modern DevOps - kill the bottleneck (part 1/2)Loic Ortola
 
Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Saïd Bouras
 
Presentation Base Mission
Presentation Base MissionPresentation Base Mission
Presentation Base Missiongloute
 
Webinaire 6 de la série « Retour aux fondamentaux » : Déploiement en production
Webinaire 6 de la série « Retour aux fondamentaux » : Déploiement en production Webinaire 6 de la série « Retour aux fondamentaux » : Déploiement en production
Webinaire 6 de la série « Retour aux fondamentaux » : Déploiement en production MongoDB
 
Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesChristophe Furmaniak
 
Mariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDCMariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDCChristophe Villeneuve
 
Consolidez vos journaux et vos métriques avec Elastic Beats
Consolidez vos journaux et vos métriques avec Elastic BeatsConsolidez vos journaux et vos métriques avec Elastic Beats
Consolidez vos journaux et vos métriques avec Elastic Beatsgcatt
 
Les Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain GanuchaudLes Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain GanuchaudAlain Ganuchaud
 
Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013vberetti
 
Déploiement et gestion d'un site web avec Rancher
Déploiement et gestion d'un site web avec RancherDéploiement et gestion d'un site web avec Rancher
Déploiement et gestion d'un site web avec RancherAnthony Sigogne
 

Was ist angesagt? (20)

Bases de données Spatiales - POSTGIS
Bases de données Spatiales - POSTGISBases de données Spatiales - POSTGIS
Bases de données Spatiales - POSTGIS
 
[2017년 5월 정기세미나] Network with OpenStack - OpenStack Summit Boston Post
[2017년 5월 정기세미나] Network with OpenStack - OpenStack Summit Boston Post[2017년 5월 정기세미나] Network with OpenStack - OpenStack Summit Boston Post
[2017년 5월 정기세미나] Network with OpenStack - OpenStack Summit Boston Post
 
Cassandra pour les développeurs java
Cassandra pour les développeurs javaCassandra pour les développeurs java
Cassandra pour les développeurs java
 
PostgreSQL sous linux
PostgreSQL sous linuxPostgreSQL sous linux
PostgreSQL sous linux
 
Cctp migration servers
Cctp migration serversCctp migration servers
Cctp migration servers
 
Retour AFUP du forumphp 2017
Retour AFUP du forumphp 2017Retour AFUP du forumphp 2017
Retour AFUP du forumphp 2017
 
Big Data Paris 2015 - Cassandra chez Chronopost
Big Data Paris 2015 - Cassandra chez ChronopostBig Data Paris 2015 - Cassandra chez Chronopost
Big Data Paris 2015 - Cassandra chez Chronopost
 
Modern DevOps - kill the bottleneck (part 2/2)
Modern DevOps - kill the bottleneck (part 2/2)Modern DevOps - kill the bottleneck (part 2/2)
Modern DevOps - kill the bottleneck (part 2/2)
 
Modern DevOps - kill the bottleneck (part 1/2)
Modern DevOps - kill the bottleneck (part 1/2)Modern DevOps - kill the bottleneck (part 1/2)
Modern DevOps - kill the bottleneck (part 1/2)
 
Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017
 
Presentation Base Mission
Presentation Base MissionPresentation Base Mission
Presentation Base Mission
 
Webinaire 6 de la série « Retour aux fondamentaux » : Déploiement en production
Webinaire 6 de la série « Retour aux fondamentaux » : Déploiement en production Webinaire 6 de la série « Retour aux fondamentaux » : Déploiement en production
Webinaire 6 de la série « Retour aux fondamentaux » : Déploiement en production
 
Charles proxy
Charles proxyCharles proxy
Charles proxy
 
Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantes
 
Mariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDCMariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDC
 
Consolidez vos journaux et vos métriques avec Elastic Beats
Consolidez vos journaux et vos métriques avec Elastic BeatsConsolidez vos journaux et vos métriques avec Elastic Beats
Consolidez vos journaux et vos métriques avec Elastic Beats
 
Les Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain GanuchaudLes Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain Ganuchaud
 
gRPC
gRPCgRPC
gRPC
 
Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013
 
Déploiement et gestion d'un site web avec Rancher
Déploiement et gestion d'un site web avec RancherDéploiement et gestion d'un site web avec Rancher
Déploiement et gestion d'un site web avec Rancher
 

Andere mochten auch

Oxalide Workshop #3 - Elasticearch, an overview
Oxalide Workshop #3 - Elasticearch, an overviewOxalide Workshop #3 - Elasticearch, an overview
Oxalide Workshop #3 - Elasticearch, an overviewLudovic Piot
 
Plateforme centralisée d’analyse des logs des frontaux http en temps réel dan...
Plateforme centralisée d’analyse des logs des frontaux http en temps réel dan...Plateforme centralisée d’analyse des logs des frontaux http en temps réel dan...
Plateforme centralisée d’analyse des logs des frontaux http en temps réel dan...Guillaume MOCQUET
 
Chapitre2 prise en_main_kibana
Chapitre2 prise en_main_kibanaChapitre2 prise en_main_kibana
Chapitre2 prise en_main_kibanaFabien SABATIER
 
Chapitre3 elk concepts_avances
Chapitre3 elk concepts_avancesChapitre3 elk concepts_avances
Chapitre3 elk concepts_avancesFabien SABATIER
 
[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...
[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...
[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...Guillaume MOCQUET
 
Découverte de Elastic search
Découverte de Elastic searchDécouverte de Elastic search
Découverte de Elastic searchJEMLI Fathi
 
Présentation de ElasticSearch / Digital apéro du 12/11/2014
Présentation de ElasticSearch / Digital apéro du 12/11/2014Présentation de ElasticSearch / Digital apéro du 12/11/2014
Présentation de ElasticSearch / Digital apéro du 12/11/2014Silicon Comté
 
GUIA DE TARDOR
GUIA DE TARDORGUIA DE TARDOR
GUIA DE TARDORalsinafont
 
Le rôle du product manager en Social Gaming - Exemple du jeu Goobox de Kobojo
Le rôle du product manager en Social Gaming - Exemple du jeu Goobox de KobojoLe rôle du product manager en Social Gaming - Exemple du jeu Goobox de Kobojo
Le rôle du product manager en Social Gaming - Exemple du jeu Goobox de Kobojoa_grenier
 
Newsletter 1
Newsletter 1Newsletter 1
Newsletter 1FC2Events
 
Grenoble Ville augmentée
Grenoble Ville augmentéeGrenoble Ville augmentée
Grenoble Ville augmentéeKnowtex
 

Andere mochten auch (20)

Oxalide Workshop #3 - Elasticearch, an overview
Oxalide Workshop #3 - Elasticearch, an overviewOxalide Workshop #3 - Elasticearch, an overview
Oxalide Workshop #3 - Elasticearch, an overview
 
Chapitre1 elk chez_psa
Chapitre1 elk chez_psaChapitre1 elk chez_psa
Chapitre1 elk chez_psa
 
Plateforme centralisée d’analyse des logs des frontaux http en temps réel dan...
Plateforme centralisée d’analyse des logs des frontaux http en temps réel dan...Plateforme centralisée d’analyse des logs des frontaux http en temps réel dan...
Plateforme centralisée d’analyse des logs des frontaux http en temps réel dan...
 
Séminaire Log Management
Séminaire Log ManagementSéminaire Log Management
Séminaire Log Management
 
Chapitre2 prise en_main_kibana
Chapitre2 prise en_main_kibanaChapitre2 prise en_main_kibana
Chapitre2 prise en_main_kibana
 
Chapitre3 elk concepts_avances
Chapitre3 elk concepts_avancesChapitre3 elk concepts_avances
Chapitre3 elk concepts_avances
 
[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...
[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...
[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...
 
IPTV
IPTVIPTV
IPTV
 
Découverte de Elastic search
Découverte de Elastic searchDécouverte de Elastic search
Découverte de Elastic search
 
Présentation de ElasticSearch / Digital apéro du 12/11/2014
Présentation de ElasticSearch / Digital apéro du 12/11/2014Présentation de ElasticSearch / Digital apéro du 12/11/2014
Présentation de ElasticSearch / Digital apéro du 12/11/2014
 
Regulacion EAB
Regulacion  EABRegulacion  EAB
Regulacion EAB
 
Artimag N11 Février 2011
Artimag N11 Février 2011Artimag N11 Février 2011
Artimag N11 Février 2011
 
Artimag N12 Mars 2011
Artimag N12 Mars 2011Artimag N12 Mars 2011
Artimag N12 Mars 2011
 
GUIA DE TARDOR
GUIA DE TARDORGUIA DE TARDOR
GUIA DE TARDOR
 
Le rôle du product manager en Social Gaming - Exemple du jeu Goobox de Kobojo
Le rôle du product manager en Social Gaming - Exemple du jeu Goobox de KobojoLe rôle du product manager en Social Gaming - Exemple du jeu Goobox de Kobojo
Le rôle du product manager en Social Gaming - Exemple du jeu Goobox de Kobojo
 
Newsletter 1
Newsletter 1Newsletter 1
Newsletter 1
 
Andres
AndresAndres
Andres
 
Grenoble Ville augmentée
Grenoble Ville augmentéeGrenoble Ville augmentée
Grenoble Ville augmentée
 
I&P et Camed
I&P et CamedI&P et Camed
I&P et Camed
 
Guadeloupe
GuadeloupeGuadeloupe
Guadeloupe
 

Ähnlich wie Nantes JUG - Traçabilité dans une architecture distribuée avec Node.js et MongoDB

Optimisation du stockage share point 2010
Optimisation du stockage share point 2010Optimisation du stockage share point 2010
Optimisation du stockage share point 2010Nicolas Georgeault
 
Orchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp DockerOrchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp DockerThe Incredible Automation Day
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesXavier MARIN
 
Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...
Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...
Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...Christophe Furmaniak
 
Session GWT Devoxx France 2012 Cobra
Session GWT Devoxx France 2012 CobraSession GWT Devoxx France 2012 Cobra
Session GWT Devoxx France 2012 CobraDNG Consulting
 
JBoss clustering et tuning (lab 3/3)
JBoss clustering et tuning (lab 3/3)JBoss clustering et tuning (lab 3/3)
JBoss clustering et tuning (lab 3/3)Fourat Zouari
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924Gregory Boissinot
 
Comment reprendre un (gros) projet Ruby on Rails
Comment reprendre un (gros) projet Ruby on RailsComment reprendre un (gros) projet Ruby on Rails
Comment reprendre un (gros) projet Ruby on RailsNovelys
 
ArchiTech Load Balancing (NLB), Fermes et Jardins
ArchiTech Load Balancing (NLB), Fermes et JardinsArchiTech Load Balancing (NLB), Fermes et Jardins
ArchiTech Load Balancing (NLB), Fermes et Jardinsbenjguin
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPYouness Boukouchi
 
Global Azure Bootcamp 2019 Strasbourg - Cosmos DB
Global Azure Bootcamp 2019 Strasbourg - Cosmos DBGlobal Azure Bootcamp 2019 Strasbourg - Cosmos DB
Global Azure Bootcamp 2019 Strasbourg - Cosmos DBPhilippe Didiergeorges
 
Sql Server et SharePoint le couple de l'année 2012
Sql Server et SharePoint le couple de l'année 2012Sql Server et SharePoint le couple de l'année 2012
Sql Server et SharePoint le couple de l'année 2012Nicolas Georgeault
 
Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09Olivier Gutknecht
 
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOps@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOlivier DASINI
 
BBL - Monitoring - kyriba
BBL - Monitoring - kyribaBBL - Monitoring - kyriba
BBL - Monitoring - kyribaOlivier BAZOUD
 

Ähnlich wie Nantes JUG - Traçabilité dans une architecture distribuée avec Node.js et MongoDB (20)

Optimisation du stockage share point 2010
Optimisation du stockage share point 2010Optimisation du stockage share point 2010
Optimisation du stockage share point 2010
 
Orchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp DockerOrchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp Docker
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
 
Paris RailsCamp 2009
Paris RailsCamp 2009Paris RailsCamp 2009
Paris RailsCamp 2009
 
Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...
Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...
Prez -chtijug-29032016-(micro)services, loadbalancing et gestion des erreurs ...
 
Session GWT Devoxx France 2012 Cobra
Session GWT Devoxx France 2012 CobraSession GWT Devoxx France 2012 Cobra
Session GWT Devoxx France 2012 Cobra
 
JBoss clustering et tuning (lab 3/3)
JBoss clustering et tuning (lab 3/3)JBoss clustering et tuning (lab 3/3)
JBoss clustering et tuning (lab 3/3)
 
Administration glassfish 3
Administration glassfish 3Administration glassfish 3
Administration glassfish 3
 
Mysql
MysqlMysql
Mysql
 
Formation Google App Engine
Formation Google App EngineFormation Google App Engine
Formation Google App Engine
 
Azure Roadshow
Azure RoadshowAzure Roadshow
Azure Roadshow
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924
 
Comment reprendre un (gros) projet Ruby on Rails
Comment reprendre un (gros) projet Ruby on RailsComment reprendre un (gros) projet Ruby on Rails
Comment reprendre un (gros) projet Ruby on Rails
 
ArchiTech Load Balancing (NLB), Fermes et Jardins
ArchiTech Load Balancing (NLB), Fermes et JardinsArchiTech Load Balancing (NLB), Fermes et Jardins
ArchiTech Load Balancing (NLB), Fermes et Jardins
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSP
 
Global Azure Bootcamp 2019 Strasbourg - Cosmos DB
Global Azure Bootcamp 2019 Strasbourg - Cosmos DBGlobal Azure Bootcamp 2019 Strasbourg - Cosmos DB
Global Azure Bootcamp 2019 Strasbourg - Cosmos DB
 
Sql Server et SharePoint le couple de l'année 2012
Sql Server et SharePoint le couple de l'année 2012Sql Server et SharePoint le couple de l'année 2012
Sql Server et SharePoint le couple de l'année 2012
 
Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09
 
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOps@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
 
BBL - Monitoring - kyriba
BBL - Monitoring - kyribaBBL - Monitoring - kyriba
BBL - Monitoring - kyriba
 

Mehr von Sébastien Prunier

De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...
De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...
De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...Sébastien Prunier
 
De votre idée géniale à votre Minimum Viable Product - Rencontres National...
De votre idée géniale à votre Minimum Viable Product - Rencontres National...De votre idée géniale à votre Minimum Viable Product - Rencontres National...
De votre idée géniale à votre Minimum Viable Product - Rencontres National...Sébastien Prunier
 
MongoDB et Elasticsearch, meilleurs ennemis ?
MongoDB et Elasticsearch, meilleurs ennemis ?MongoDB et Elasticsearch, meilleurs ennemis ?
MongoDB et Elasticsearch, meilleurs ennemis ?Sébastien Prunier
 
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?Sébastien Prunier
 
[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...
[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...
[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...Sébastien Prunier
 
MongoDB Aggregation Framework in action !
MongoDB Aggregation Framework in action !MongoDB Aggregation Framework in action !
MongoDB Aggregation Framework in action !Sébastien Prunier
 
Refactoring avec 1,22% de code couvert par les tests ... Golden Master testin...
Refactoring avec 1,22% de code couvert par les tests ... Golden Master testin...Refactoring avec 1,22% de code couvert par les tests ... Golden Master testin...
Refactoring avec 1,22% de code couvert par les tests ... Golden Master testin...Sébastien Prunier
 
Nantes JUG - Les News - 2013-10-10
Nantes JUG - Les News - 2013-10-10Nantes JUG - Les News - 2013-10-10
Nantes JUG - Les News - 2013-10-10Sébastien Prunier
 
JugSummerCamp 2013 - Un backend NoSQL pour Geektic avec MongoDB
JugSummerCamp 2013 - Un backend NoSQL pour Geektic avec MongoDBJugSummerCamp 2013 - Un backend NoSQL pour Geektic avec MongoDB
JugSummerCamp 2013 - Un backend NoSQL pour Geektic avec MongoDBSébastien Prunier
 
Add BPM to your business applications with Bonita Open Solution - JugSummerCa...
Add BPM to your business applications with Bonita Open Solution - JugSummerCa...Add BPM to your business applications with Bonita Open Solution - JugSummerCa...
Add BPM to your business applications with Bonita Open Solution - JugSummerCa...Sébastien Prunier
 

Mehr von Sébastien Prunier (11)

De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...
De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...
De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...
 
De votre idée géniale à votre Minimum Viable Product - Rencontres National...
De votre idée géniale à votre Minimum Viable Product - Rencontres National...De votre idée géniale à votre Minimum Viable Product - Rencontres National...
De votre idée géniale à votre Minimum Viable Product - Rencontres National...
 
MongoDB et Elasticsearch, meilleurs ennemis ?
MongoDB et Elasticsearch, meilleurs ennemis ?MongoDB et Elasticsearch, meilleurs ennemis ?
MongoDB et Elasticsearch, meilleurs ennemis ?
 
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
 
[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...
[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...
[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...
 
MongoDB Aggregation Framework in action !
MongoDB Aggregation Framework in action !MongoDB Aggregation Framework in action !
MongoDB Aggregation Framework in action !
 
Refactoring avec 1,22% de code couvert par les tests ... Golden Master testin...
Refactoring avec 1,22% de code couvert par les tests ... Golden Master testin...Refactoring avec 1,22% de code couvert par les tests ... Golden Master testin...
Refactoring avec 1,22% de code couvert par les tests ... Golden Master testin...
 
Nantes JUG - Les News - 2013-10-10
Nantes JUG - Les News - 2013-10-10Nantes JUG - Les News - 2013-10-10
Nantes JUG - Les News - 2013-10-10
 
JugSummerCamp 2013 - Un backend NoSQL pour Geektic avec MongoDB
JugSummerCamp 2013 - Un backend NoSQL pour Geektic avec MongoDBJugSummerCamp 2013 - Un backend NoSQL pour Geektic avec MongoDB
JugSummerCamp 2013 - Un backend NoSQL pour Geektic avec MongoDB
 
Add BPM to your business applications with Bonita Open Solution - JugSummerCa...
Add BPM to your business applications with Bonita Open Solution - JugSummerCa...Add BPM to your business applications with Bonita Open Solution - JugSummerCa...
Add BPM to your business applications with Bonita Open Solution - JugSummerCa...
 
Nantes Jug - Java 7
Nantes Jug - Java 7Nantes Jug - Java 7
Nantes Jug - Java 7
 

Nantes JUG - Traçabilité dans une architecture distribuée avec Node.js et MongoDB

  • 1. Jérôme Creignou - @jcreignou Sébastien Prunier - @sebprunier
  • 2. Application Application Application ESB ESB ESB ESB Controler Rules Controler Service [R] Service [R] Service [W] Legacy Service [W] Mainframe SGBDR
  • 3. Load Balancer Cluster 1 Cluster 2 Service A Service A Service A Service A Service A Service A
  • 4. Application load bal. cluster cluster ESB ESB ESB ESB load bal. cluster cluster Serv. Serv. Serv. Serv. SGBDR
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10. Application load bal. cluster cluster ESB ESB ESB ESB load bal. cluster cluster Serv. Serv. Serv. Serv. SGBDR
  • 11.
  • 12.
  • 13. Application load bal. cluster cluster ESB ESB ESB ESB load bal. cluster cluster Serv. Serv. Serv. SGBDR
  • 14.
  • 15.
  • 16. Application load bal. cluster cluster ESB ESB ESB ESB load bal. cluster cluster Serv. Serv. Serv. Serv. SGBDR
  • 17.
  • 18.
  • 20. CREATE TABLE ALL_LOGS (DATA BLOB)  « On va abstraire la notion de log, créer un schéma pivot, des convertisseurs et … »
  • 21. * Log  Logarithme  John Neper  NepR
  • 22. Outil permettant de consolider un ensemble de traces (logs) techniques et applicatives et de les restituer selon plusieurs axes d’analyse.
  • 23. 1  Loguer dans des fichiers Log File org.apache.log4j.FileAppender  Données brutes
  • 24. 1  Que logue-t-on ? ◦ Horodatage ◦ Id unique de requête (RequestID) ◦ User ◦ Service et opération exécutée ◦ Machine, nœud du cluster ◦ Couche applicative ◦ Environnement (dev, re7, prod …) ◦ Temps d’exécution ◦ En cas d’erreur  Code d’erreur  Message  Stacktrace
  • 25. 1  RequestID ◦ ID unique généré pour chaque action utilisateur ◦ Transporté de couche en couche ◦ Permet de reconstruire l’enchaînement des services -Xrequestid=123456789 <soap:Header> <traces> <requestid>123456789</requestid> </traces> </soap:Header>
  • 26. 2  Loguer au plus proche de l’environnement d’exécution Log File Log File Log File  La perte d’informations est limitée
  • 27. 3  Consolider de manière asynchrone Log File Log File  Les performances ne sont pas impactées
  • 28. 4  Stocker de l’information structurée { ts : "2013-03-18…" , Log user : "johndoe", File service : "xxxxx", op : "abcdef", elapsed : "154" }  L’exploitation des informations est facilitée
  • 29. 5  Ne pas oublier de purger !  Les données brutes & les données consolidées
  • 30. nepr Log nepr console File agent Log nepr File File agent nepr server Log nepr File agent Log nepr nepr File agent db Objet « trace » Objet « perf » Objet « anomalie »
  • 31. Nepr agent & server : NodeJS ◦ Processus légers ◦ Simplicité de mise en œuvre ◦ Données structurées JSON  Nepr db : MongoDB ◦ Stockage de données hétérogènes (schema less) ◦ Gros volumes de données en écriture ◦ L’ « eventual consistency » n’est pas un problème ◦ Stockage JSON
  • 32. REST API ◦ POST  /data/:env/:couche/:machine ◦ GET  /perfs/:env/:service/:operation  /errors/:env/:service/:operation  /traces/:env/:requestid  /stats/:env/:service/:operation
  • 33. Map Reduce var mapFn = function () { emit({ service: this.service, operation: this.operation, couche: this.couche }, { count: 1, elapsed: this.elapsed }); }; var reduceFn = function (key, values) { var result = { count: 0, elapsed: 0 }; values.forEach(function (val) { result.count += val.count; result.elapsed += val.elapsed; }); return result; };
  • 34. Extraction de logs significatifs via des regexp ^ INFO|([0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3})|([^|]*)|([^|]*)|([^|]*)|([^|]*)|([^|]*) TIME-USED;(d*);0;0;  Envoi de données structurées au serveur { type:'perf', date:todate(m[1]), userid:m[2], sessionid:m[3], requestid:m[4], service:m[5], operation:m[6], elapsed:parseInt(m[7]) }
  • 35. Configurations centralisées sur le serveur nepr agent GET /conf/:env/ nepr server  Mise à jour via « svn update » / « git pull »
  • 36. Démonstration !