SlideShare una empresa de Scribd logo
1 de 70
Descargar para leer sin conexión
Monitoring Open Source pour Java avec
                          JmxTrans, Graphite et Nagios



                                                       27 au 29 mars 2013
Wednesday, March 27, 13
Speaker


                     @cyrilleleclerc             CTO
                                                            Architect


                              Cyrille Le Clerc
                                                       Fort Traffic

                                                 Cloud, DevOps
                          Open Source

Wednesday, March 27, 13
Speaker


                     @hgomez                      Architecte CI


                                Henri Gomez
                                                       Intégration Continue

                                              DevOps
                          Open Source

Wednesday, March 27, 13
Vous ?




                             Dev ? Qa ? Ops ?
                          Expérience monitoring ?
Wednesday, March 27, 13
Agenda




                                   27 au 29 mars 2013
Wednesday, March 27, 13
Agenda

           • L’application
           • Le monitoring à réaliser
           • Instrumenter une webapp Java avec JMX
           • Monitorer
               •      Grapher avec Graphite
               •      Alerter avec Seyren (et Nagios)
           • Monitoring & Continuous Delivery
           • Déploiement de Graphite
           • Conclusion
Wednesday, March 27, 13
Votre mission, si toutefois vous
                           l’acceptez ...

                 e-commerce SOS Cocktails
                                               http://www.flickr.com/photos/23791504@N08/2607814349




                          Mettre en place le monitoring technique et métier




Wednesday, March 27, 13
o
    m                     SOS Cocktail
Dé




Wednesday, March 27, 13
Les indicateurs à monitorer




                                Pourquoi Monitorer ?
                                      Quoi ?




                                                        27 au 29 mars 2013
Wednesday, March 27, 13
Les indicateurs à monitorer




Wednesday, March 27, 13
Les Indicateurs à monitorer

           • Operating System -> Sysload
           • JVM -> GC duration
           • Tomcat -> activeSessions (active visitors)
           • Application -> sales revenue & items

Wednesday, March 27, 13
Open Source Monitoring for Java
                                                                Dashboard - wiki
      eCommerce Web Site              (4)   Graphite




                                                                  Email

               (1)
                                (3)                               Seyren (5)
                          (2)

                                                       Nagios




Wednesday, March 27, 13
JMX & Métriques




                                            27 au 29 mars 2013
Wednesday, March 27, 13
Pourquoi JMX ?

           • JMX vs. pages web vs. logs vs. ...
           • Simple et sécurisé
           • Exposable vers pages web et les logs
           • Des alternatives à JMX

Wednesday, March 27, 13
JMX vs. logs vs. pages web vs. ...

           • Logs de monitoring
               •      Parser des Go de fichiers texte ?
               •      Détail par invocation vs. moyenne par minute


           • Pages web
               •      Historisation ?
               •      Applications en clusters ?
               •      Sécurité ?


Wednesday, March 27, 13
JMX avec Spring
   <beans	
  ...>
   	
  	
  	
  ...
   	
  	
  	
  <context:mbean-­‐export/>
   	
  	
  	
  ...
   </beans>
                          @ManagedResource("cocktail:name=ShoppingCartController,type=...")
                          class	
  ShoppingCartController	
  {
                          	
  	
  	
  	
  
                          	
  final	
  AtomicInteger	
  revenueInCentsCounter	
  =	
  new	
  AtomicInteger();

                          	
  @ManagedAttribute
                          	
  public	
  int	
  getRevenueInCentsCounter()	
  {
                          	
  	
  return	
  revenueInCentsCounter.get();
                          	
  }
                          	
  	
  	
  	
  
                          	
  void	
  purchase(...){
                          	
  	
  	
  ...
                          	
  	
  	
  revenueInCentsCounter.addAndGet(priceInCents);
                          	
  }


Wednesday, March 27, 13
JMX




Wednesday, March 27, 13
JMX & JSP                                                                                       Powered by JMX!


                                                                             Human readable et script friendly
                                                                             Attention sécurité !



            $	
  curl	
  http://demo-­‐cocktail.jmxtrans.cloudbees.net/5ADrUWr5/jmx-­‐sales-­‐metrics.txt.jsp
            Epoch	
   SalesRevenueInCentsCounter	
   SalesItemsCounter	
      SalesOrdersCounter
            1363217376	
        4500	
   7	
     2



                                                            curl	
  http://demo-­‐cocktail.jmxtrans.cloudbees.net/5ADrUWr5/...
                                                            {
                                                            	
  	
  "Epoch":1363217653,
                                                            	
  	
  "SalesRevenueInCentsCounter":4050,
                                                            	
  	
  "SalesItemsCounter":7,
                                                            	
  	
  "SalesOrdersCounter":2
                                                            }
      http://demo-cocktail.jmxtrans.cloudbees.net/jmx.jsp


Wednesday, March 27, 13
JMX & JSP                                                /5ADrUWr5/jmx-sales-metrics.jsp
                                                                                                      Powered by JMX!


                                                                                  Human readable et script friendly
                                                                                  Attention sécurité !



            $	
  curl	
  http://demo-­‐cocktail.jmxtrans.cloudbees.net/5ADrUWr5/jmx-­‐sales-­‐metrics.txt.jsp
            Epoch	
   SalesRevenueInCentsCounter	
   SalesItemsCounter	
      SalesOrdersCounter
            1363217376	
        4500	
   7	
     2



                                                                curl	
  http://demo-­‐cocktail.jmxtrans.cloudbees.net/5ADrUWr5/...
                                                                {
                                                                	
  	
  "Epoch":1363217653,
                                                                	
  	
  "SalesRevenueInCentsCounter":4050,
                                                                	
  	
  "SalesItemsCounter":7,
                                                                	
  	
  "SalesOrdersCounter":2
                                                                }
      http://demo-cocktail.jmxtrans.cloudbees.net/jmx.jsp


Wednesday, March 27, 13
JMX & JSP
                          Po
                             wer
                                 ed
                                      by
                                           JM
                                             X!




Wednesday, March 27, 13
Alternatives à JMX




Wednesday, March 27, 13
Alternatives à JMX


                          Servo                                                     )            teger()
                                                                                                        ;
                                                           er	
  {         COUNTER ew	
  AtomicIn
                                                    ontroll ts",	
  type= ter	
  =	
  n
                                       oppin  gCartC ueInCen          ntsCoun
                                                      n
            cl      ass	
  Sh name="reve revenueInCe
            	
  @Mo          nitor( icInteger	
  
                                           m
              	
  fin          al	
  Ato
                                                    ) {                          C  ents);
                	
  	
  	
  	
               ase(...                      priceIn
                 	
  void         	
  purch                        AndGet(
                                                        ter.add
                   	
  	
  	
   ...              ntsCoun
                                         nueInCe
                    	
   	
  	
  reve
                      	
  }




Wednesday, March 27, 13
Alternatives à JMX
                                                      Metrics
                                                       class	
  Shopp
                                                                                                 ingCartCont
                                                      	
  	
  	
  	
                                            roller	
  {
                                                     	
  final	
  Coun
                                  Servo             	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
                                                                                                 ter	
  revenue
                                                                                                                InCentsCoun
                                                                                                                    )       ter	
  =t eger()
                                                                                                                                            ;
                                                   	
  ntrolle                     r	
  { 	
  	
  	
  Shpe=COUNTER ew	
  AtomicIn 	
  Metrics.new
                                                                                                         oppingCartC
                                                        	
                                             y                                           Counter(
                                            artCo 	
  	
   nCents",	
  t Counter	
  =	
  nontroller,	
  "revenue-­‐
                                  Sho ppingC ev	
  void	
  purcInCents
                                                    enueI ue hase(..                                                                          in-­‐cents");
            class	
   r(name="r 	
  	
  	
  ...en      r rev
                                                                                                          .){
                                   o              e
            	
  @Monit tomicInteg	
  	
  	
  re
                       inal	
  A                                      venueInCent
              	
  f                             	
  } {                                                 sCounter.in ts);
                             	
               ...)                                                                   c(
                                                                                                                 InCen priceInCents);
                	
  	
  	
                  (                                                                  e
                                     urchase                                                           e t(pric
                 	
   void	
  p                                                     a   ddAndG
                                                         o   unter.
                   	
  	
  	
  ... nueInCentsC
                    	
   	
  	
  reve
                      	
  }




Wednesday, March 27, 13
JMX




        •OS: Sysload
        •JVM: Garbage Collector
        •Tomcat: activeSessions
        •Application: Web Site Revenue

Wednesday, March 27, 13
jmxtrans & embedded-jmxtrans




                                              27 au 29 mars 2013
Wednesday, March 27, 13
jmxtrans - standalone
                          ecommerce
                             Tomcat



                          logistics                        Graphite
                           Tomcat



                          accounting
                            Tomcat



                                                               ...
                                       jmxtrans - standalone


Wednesday, March 27, 13
embedded-jmxtrans
                          ecommerce
                              Tomcat
                                            Graphite

                            logistics       Librato
                            Tomcat



                          accounting
                                             ...
                            Tomcat



                             batch
                                        embedded-jmxtrans



Wednesday, March 27, 13
standalone vs. embedded
                             standalone                           embedded


             Packaging

                            daemon externe, raccordement          agent embarqué, applications &
               Modèle        manuel des applications & des         indicateurs auto-raccordés /
                                     indicateurs                            autonomes

              Curseur            OPS -♦----------- DEV                OPS ----------♦-- DEV

                          applis “peu modifiables”, middlewares,           cloud, batch,
              Use case
                                      curseur OPS                       curseur DEV/QA

Wednesday, March 27, 13
jmxtrans & embedded-jmxtrans


                          SOS Cocktail   Graphite




                           embedded




Wednesday, March 27, 13
embedded-jmxtrans configuration




Wednesday, March 27, 13
embedded-jmxtrans configuration
       <dependency>
       	
  	
  <groupId>org.jmxtrans.embedded</groupId>
       	
  	
  <artifactId>embedded-­‐jmxtrans</artifactId>
       	
  	
  <version>1.0.5</version>
       </dependency>




Wednesday, March 27, 13
embedded-jmxtrans configuration
       <dependency>
       	
  	
  <groupId>org.jmxtrans.embedded</groupId>
       	
  	
  <artifactId>embedded-­‐jmxtrans</artifactId>
       	
  	
  <version>1.0.5</version>
       </dependency>




      <beans	
  ...
      	
  	
  xmlns:jmxtrans="http://www.jmxtrans.org/schema/embedded"
      	
  	
  xsi:schemaLocation="...
      	
  	
  	
  	
  http://www.jmxtrans.org/schema/embedded	
  ...”>

      	
  	
  <jmxtrans:jmxtrans>
      	
  	
  	
  	
  <jmxtrans:configuration>classpath:jmxtrans.json</jmxtrans:configuration>
      	
  	
  	
  	
  ...
      	
  	
  </jmxtrans:jmxtrans>
      </beans>




Wednesday, March 27, 13
embedded-jmxtrans configuration
       <dependency>
       	
  	
  <groupId>org.jmxtrans.embedded</groupId>                {
       	
  	
  <artifactId>embedded-­‐jmxtrans</artifactId>            	
  	
  "queries":	
  [
       	
  	
  <version>1.0.5</version>                                	
  	
  	
  	
  	
  	
  {
       </dependency>                                                   	
  	
  	
  	
  	
  	
  "objectName":	
  "cocktail:name=ShoppingCartController",
                                                                       	
  	
  	
  	
  	
  	
  "resultAlias":	
  "sales",
                                                                       	
  	
  	
  	
  	
  	
  "attributes":	
  ["SalesRevenueInCentsCounter"]
                                                                       	
  	
  	
  	
  },
                                                                       	
  	
  ],
                                                                       	
  	
  "outputWriters":	
  [
      <beans	
  ...                                                    	
  	
  	
  	
  {
      	
  	
  xmlns:jmxtrans="http://www.jmxtrans.org/schema/embedded" 	
  	
  	
  	
  	
  	
  "@class":	
  "org.jmxtrans.embedded.output.GraphiteWriter",
      	
  	
  xsi:schemaLocation="...                                  	
  	
  	
  	
  	
  	
  "settings":	
  {
      	
  	
  	
  	
  http://www.jmxtrans.org/schema/embedded	
  ...”> 	
  	
  	
  	
  	
  	
  	
  	
  "host":	
  "${graphite.host:localhost}",
                                                                       	
  	
  	
  	
  	
  	
  	
  	
  "port":	
  "${graphite.port:2003},"
      	
  	
  <jmxtrans:jmxtrans>                                      	
  	
  	
  	
  	
  	
  	
  	
  "enabled":	
  "${graphite.enabled:true}"
      	
  	
  	
  	
  <jmxtrans:configuration>classpath:jmxtrans.json</jmxtrans:configuration>
                                                                       	
  	
  	
  	
  	
  	
  }
      	
  	
  	
  	
  ...                                              	
  	
  	
  	
  }
      	
  	
  </jmxtrans:jmxtrans>                                     	
  	
  ]
      </beans>                                                         }




Wednesday, March 27, 13
jmxtrans




        •OS: Sysload
        •JVM: Garbage Collector
        •Tomcat: activeSessions
        •Application: Web Site Revenue

Wednesday, March 27, 13
Graphite




                                     27 au 29 mars 2013
Wednesday, March 27, 13
Graphite

      • BD de Time Series et solution de Graphe
      • Utilisé par des grands du Web
      • Similaires

                          Simplicité et Self Service
Wednesday, March 27, 13
Ecriture / Alimentation

           • Création automatique des métriques
           • Protocoles socket “plain text” & sérialisation Python Pickle
                   echo	
  "devoxx.happyCounter	
  1.2	
  1364338989"	
  |	
  nc	
  localhost	
  2003




           • Précision et durée de stockage par configuration
                    [sales_1min_for_15days_5min_for_1year]
                    pattern	
  =	
  ^sales.
                                                                                             1.7MB
                    retentions	
  =	
  60s:30d,300s:365d



Wednesday, March 27, 13
Lecture / Consommation

           • Composer de graphe & URL API
           • Tout le monde peut créer ses graphes
           • Fonctions Riches
             •            sum, scale, derivative, timeshift, deviation, filter, ...

           • Exports variés :                       png, svg, csv, json, raw text




Wednesday, March 27, 13
Graphes et monitoring




                                                  27 au 29 mars 2013
Wednesday, March 27, 13
Demo Graphite sur le Cloud

           • http://hostedgraphite.com/                1   email: admin@jmxtrans.org
                                                           password: devoxx2013


           • Graphite as a Service                     2
               •      Pas de ‘tracas’ d’installation
               •      addons: Tasseo
               •      No-OPS

                                                       3



Wednesday, March 27, 13
Les métriques
                              Gauge                                              Ever Increasing Counter




       •     Exemples: activeRequests, dataSource.activeConnection, ...   •   Exemples: requestsCount, revenue, ...
       •     Information exploitable immédiatement                        •   Conversion nécessaire en “par minute”




Wednesday, March 27, 13
Des graphes et des formules


                                      ?



            Ever Increasing Counter       Revenue per Second




Wednesday, March 27, 13
Des graphes et des formules


                                  derivative()
                                       ?



            Ever Increasing Counter              Revenue per Second




Wednesday, March 27, 13
Des graphes et des formules


                                     ?



            Per Second -> Per Hour       Revenue per Hour




Wednesday, March 27, 13
Des graphes et des formules


                                summarize()
                                    ?



            Per Second -> Per Hour            Revenue per Hour




Wednesday, March 27, 13
Des graphes et des formules


                                      ?


                          2 servers       Total Revenue per Hour




Wednesday, March 27, 13
Des graphes et des formules


                                      sumSeries()
                                          ?


                          2 servers                 Total Revenue per Hour




Wednesday, March 27, 13
Des graphes et des formules


                                           ?


                                               Ignore reset to zero
                          server restart



Wednesday, March 27, 13
Des graphes et des formules


                          nonNegativeDerivative()
                                    ?


                                             Ignore reset to zero
                          server restart



Wednesday, March 27, 13
Des graphes et des formules




    Compare to            ?
     last week




Wednesday, March 27, 13
Des graphes et des formules




    Compare to            timeShift()
                            ?
     last week




Wednesday, March 27, 13
Des graphes et des formules




        •OS: Sysload
        •JVM: Garbage Collector
        •Tomcat: activeSessions
        •Application: Web Site Revenue

Wednesday, March 27, 13
Dashoards Wiki
    dashboard.prod.md
      #	
  Sales

      <table>
      <tr>
      	
  	
  <td>
      	
  	
  	
  	
  <img	
  src="http://graphite.prod.mycompany/graphite/render/?
      width=400&height=300&title=Revenue&xFormat=%25a%20%25d
      %25p&vtitle=USD&lineWidth=3&from=-­‐5days&target=alias(scale(summarize(sumS
      eries(nonNegativeDerivative(edu.servers.*.sales.revenueInCentsCounter))
      %2C%221h%22)%2C0.01)%2C%22Revenue%20per%20Hour%22)...">
      	
  	
  	
  	
  </td>
      	
  	
  	
  	
  <td>
      	
  	
  	
  	
  	
  	
  	
  	
  <img	
  src="http://graphite.prod.mycompany/graphite/render/?...">
      	
  	
  	
  	
  </td>
      <tr>
      </table>
                                                                                                                                                                             Wiki




                                                                                                 https://github.com/jmxtrans/embedded-jmxtrans-samples/wiki/Dashboard-PROD

Wednesday, March 27, 13
Dashoards by Email

          Envoyer les graphes par email




Wednesday, March 27, 13
L’alerting




                          Intégrer Graphite à de l’alerting
                                     URL Api
                                      Seyren
                                      Nagios


                                                              27 au 29 mars 2013
Wednesday, March 27, 13
Intégrer Graphite à l’alerting

           • Utiliser l’URL API
           • Format rawText ou JSON
           • Pattern                  /render?from=-­‐11minutes&until=-­‐1minutes&format=raw&target=****




               Exemple

                $	
  curl	
  "http://graphite.exemple.com/render?from=-­‐11minutes&until=-­‐1minutes&format=raw&
                	
  	
  	
  target=keepLastValue(servers.cloudbees.jvm.os.SystemLoadAverage)"	
  

                my-­‐metric,1363225680,1363226340,60|0.03,0.01,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0




Wednesday, March 27, 13
Alerting - Seyren

           • Alerting Dashboard for Graphite
           • Open Source
           • Java .war + MongoDB
           • Alertes email, PagerDuty, ...



Wednesday, March 27, 13
Alerting - Seyren
                                         http://seyren.jmxtrans.cloudbees.net/




        •OS: Sysload
        •JVM: Garbage Collector
        •Tomcat: activeSessions
        •Application: Web Site Revenue

Wednesday, March 27, 13
Nagios

           • Infrastructure Monitoring
           • Open Source
           • Standard de facto en entreprise
           • check_graphite plugin
               •      Pierre-Yves Ritschard
               •      Jason Dixon / obfuscurity



Wednesday, March 27, 13
Monitoring & Continuous
                                  Delivery




                                                    27 au 29 mars 2013
Wednesday, March 27, 13
Monitoring & Continuous Delivery

           • Livrer le monitoring avec l’application
               •      Les indicateurs
               •      Les dashboards
           • Builder en continue les configs par environnement
               •      Require: topologie des environnements intégrées au build
               •      Déploiement sur un repo (Maven, ...)
           • Déployer en automatique le monitoring

Wednesday, March 27, 13
Monitoring & Continuous Delivery
                                                                                                           StringTemplate
                                  src/main/graphite/dashboard.template.md
                          Cocktail	
  App	
  Dashboards	
  -­‐	
  ${environment}	
  -­‐	
  ${version}
                          #	
  Sales

                          <table>                                                                          ${variable}
                          <tr>
                          	
  	
  <td>
                          	
  	
  	
  	
  <img	
  src="${graphite.baseUrl}/render/?
                          width=400&height=300&title=Revenue&xFormat=%25a%20%25d
                          %25p&vtitle=USD&lineWidth=3&from=-­‐5days&target=alias(scale(summarize(sumS
                          eries(nonNegativeDerivative(edu.servers.*.sales.revenueInCentsCounter))
                          %2C%221h%22)%2C0.01)%2C%22Revenue%20per%20Hour%22)...">
                          	
  	
  	
  	
  </td>
                          	
  	
  	
  	
  <td>
                          	
  	
  	
  	
  	
  	
  	
  	
  <img	
  src="${graphite.baseUrl}/render/?...">
                          	
  	
  	
  	
  </td>
                          <tr>
                          </table>



                                                    Dashboard template

Wednesday, March 27, 13
Monitoring & Continuous Delivery
                       dashboard.template.md                                                                            dashboard.PROD.md
                                                                                                      pom.xml
                                                                                               <gmaven-plugin>
                                                                                                                              ...

                    PROD-env-topology.json                                                                                dashboard.QA.md

                                ...
                        QA-env-topology.json


                                                                                                                 repository
                      dashboard-generator.groovy

                                                 Monitoring dashboards Continuous Integration
 https://github.com/jmxtrans/embedded-jmxtrans-samples/wiki/Monitoring-Continuous-Deployment


Wednesday, March 27, 13
Déploiement de Graphite




                                                    27 au 29 mars 2013
Wednesday, March 27, 13
Déploiement de Graphite




Wednesday, March 27, 13
Cadeau bonus !




                                           27 au 29 mars 2013
Wednesday, March 27, 13
Promo Code

           • http://hostedgraphite.com/
           • 60 days trial with “DEVOXX” promo code
                                               (2) Enter Promo Code “DEVOXX”




                      (1) Signup

                help: cleclerc@cloudbees.com    (3) Promo Code “DEVOXX”

Wednesday, March 27, 13
Conclusion




                                       27 au 29 mars 2013
Wednesday, March 27, 13
Conclusion

           • Monitoring technique et métier
           • Monitoring intégrée au Continuous Delivery de l’appli
           • L’approche self-service transforme le monitoring
           • Solutions Open Source disponibles


                                    Monitoring no longer sucks in Java!
 http://lusislog.blogspot.fr/2011/06/why-monitoring-sucks.html


Wednesday, March 27, 13
http://demo-cocktail.jmxtrans.cloudbees.net/   http://jmxtrans.org/
Wednesday, March 27, 13

Más contenido relacionado

La actualidad más candente

Front end microservices - October 2019
Front end microservices - October 2019Front end microservices - October 2019
Front end microservices - October 2019Mikhail Kuznetcov
 
'Architecture of modern frontend apps' by YURIY DOBRYANSKYY at OdessaJS'2020
'Architecture of modern frontend apps' by YURIY DOBRYANSKYY at OdessaJS'2020'Architecture of modern frontend apps' by YURIY DOBRYANSKYY at OdessaJS'2020
'Architecture of modern frontend apps' by YURIY DOBRYANSKYY at OdessaJS'2020OdessaJS Conf
 
Backday Xebia : Découvrez Spring Boot sur un cas pratique
Backday Xebia : Découvrez Spring Boot sur un cas pratiqueBackday Xebia : Découvrez Spring Boot sur un cas pratique
Backday Xebia : Découvrez Spring Boot sur un cas pratiquePublicis Sapient Engineering
 
Build web apps with react js
Build web apps with react jsBuild web apps with react js
Build web apps with react jsdhanushkacnd
 
EWD 3 Training Course Part 15: Using a Framework other than jQuery with QEWD
EWD 3 Training Course Part 15: Using a Framework other than jQuery with QEWDEWD 3 Training Course Part 15: Using a Framework other than jQuery with QEWD
EWD 3 Training Course Part 15: Using a Framework other than jQuery with QEWDRob Tweed
 
Tracking Performance - Velocity NYC 2013
Tracking Performance - Velocity NYC 2013Tracking Performance - Velocity NYC 2013
Tracking Performance - Velocity NYC 2013Patrick Meenan
 
Building a Startup Stack with AngularJS
Building a Startup Stack with AngularJSBuilding a Startup Stack with AngularJS
Building a Startup Stack with AngularJSFITC
 
Delayed operations with queues for website performance
Delayed operations with queues for website performanceDelayed operations with queues for website performance
Delayed operations with queues for website performanceOSInet
 
JDD2015: In English Efficient HTTP applications on the JVM with Ratpack - Álv...
JDD2015: In English Efficient HTTP applications on the JVM with Ratpack - Álv...JDD2015: In English Efficient HTTP applications on the JVM with Ratpack - Álv...
JDD2015: In English Efficient HTTP applications on the JVM with Ratpack - Álv...PROIDEA
 
Google Page Insights and Magento 2 — Sergey Nezbritskiy | Magento Meetup Onli...
Google Page Insights and Magento 2 — Sergey Nezbritskiy | Magento Meetup Onli...Google Page Insights and Magento 2 — Sergey Nezbritskiy | Magento Meetup Onli...
Google Page Insights and Magento 2 — Sergey Nezbritskiy | Magento Meetup Onli...Magecom UK Limited
 

La actualidad más candente (13)

Front end microservices - October 2019
Front end microservices - October 2019Front end microservices - October 2019
Front end microservices - October 2019
 
'Architecture of modern frontend apps' by YURIY DOBRYANSKYY at OdessaJS'2020
'Architecture of modern frontend apps' by YURIY DOBRYANSKYY at OdessaJS'2020'Architecture of modern frontend apps' by YURIY DOBRYANSKYY at OdessaJS'2020
'Architecture of modern frontend apps' by YURIY DOBRYANSKYY at OdessaJS'2020
 
Backday Xebia : Découvrez Spring Boot sur un cas pratique
Backday Xebia : Découvrez Spring Boot sur un cas pratiqueBackday Xebia : Découvrez Spring Boot sur un cas pratique
Backday Xebia : Découvrez Spring Boot sur un cas pratique
 
Why Concurrency is hard ?
Why Concurrency is hard ?Why Concurrency is hard ?
Why Concurrency is hard ?
 
Java concurrency
Java concurrencyJava concurrency
Java concurrency
 
Build web apps with react js
Build web apps with react jsBuild web apps with react js
Build web apps with react js
 
EWD 3 Training Course Part 15: Using a Framework other than jQuery with QEWD
EWD 3 Training Course Part 15: Using a Framework other than jQuery with QEWDEWD 3 Training Course Part 15: Using a Framework other than jQuery with QEWD
EWD 3 Training Course Part 15: Using a Framework other than jQuery with QEWD
 
Tracking Performance - Velocity NYC 2013
Tracking Performance - Velocity NYC 2013Tracking Performance - Velocity NYC 2013
Tracking Performance - Velocity NYC 2013
 
Building a Startup Stack with AngularJS
Building a Startup Stack with AngularJSBuilding a Startup Stack with AngularJS
Building a Startup Stack with AngularJS
 
Delayed operations with queues for website performance
Delayed operations with queues for website performanceDelayed operations with queues for website performance
Delayed operations with queues for website performance
 
Learn react-js
Learn react-jsLearn react-js
Learn react-js
 
JDD2015: In English Efficient HTTP applications on the JVM with Ratpack - Álv...
JDD2015: In English Efficient HTTP applications on the JVM with Ratpack - Álv...JDD2015: In English Efficient HTTP applications on the JVM with Ratpack - Álv...
JDD2015: In English Efficient HTTP applications on the JVM with Ratpack - Álv...
 
Google Page Insights and Magento 2 — Sergey Nezbritskiy | Magento Meetup Onli...
Google Page Insights and Magento 2 — Sergey Nezbritskiy | Magento Meetup Onli...Google Page Insights and Magento 2 — Sergey Nezbritskiy | Magento Meetup Onli...
Google Page Insights and Magento 2 — Sergey Nezbritskiy | Magento Meetup Onli...
 

Similar a Monitoring Open Source pour Java avec JmxTrans, Graphite et Nagios - DevoxxFR 2013

Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)Cyrille Le Clerc
 
Opencensus with prometheus and kubernetes
Opencensus with prometheus and kubernetesOpencensus with prometheus and kubernetes
Opencensus with prometheus and kubernetesJinwoong Kim
 
Nodeconf AR 18 Decomposition of the Main thread in Node.js to increase throug...
Nodeconf AR 18 Decomposition of the Main thread in Node.js to increase throug...Nodeconf AR 18 Decomposition of the Main thread in Node.js to increase throug...
Nodeconf AR 18 Decomposition of the Main thread in Node.js to increase throug...Nikolay Matvienko
 
OpenCensus with Prometheus and Kubernetes
OpenCensus with Prometheus and KubernetesOpenCensus with Prometheus and Kubernetes
OpenCensus with Prometheus and KubernetesJinwoong Kim
 
PostgreSQL Monitoring using modern software stacks
PostgreSQL Monitoring using modern software stacksPostgreSQL Monitoring using modern software stacks
PostgreSQL Monitoring using modern software stacksShowmax Engineering
 
Monitoring using Prometheus and Grafana
Monitoring using Prometheus and GrafanaMonitoring using Prometheus and Grafana
Monitoring using Prometheus and GrafanaArvind Kumar G.S
 
手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務Mu Chun Wang
 
How to monitor your micro-service with Prometheus?
How to monitor your micro-service with Prometheus?How to monitor your micro-service with Prometheus?
How to monitor your micro-service with Prometheus?Wojciech Barczyński
 
JavaFX / JacpFX interaction with JSR356 WebSockets
JavaFX / JacpFX interaction with JSR356 WebSocketsJavaFX / JacpFX interaction with JSR356 WebSockets
JavaFX / JacpFX interaction with JSR356 WebSocketsAndy Moncsek
 
Atlanta JUG - Integrating Spring Batch and Spring Integration
Atlanta JUG - Integrating Spring Batch and Spring IntegrationAtlanta JUG - Integrating Spring Batch and Spring Integration
Atlanta JUG - Integrating Spring Batch and Spring IntegrationGunnar Hillert
 
Threads Needles Stacks Heaps - Java edition
Threads Needles Stacks Heaps - Java editionThreads Needles Stacks Heaps - Java edition
Threads Needles Stacks Heaps - Java editionOvidiu Dimulescu
 
Oleksandr Smoktal "Parallel Seismic Data Processing Using OpenMP"
Oleksandr Smoktal "Parallel Seismic Data Processing Using OpenMP"Oleksandr Smoktal "Parallel Seismic Data Processing Using OpenMP"
Oleksandr Smoktal "Parallel Seismic Data Processing Using OpenMP"LogeekNightUkraine
 
Internet Explorer 10とマイクロソフトにとってのHTML5 in 岡山
Internet Explorer 10とマイクロソフトにとってのHTML5 in 岡山Internet Explorer 10とマイクロソフトにとってのHTML5 in 岡山
Internet Explorer 10とマイクロソフトにとってのHTML5 in 岡山Microsoft
 
Кирилл Толкачев. Микросервисы: огонь, вода и девопс
Кирилл Толкачев. Микросервисы: огонь, вода и девопсКирилл Толкачев. Микросервисы: огонь, вода и девопс
Кирилл Толкачев. Микросервисы: огонь, вода и девопсScrumTrek
 
Tomaszewski, Mark - Thesis Slides: Application of Consumer-Off-The-Shelf (COT...
Tomaszewski, Mark - Thesis Slides: Application of Consumer-Off-The-Shelf (COT...Tomaszewski, Mark - Thesis Slides: Application of Consumer-Off-The-Shelf (COT...
Tomaszewski, Mark - Thesis Slides: Application of Consumer-Off-The-Shelf (COT...Mark Tomaszewski
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolithMarkus Eisele
 
Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...
Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...
Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...Fabrice Bernhard
 

Similar a Monitoring Open Source pour Java avec JmxTrans, Graphite et Nagios - DevoxxFR 2013 (20)

Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
Open Source Monitoring for Java with JMX and Graphite (GeeCON 2013)
 
Opencensus with prometheus and kubernetes
Opencensus with prometheus and kubernetesOpencensus with prometheus and kubernetes
Opencensus with prometheus and kubernetes
 
Nodeconf AR 18 Decomposition of the Main thread in Node.js to increase throug...
Nodeconf AR 18 Decomposition of the Main thread in Node.js to increase throug...Nodeconf AR 18 Decomposition of the Main thread in Node.js to increase throug...
Nodeconf AR 18 Decomposition of the Main thread in Node.js to increase throug...
 
OpenCensus with Prometheus and Kubernetes
OpenCensus with Prometheus and KubernetesOpenCensus with Prometheus and Kubernetes
OpenCensus with Prometheus and Kubernetes
 
PostgreSQL Monitoring using modern software stacks
PostgreSQL Monitoring using modern software stacksPostgreSQL Monitoring using modern software stacks
PostgreSQL Monitoring using modern software stacks
 
Monitoring using Prometheus and Grafana
Monitoring using Prometheus and GrafanaMonitoring using Prometheus and Grafana
Monitoring using Prometheus and Grafana
 
手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務
 
SignalR
SignalRSignalR
SignalR
 
How to monitor your micro-service with Prometheus?
How to monitor your micro-service with Prometheus?How to monitor your micro-service with Prometheus?
How to monitor your micro-service with Prometheus?
 
JavaFX / JacpFX interaction with JSR356 WebSockets
JavaFX / JacpFX interaction with JSR356 WebSocketsJavaFX / JacpFX interaction with JSR356 WebSockets
JavaFX / JacpFX interaction with JSR356 WebSockets
 
Principios básicos de Garbage Collector en Java
Principios básicos de Garbage Collector en JavaPrincipios básicos de Garbage Collector en Java
Principios básicos de Garbage Collector en Java
 
Nuxeo 5.2 Glassfish
Nuxeo 5.2 GlassfishNuxeo 5.2 Glassfish
Nuxeo 5.2 Glassfish
 
Atlanta JUG - Integrating Spring Batch and Spring Integration
Atlanta JUG - Integrating Spring Batch and Spring IntegrationAtlanta JUG - Integrating Spring Batch and Spring Integration
Atlanta JUG - Integrating Spring Batch and Spring Integration
 
Threads Needles Stacks Heaps - Java edition
Threads Needles Stacks Heaps - Java editionThreads Needles Stacks Heaps - Java edition
Threads Needles Stacks Heaps - Java edition
 
Oleksandr Smoktal "Parallel Seismic Data Processing Using OpenMP"
Oleksandr Smoktal "Parallel Seismic Data Processing Using OpenMP"Oleksandr Smoktal "Parallel Seismic Data Processing Using OpenMP"
Oleksandr Smoktal "Parallel Seismic Data Processing Using OpenMP"
 
Internet Explorer 10とマイクロソフトにとってのHTML5 in 岡山
Internet Explorer 10とマイクロソフトにとってのHTML5 in 岡山Internet Explorer 10とマイクロソフトにとってのHTML5 in 岡山
Internet Explorer 10とマイクロソフトにとってのHTML5 in 岡山
 
Кирилл Толкачев. Микросервисы: огонь, вода и девопс
Кирилл Толкачев. Микросервисы: огонь, вода и девопсКирилл Толкачев. Микросервисы: огонь, вода и девопс
Кирилл Толкачев. Микросервисы: огонь, вода и девопс
 
Tomaszewski, Mark - Thesis Slides: Application of Consumer-Off-The-Shelf (COT...
Tomaszewski, Mark - Thesis Slides: Application of Consumer-Off-The-Shelf (COT...Tomaszewski, Mark - Thesis Slides: Application of Consumer-Off-The-Shelf (COT...
Tomaszewski, Mark - Thesis Slides: Application of Consumer-Off-The-Shelf (COT...
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolith
 
Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...
Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...
Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...
 

Más de Cyrille Le Clerc

Embracing Observability in CI/CD with OpenTelemetry
Embracing Observability in CI/CD with OpenTelemetryEmbracing Observability in CI/CD with OpenTelemetry
Embracing Observability in CI/CD with OpenTelemetryCyrille Le Clerc
 
Joe Mobile sur le Cloud - DevoxxFR 2013
Joe Mobile sur le Cloud - DevoxxFR 2013Joe Mobile sur le Cloud - DevoxxFR 2013
Joe Mobile sur le Cloud - DevoxxFR 2013Cyrille Le Clerc
 
Paris Devops - Monitoring And Feature Toggle Pattern With JMX
Paris Devops - Monitoring And Feature Toggle Pattern With JMXParis Devops - Monitoring And Feature Toggle Pattern With JMX
Paris Devops - Monitoring And Feature Toggle Pattern With JMXCyrille Le Clerc
 
Paris NoSQL User Group - In Memory Data Grids in Action (without transactions...
Paris NoSQL User Group - In Memory Data Grids in Action (without transactions...Paris NoSQL User Group - In Memory Data Grids in Action (without transactions...
Paris NoSQL User Group - In Memory Data Grids in Action (without transactions...Cyrille Le Clerc
 
GeeCon 2011 - NoSQL and In Memory Data Grids from a developer perspective
GeeCon 2011 - NoSQL and In Memory Data Grids from a developer perspectiveGeeCon 2011 - NoSQL and In Memory Data Grids from a developer perspective
GeeCon 2011 - NoSQL and In Memory Data Grids from a developer perspectiveCyrille Le Clerc
 
Java Application Monitoring with AppDynamics' Founder
Java Application Monitoring with AppDynamics' FounderJava Application Monitoring with AppDynamics' Founder
Java Application Monitoring with AppDynamics' FounderCyrille Le Clerc
 
Bonnes pratiques des applications java prêtes pour la production
Bonnes pratiques des applications java prêtes pour la productionBonnes pratiques des applications java prêtes pour la production
Bonnes pratiques des applications java prêtes pour la productionCyrille Le Clerc
 
Soirée OSGi au Paris Jug (14/10/2008)
Soirée OSGi au Paris Jug (14/10/2008)Soirée OSGi au Paris Jug (14/10/2008)
Soirée OSGi au Paris Jug (14/10/2008)Cyrille Le Clerc
 
Xebia Knowledge Exchange - Owasp Top Ten
Xebia Knowledge Exchange - Owasp Top TenXebia Knowledge Exchange - Owasp Top Ten
Xebia Knowledge Exchange - Owasp Top TenCyrille Le Clerc
 
Soirée Data Grid au Paris JUG (2009/05/12)
Soirée Data Grid au Paris JUG (2009/05/12)Soirée Data Grid au Paris JUG (2009/05/12)
Soirée Data Grid au Paris JUG (2009/05/12)Cyrille Le Clerc
 

Más de Cyrille Le Clerc (10)

Embracing Observability in CI/CD with OpenTelemetry
Embracing Observability in CI/CD with OpenTelemetryEmbracing Observability in CI/CD with OpenTelemetry
Embracing Observability in CI/CD with OpenTelemetry
 
Joe Mobile sur le Cloud - DevoxxFR 2013
Joe Mobile sur le Cloud - DevoxxFR 2013Joe Mobile sur le Cloud - DevoxxFR 2013
Joe Mobile sur le Cloud - DevoxxFR 2013
 
Paris Devops - Monitoring And Feature Toggle Pattern With JMX
Paris Devops - Monitoring And Feature Toggle Pattern With JMXParis Devops - Monitoring And Feature Toggle Pattern With JMX
Paris Devops - Monitoring And Feature Toggle Pattern With JMX
 
Paris NoSQL User Group - In Memory Data Grids in Action (without transactions...
Paris NoSQL User Group - In Memory Data Grids in Action (without transactions...Paris NoSQL User Group - In Memory Data Grids in Action (without transactions...
Paris NoSQL User Group - In Memory Data Grids in Action (without transactions...
 
GeeCon 2011 - NoSQL and In Memory Data Grids from a developer perspective
GeeCon 2011 - NoSQL and In Memory Data Grids from a developer perspectiveGeeCon 2011 - NoSQL and In Memory Data Grids from a developer perspective
GeeCon 2011 - NoSQL and In Memory Data Grids from a developer perspective
 
Java Application Monitoring with AppDynamics' Founder
Java Application Monitoring with AppDynamics' FounderJava Application Monitoring with AppDynamics' Founder
Java Application Monitoring with AppDynamics' Founder
 
Bonnes pratiques des applications java prêtes pour la production
Bonnes pratiques des applications java prêtes pour la productionBonnes pratiques des applications java prêtes pour la production
Bonnes pratiques des applications java prêtes pour la production
 
Soirée OSGi au Paris Jug (14/10/2008)
Soirée OSGi au Paris Jug (14/10/2008)Soirée OSGi au Paris Jug (14/10/2008)
Soirée OSGi au Paris Jug (14/10/2008)
 
Xebia Knowledge Exchange - Owasp Top Ten
Xebia Knowledge Exchange - Owasp Top TenXebia Knowledge Exchange - Owasp Top Ten
Xebia Knowledge Exchange - Owasp Top Ten
 
Soirée Data Grid au Paris JUG (2009/05/12)
Soirée Data Grid au Paris JUG (2009/05/12)Soirée Data Grid au Paris JUG (2009/05/12)
Soirée Data Grid au Paris JUG (2009/05/12)
 

Último

Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarPrecisely
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...DianaGray10
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationIES VE
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxUdaiappa Ramachandran
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1DianaGray10
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopBachir Benyammi
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024SkyPlanner
 

Último (20)

Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptx
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
 
20230104 - machine vision
20230104 - machine vision20230104 - machine vision
20230104 - machine vision
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 Workshop
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024
 

Monitoring Open Source pour Java avec JmxTrans, Graphite et Nagios - DevoxxFR 2013

  • 1. Monitoring Open Source pour Java avec JmxTrans, Graphite et Nagios 27 au 29 mars 2013 Wednesday, March 27, 13
  • 2. Speaker @cyrilleleclerc CTO Architect Cyrille Le Clerc Fort Traffic Cloud, DevOps Open Source Wednesday, March 27, 13
  • 3. Speaker @hgomez Architecte CI Henri Gomez Intégration Continue DevOps Open Source Wednesday, March 27, 13
  • 4. Vous ? Dev ? Qa ? Ops ? Expérience monitoring ? Wednesday, March 27, 13
  • 5. Agenda 27 au 29 mars 2013 Wednesday, March 27, 13
  • 6. Agenda • L’application • Le monitoring à réaliser • Instrumenter une webapp Java avec JMX • Monitorer • Grapher avec Graphite • Alerter avec Seyren (et Nagios) • Monitoring & Continuous Delivery • Déploiement de Graphite • Conclusion Wednesday, March 27, 13
  • 7. Votre mission, si toutefois vous l’acceptez ... e-commerce SOS Cocktails http://www.flickr.com/photos/23791504@N08/2607814349 Mettre en place le monitoring technique et métier Wednesday, March 27, 13
  • 8. o m SOS Cocktail Dé Wednesday, March 27, 13
  • 9. Les indicateurs à monitorer Pourquoi Monitorer ? Quoi ? 27 au 29 mars 2013 Wednesday, March 27, 13
  • 10. Les indicateurs à monitorer Wednesday, March 27, 13
  • 11. Les Indicateurs à monitorer • Operating System -> Sysload • JVM -> GC duration • Tomcat -> activeSessions (active visitors) • Application -> sales revenue & items Wednesday, March 27, 13
  • 12. Open Source Monitoring for Java Dashboard - wiki eCommerce Web Site (4) Graphite Email (1) (3) Seyren (5) (2) Nagios Wednesday, March 27, 13
  • 13. JMX & Métriques 27 au 29 mars 2013 Wednesday, March 27, 13
  • 14. Pourquoi JMX ? • JMX vs. pages web vs. logs vs. ... • Simple et sécurisé • Exposable vers pages web et les logs • Des alternatives à JMX Wednesday, March 27, 13
  • 15. JMX vs. logs vs. pages web vs. ... • Logs de monitoring • Parser des Go de fichiers texte ? • Détail par invocation vs. moyenne par minute • Pages web • Historisation ? • Applications en clusters ? • Sécurité ? Wednesday, March 27, 13
  • 16. JMX avec Spring <beans  ...>      ...      <context:mbean-­‐export/>      ... </beans> @ManagedResource("cocktail:name=ShoppingCartController,type=...") class  ShoppingCartController  {          final  AtomicInteger  revenueInCentsCounter  =  new  AtomicInteger();  @ManagedAttribute  public  int  getRevenueInCentsCounter()  {    return  revenueInCentsCounter.get();  }          void  purchase(...){      ...      revenueInCentsCounter.addAndGet(priceInCents);  } Wednesday, March 27, 13
  • 18. JMX & JSP Powered by JMX! Human readable et script friendly Attention sécurité ! $  curl  http://demo-­‐cocktail.jmxtrans.cloudbees.net/5ADrUWr5/jmx-­‐sales-­‐metrics.txt.jsp Epoch   SalesRevenueInCentsCounter   SalesItemsCounter   SalesOrdersCounter 1363217376   4500   7   2 curl  http://demo-­‐cocktail.jmxtrans.cloudbees.net/5ADrUWr5/... {    "Epoch":1363217653,    "SalesRevenueInCentsCounter":4050,    "SalesItemsCounter":7,    "SalesOrdersCounter":2 } http://demo-cocktail.jmxtrans.cloudbees.net/jmx.jsp Wednesday, March 27, 13
  • 19. JMX & JSP /5ADrUWr5/jmx-sales-metrics.jsp Powered by JMX! Human readable et script friendly Attention sécurité ! $  curl  http://demo-­‐cocktail.jmxtrans.cloudbees.net/5ADrUWr5/jmx-­‐sales-­‐metrics.txt.jsp Epoch   SalesRevenueInCentsCounter   SalesItemsCounter   SalesOrdersCounter 1363217376   4500   7   2 curl  http://demo-­‐cocktail.jmxtrans.cloudbees.net/5ADrUWr5/... {    "Epoch":1363217653,    "SalesRevenueInCentsCounter":4050,    "SalesItemsCounter":7,    "SalesOrdersCounter":2 } http://demo-cocktail.jmxtrans.cloudbees.net/jmx.jsp Wednesday, March 27, 13
  • 20. JMX & JSP Po wer ed by JM X! Wednesday, March 27, 13
  • 22. Alternatives à JMX Servo ) teger() ; er  { COUNTER ew  AtomicIn ontroll ts",  type= ter  =  n oppin gCartC ueInCen ntsCoun n cl ass  Sh name="reve revenueInCe  @Mo nitor( icInteger   m  fin al  Ato ) { C ents);         ase(... priceIn  void  purch AndGet( ter.add       ... ntsCoun nueInCe      reve  } Wednesday, March 27, 13
  • 23. Alternatives à JMX Metrics class  Shopp ingCartCont         roller  {  final  Coun Servo                       ter  revenue InCentsCoun ) ter  =t eger() ;  ntrolle r  {      Shpe=COUNTER ew  AtomicIn  Metrics.new oppingCartC   y Counter( artCo     nCents",  t Counter  =  nontroller,  "revenue-­‐ Sho ppingC ev  void  purcInCents enueI ue hase(.. in-­‐cents"); class   r(name="r      ...en r rev .){ o e  @Monit tomicInteg      re inal  A venueInCent  f  } { sCounter.in ts);   ...) c( InCen priceInCents);       ( e urchase e t(pric   void  p a ddAndG o unter.      ... nueInCentsC      reve  } Wednesday, March 27, 13
  • 24. JMX •OS: Sysload •JVM: Garbage Collector •Tomcat: activeSessions •Application: Web Site Revenue Wednesday, March 27, 13
  • 25. jmxtrans & embedded-jmxtrans 27 au 29 mars 2013 Wednesday, March 27, 13
  • 26. jmxtrans - standalone ecommerce Tomcat logistics Graphite Tomcat accounting Tomcat ... jmxtrans - standalone Wednesday, March 27, 13
  • 27. embedded-jmxtrans ecommerce Tomcat Graphite logistics Librato Tomcat accounting ... Tomcat batch embedded-jmxtrans Wednesday, March 27, 13
  • 28. standalone vs. embedded standalone embedded Packaging daemon externe, raccordement agent embarqué, applications & Modèle manuel des applications & des indicateurs auto-raccordés / indicateurs autonomes Curseur OPS -♦----------- DEV OPS ----------♦-- DEV applis “peu modifiables”, middlewares, cloud, batch, Use case curseur OPS curseur DEV/QA Wednesday, March 27, 13
  • 29. jmxtrans & embedded-jmxtrans SOS Cocktail Graphite embedded Wednesday, March 27, 13
  • 31. embedded-jmxtrans configuration <dependency>    <groupId>org.jmxtrans.embedded</groupId>    <artifactId>embedded-­‐jmxtrans</artifactId>    <version>1.0.5</version> </dependency> Wednesday, March 27, 13
  • 32. embedded-jmxtrans configuration <dependency>    <groupId>org.jmxtrans.embedded</groupId>    <artifactId>embedded-­‐jmxtrans</artifactId>    <version>1.0.5</version> </dependency> <beans  ...    xmlns:jmxtrans="http://www.jmxtrans.org/schema/embedded"    xsi:schemaLocation="...        http://www.jmxtrans.org/schema/embedded  ...”>    <jmxtrans:jmxtrans>        <jmxtrans:configuration>classpath:jmxtrans.json</jmxtrans:configuration>        ...    </jmxtrans:jmxtrans> </beans> Wednesday, March 27, 13
  • 33. embedded-jmxtrans configuration <dependency>    <groupId>org.jmxtrans.embedded</groupId> {    <artifactId>embedded-­‐jmxtrans</artifactId>    "queries":  [    <version>1.0.5</version>            { </dependency>            "objectName":  "cocktail:name=ShoppingCartController",            "resultAlias":  "sales",            "attributes":  ["SalesRevenueInCentsCounter"]        },    ],    "outputWriters":  [ <beans  ...        {    xmlns:jmxtrans="http://www.jmxtrans.org/schema/embedded"            "@class":  "org.jmxtrans.embedded.output.GraphiteWriter",    xsi:schemaLocation="...            "settings":  {        http://www.jmxtrans.org/schema/embedded  ...”>                "host":  "${graphite.host:localhost}",                "port":  "${graphite.port:2003},"    <jmxtrans:jmxtrans>                "enabled":  "${graphite.enabled:true}"        <jmxtrans:configuration>classpath:jmxtrans.json</jmxtrans:configuration>            }        ...        }    </jmxtrans:jmxtrans>    ] </beans> } Wednesday, March 27, 13
  • 34. jmxtrans •OS: Sysload •JVM: Garbage Collector •Tomcat: activeSessions •Application: Web Site Revenue Wednesday, March 27, 13
  • 35. Graphite 27 au 29 mars 2013 Wednesday, March 27, 13
  • 36. Graphite • BD de Time Series et solution de Graphe • Utilisé par des grands du Web • Similaires Simplicité et Self Service Wednesday, March 27, 13
  • 37. Ecriture / Alimentation • Création automatique des métriques • Protocoles socket “plain text” & sérialisation Python Pickle echo  "devoxx.happyCounter  1.2  1364338989"  |  nc  localhost  2003 • Précision et durée de stockage par configuration [sales_1min_for_15days_5min_for_1year] pattern  =  ^sales. 1.7MB retentions  =  60s:30d,300s:365d Wednesday, March 27, 13
  • 38. Lecture / Consommation • Composer de graphe & URL API • Tout le monde peut créer ses graphes • Fonctions Riches • sum, scale, derivative, timeshift, deviation, filter, ... • Exports variés : png, svg, csv, json, raw text Wednesday, March 27, 13
  • 39. Graphes et monitoring 27 au 29 mars 2013 Wednesday, March 27, 13
  • 40. Demo Graphite sur le Cloud • http://hostedgraphite.com/ 1 email: admin@jmxtrans.org password: devoxx2013 • Graphite as a Service 2 • Pas de ‘tracas’ d’installation • addons: Tasseo • No-OPS 3 Wednesday, March 27, 13
  • 41. Les métriques Gauge Ever Increasing Counter • Exemples: activeRequests, dataSource.activeConnection, ... • Exemples: requestsCount, revenue, ... • Information exploitable immédiatement • Conversion nécessaire en “par minute” Wednesday, March 27, 13
  • 42. Des graphes et des formules ? Ever Increasing Counter Revenue per Second Wednesday, March 27, 13
  • 43. Des graphes et des formules derivative() ? Ever Increasing Counter Revenue per Second Wednesday, March 27, 13
  • 44. Des graphes et des formules ? Per Second -> Per Hour Revenue per Hour Wednesday, March 27, 13
  • 45. Des graphes et des formules summarize() ? Per Second -> Per Hour Revenue per Hour Wednesday, March 27, 13
  • 46. Des graphes et des formules ? 2 servers Total Revenue per Hour Wednesday, March 27, 13
  • 47. Des graphes et des formules sumSeries() ? 2 servers Total Revenue per Hour Wednesday, March 27, 13
  • 48. Des graphes et des formules ? Ignore reset to zero server restart Wednesday, March 27, 13
  • 49. Des graphes et des formules nonNegativeDerivative() ? Ignore reset to zero server restart Wednesday, March 27, 13
  • 50. Des graphes et des formules Compare to ? last week Wednesday, March 27, 13
  • 51. Des graphes et des formules Compare to timeShift() ? last week Wednesday, March 27, 13
  • 52. Des graphes et des formules •OS: Sysload •JVM: Garbage Collector •Tomcat: activeSessions •Application: Web Site Revenue Wednesday, March 27, 13
  • 53. Dashoards Wiki dashboard.prod.md #  Sales <table> <tr>    <td>        <img  src="http://graphite.prod.mycompany/graphite/render/? width=400&height=300&title=Revenue&xFormat=%25a%20%25d %25p&vtitle=USD&lineWidth=3&from=-­‐5days&target=alias(scale(summarize(sumS eries(nonNegativeDerivative(edu.servers.*.sales.revenueInCentsCounter)) %2C%221h%22)%2C0.01)%2C%22Revenue%20per%20Hour%22)...">        </td>        <td>                <img  src="http://graphite.prod.mycompany/graphite/render/?...">        </td> <tr> </table> Wiki https://github.com/jmxtrans/embedded-jmxtrans-samples/wiki/Dashboard-PROD Wednesday, March 27, 13
  • 54. Dashoards by Email Envoyer les graphes par email Wednesday, March 27, 13
  • 55. L’alerting Intégrer Graphite à de l’alerting URL Api Seyren Nagios 27 au 29 mars 2013 Wednesday, March 27, 13
  • 56. Intégrer Graphite à l’alerting • Utiliser l’URL API • Format rawText ou JSON • Pattern /render?from=-­‐11minutes&until=-­‐1minutes&format=raw&target=**** Exemple $  curl  "http://graphite.exemple.com/render?from=-­‐11minutes&until=-­‐1minutes&format=raw&      target=keepLastValue(servers.cloudbees.jvm.os.SystemLoadAverage)"   my-­‐metric,1363225680,1363226340,60|0.03,0.01,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 Wednesday, March 27, 13
  • 57. Alerting - Seyren • Alerting Dashboard for Graphite • Open Source • Java .war + MongoDB • Alertes email, PagerDuty, ... Wednesday, March 27, 13
  • 58. Alerting - Seyren http://seyren.jmxtrans.cloudbees.net/ •OS: Sysload •JVM: Garbage Collector •Tomcat: activeSessions •Application: Web Site Revenue Wednesday, March 27, 13
  • 59. Nagios • Infrastructure Monitoring • Open Source • Standard de facto en entreprise • check_graphite plugin • Pierre-Yves Ritschard • Jason Dixon / obfuscurity Wednesday, March 27, 13
  • 60. Monitoring & Continuous Delivery 27 au 29 mars 2013 Wednesday, March 27, 13
  • 61. Monitoring & Continuous Delivery • Livrer le monitoring avec l’application • Les indicateurs • Les dashboards • Builder en continue les configs par environnement • Require: topologie des environnements intégrées au build • Déploiement sur un repo (Maven, ...) • Déployer en automatique le monitoring Wednesday, March 27, 13
  • 62. Monitoring & Continuous Delivery StringTemplate src/main/graphite/dashboard.template.md Cocktail  App  Dashboards  -­‐  ${environment}  -­‐  ${version} #  Sales <table> ${variable} <tr>    <td>        <img  src="${graphite.baseUrl}/render/? width=400&height=300&title=Revenue&xFormat=%25a%20%25d %25p&vtitle=USD&lineWidth=3&from=-­‐5days&target=alias(scale(summarize(sumS eries(nonNegativeDerivative(edu.servers.*.sales.revenueInCentsCounter)) %2C%221h%22)%2C0.01)%2C%22Revenue%20per%20Hour%22)...">        </td>        <td>                <img  src="${graphite.baseUrl}/render/?...">        </td> <tr> </table> Dashboard template Wednesday, March 27, 13
  • 63. Monitoring & Continuous Delivery dashboard.template.md dashboard.PROD.md pom.xml <gmaven-plugin> ... PROD-env-topology.json dashboard.QA.md ... QA-env-topology.json repository dashboard-generator.groovy Monitoring dashboards Continuous Integration https://github.com/jmxtrans/embedded-jmxtrans-samples/wiki/Monitoring-Continuous-Deployment Wednesday, March 27, 13
  • 64. Déploiement de Graphite 27 au 29 mars 2013 Wednesday, March 27, 13
  • 66. Cadeau bonus ! 27 au 29 mars 2013 Wednesday, March 27, 13
  • 67. Promo Code • http://hostedgraphite.com/ • 60 days trial with “DEVOXX” promo code (2) Enter Promo Code “DEVOXX” (1) Signup help: cleclerc@cloudbees.com (3) Promo Code “DEVOXX” Wednesday, March 27, 13
  • 68. Conclusion 27 au 29 mars 2013 Wednesday, March 27, 13
  • 69. Conclusion • Monitoring technique et métier • Monitoring intégrée au Continuous Delivery de l’appli • L’approche self-service transforme le monitoring • Solutions Open Source disponibles Monitoring no longer sucks in Java! http://lusislog.blogspot.fr/2011/06/why-monitoring-sucks.html Wednesday, March 27, 13
  • 70. http://demo-cocktail.jmxtrans.cloudbees.net/ http://jmxtrans.org/ Wednesday, March 27, 13