Monitoring Open Source pour Java avec                          JmxTrans, Graphite et Nagios                               ...
Speaker                     @cyrilleleclerc             CTO                                                            Arc...
Speaker                     @hgomez                      Architecte CI                                Henri Gomez         ...
Vous ?                             Dev ? Qa ? Ops ?                          Expérience monitoring ?Wednesday, March 27, 13
Agenda                                   27 au 29 mars 2013Wednesday, March 27, 13
Agenda           • L’application           • Le monitoring à réaliser           • Instrumenter une webapp Java avec JMX   ...
Votre mission, si toutefois vous                           l’acceptez ...                 e-commerce SOS Cocktails        ...
o    m                     SOS CocktailDéWednesday, March 27, 13
Les indicateurs à monitorer                                Pourquoi Monitorer ?                                      Quoi ...
Les indicateurs à monitorerWednesday, March 27, 13
Les Indicateurs à monitorer           • Operating System -> Sysload           • JVM -> GC duration           • Tomcat -> a...
Open Source Monitoring for Java                                                                Dashboard - wiki      eComm...
JMX & Métriques                                            27 au 29 mars 2013Wednesday, March 27, 13
Pourquoi JMX ?           • JMX vs. pages web vs. logs vs. ...           • Simple et sécurisé           • Exposable vers pa...
JMX vs. logs vs. pages web vs. ...           • Logs de monitoring               •      Parser des Go de fichiers texte ?   ...
JMX avec Spring   <beans	  ...>   	  	  	  ...   	  	  	  <context:mbean-­‐export/>   	  	  	  ...   </beans>             ...
JMXWednesday, March 27, 13
JMX & JSP                                                                                       Powered by JMX!           ...
JMX & JSP                                                /5ADrUWr5/jmx-sales-metrics.jsp                                  ...
JMX & JSP                          Po                             wer                                 ed                  ...
Alternatives à JMXWednesday, March 27, 13
Alternatives à JMX                          Servo                                                     )            teger()...
Alternatives à JMX                                                      Metrics                                           ...
JMX        •OS: Sysload        •JVM: Garbage Collector        •Tomcat: activeSessions        •Application: Web Site Revenu...
jmxtrans & embedded-jmxtrans                                              27 au 29 mars 2013Wednesday, March 27, 13
jmxtrans - standalone                          ecommerce                             Tomcat                          logis...
embedded-jmxtrans                          ecommerce                              Tomcat                                  ...
standalone vs. embedded                             standalone                           embedded             Packaging   ...
jmxtrans & embedded-jmxtrans                          SOS Cocktail   Graphite                           embeddedWednesday,...
embedded-jmxtrans configurationWednesday, March 27, 13
embedded-jmxtrans configuration       <dependency>       	  	  <groupId>org.jmxtrans.embedded</groupId>       	  	  <artifa...
embedded-jmxtrans configuration       <dependency>       	  	  <groupId>org.jmxtrans.embedded</groupId>       	  	  <artifa...
embedded-jmxtrans configuration       <dependency>       	  	  <groupId>org.jmxtrans.embedded</groupId>                {   ...
jmxtrans        •OS: Sysload        •JVM: Garbage Collector        •Tomcat: activeSessions        •Application: Web Site R...
Graphite                                     27 au 29 mars 2013Wednesday, March 27, 13
Graphite      • BD de Time Series et solution de Graphe      • Utilisé par des grands du Web      • Similaires            ...
Ecriture / Alimentation           • Création automatique des métriques           • Protocoles socket “plain text” & sérial...
Lecture / Consommation           • Composer de graphe & URL API           • Tout le monde peut créer ses graphes          ...
Graphes et monitoring                                                  27 au 29 mars 2013Wednesday, March 27, 13
Demo Graphite sur le Cloud           • http://hostedgraphite.com/                1   email: admin@jmxtrans.org            ...
Les métriques                              Gauge                                              Ever Increasing Counter     ...
Des graphes et des formules                                      ?            Ever Increasing Counter       Revenue per Se...
Des graphes et des formules                                  derivative()                                       ?         ...
Des graphes et des formules                                     ?            Per Second -> Per Hour       Revenue per Hour...
Des graphes et des formules                                summarize()                                    ?            Per...
Des graphes et des formules                                      ?                          2 servers       Total Revenue ...
Des graphes et des formules                                      sumSeries()                                          ?   ...
Des graphes et des formules                                           ?                                               Igno...
Des graphes et des formules                          nonNegativeDerivative()                                    ?         ...
Des graphes et des formules    Compare to            ?     last weekWednesday, March 27, 13
Des graphes et des formules    Compare to            timeShift()                            ?     last weekWednesday, Marc...
Des graphes et des formules        •OS: Sysload        •JVM: Garbage Collector        •Tomcat: activeSessions        •Appl...
Dashoards Wiki    dashboard.prod.md      #	  Sales      <table>      <tr>      	  	  <td>      	  	  	  	  <img	  src="htt...
Dashoards by Email          Envoyer les graphes par emailWednesday, March 27, 13
L’alerting                          Intégrer Graphite à de l’alerting                                     URL Api         ...
Intégrer Graphite à l’alerting           • Utiliser l’URL API           • Format rawText ou JSON           • Pattern      ...
Alerting - Seyren           • Alerting Dashboard for Graphite           • Open Source           • Java .war + MongoDB     ...
Alerting - Seyren                                         http://seyren.jmxtrans.cloudbees.net/        •OS: Sysload       ...
Nagios           • Infrastructure Monitoring           • Open Source           • Standard de facto en entreprise          ...
Monitoring & Continuous                                  Delivery                                                    27 au...
Monitoring & Continuous Delivery           • Livrer le monitoring avec l’application               •      Les indicateurs ...
Monitoring & Continuous Delivery                                                                                          ...
Monitoring & Continuous Delivery                       dashboard.template.md                                              ...
Déploiement de Graphite                                                    27 au 29 mars 2013Wednesday, March 27, 13
Déploiement de GraphiteWednesday, March 27, 13
Cadeau bonus !                                           27 au 29 mars 2013Wednesday, March 27, 13
Promo Code           • http://hostedgraphite.com/           • 60 days trial with “DEVOXX” promo code                      ...
Conclusion                                       27 au 29 mars 2013Wednesday, March 27, 13
Conclusion           • Monitoring technique et métier           • Monitoring intégrée au Continuous Delivery de l’appli   ...
http://demo-cocktail.jmxtrans.cloudbees.net/   http://jmxtrans.org/Wednesday, March 27, 13
Upcoming SlideShare
Loading in …5
×

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

4,629 views

Published on

Le feedback rapide offert par le monitoring est un element essentiel des bonnes pratiques de Continuous Delivery. Java dispose dans son ecosysteme d'un composant robuste dedie a cela : JMX.

Cependant, la difficulte de raccordement de JMX a des outils de supervision et de graphe a longtemps ete un frein a son adoption.

Jetez aux orties les solutions bancales a base de logs applicatifs ou d'interface web mal protegees, et venez decouvrir une voie ouverte. Une nouvelle generation d'outils Open Source permet de grapher simplement les metriques de vos applications et de les fournir a un systeme de supervision et d'alerte.

Dans une logique DevOps, nous verrons ensemble comment integrer la dimension Monitoring dans un projet : de la conception des metriques par les developpeurs, a l'integration des besoins des equipes Ops et Q&A, en deploiement traditionnel ou dans le Cloud. JmxTrans, Graphite et Nagios, ce tryptique peut vous faciliter la vie, venez decouvrir comment.

L'application demo : http://demo-cocktail.jmxtrans.cloudbees.net

Le code source de l'application demo : https://github.com/jmxtrans/embedded-jmxtrans-samples/tree/master/embedded-jmxtrans-webapp-coktail

Embedded JmxTrans : https://github.com/jmxtrans/embedded-jmxtrans

Published in: Technology
  • Be the first to comment

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

  1. 1. Monitoring Open Source pour Java avec JmxTrans, Graphite et Nagios 27 au 29 mars 2013Wednesday, March 27, 13
  2. 2. Speaker @cyrilleleclerc CTO Architect Cyrille Le Clerc Fort Traffic Cloud, DevOps Open SourceWednesday, March 27, 13
  3. 3. Speaker @hgomez Architecte CI Henri Gomez Intégration Continue DevOps Open SourceWednesday, March 27, 13
  4. 4. Vous ? Dev ? Qa ? Ops ? Expérience monitoring ?Wednesday, March 27, 13
  5. 5. Agenda 27 au 29 mars 2013Wednesday, March 27, 13
  6. 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 • ConclusionWednesday, March 27, 13
  7. 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étierWednesday, March 27, 13
  8. 8. o m SOS CocktailDéWednesday, March 27, 13
  9. 9. Les indicateurs à monitorer Pourquoi Monitorer ? Quoi ? 27 au 29 mars 2013Wednesday, March 27, 13
  10. 10. Les indicateurs à monitorerWednesday, March 27, 13
  11. 11. Les Indicateurs à monitorer • Operating System -> Sysload • JVM -> GC duration • Tomcat -> activeSessions (active visitors) • Application -> sales revenue & itemsWednesday, March 27, 13
  12. 12. Open Source Monitoring for Java Dashboard - wiki eCommerce Web Site (4) Graphite Email (1) (3) Seyren (5) (2) NagiosWednesday, March 27, 13
  13. 13. JMX & Métriques 27 au 29 mars 2013Wednesday, March 27, 13
  14. 14. Pourquoi JMX ? • JMX vs. pages web vs. logs vs. ... • Simple et sécurisé • Exposable vers pages web et les logs • Des alternatives à JMXWednesday, March 27, 13
  15. 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. 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
  17. 17. JMXWednesday, March 27, 13
  18. 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.jspWednesday, March 27, 13
  19. 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.jspWednesday, March 27, 13
  20. 20. JMX & JSP Po wer ed by JM X!Wednesday, March 27, 13
  21. 21. Alternatives à JMXWednesday, March 27, 13
  22. 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. 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. 24. JMX •OS: Sysload •JVM: Garbage Collector •Tomcat: activeSessions •Application: Web Site RevenueWednesday, March 27, 13
  25. 25. jmxtrans & embedded-jmxtrans 27 au 29 mars 2013Wednesday, March 27, 13
  26. 26. jmxtrans - standalone ecommerce Tomcat logistics Graphite Tomcat accounting Tomcat ... jmxtrans - standaloneWednesday, March 27, 13
  27. 27. embedded-jmxtrans ecommerce Tomcat Graphite logistics Librato Tomcat accounting ... Tomcat batch embedded-jmxtransWednesday, March 27, 13
  28. 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/QAWednesday, March 27, 13
  29. 29. jmxtrans & embedded-jmxtrans SOS Cocktail Graphite embeddedWednesday, March 27, 13
  30. 30. embedded-jmxtrans configurationWednesday, March 27, 13
  31. 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. 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. 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. 34. jmxtrans •OS: Sysload •JVM: Garbage Collector •Tomcat: activeSessions •Application: Web Site RevenueWednesday, March 27, 13
  35. 35. Graphite 27 au 29 mars 2013Wednesday, March 27, 13
  36. 36. Graphite • BD de Time Series et solution de Graphe • Utilisé par des grands du Web • Similaires Simplicité et Self ServiceWednesday, March 27, 13
  37. 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:365dWednesday, March 27, 13
  38. 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 textWednesday, March 27, 13
  39. 39. Graphes et monitoring 27 au 29 mars 2013Wednesday, March 27, 13
  40. 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 3Wednesday, March 27, 13
  41. 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. 42. Des graphes et des formules ? Ever Increasing Counter Revenue per SecondWednesday, March 27, 13
  43. 43. Des graphes et des formules derivative() ? Ever Increasing Counter Revenue per SecondWednesday, March 27, 13
  44. 44. Des graphes et des formules ? Per Second -> Per Hour Revenue per HourWednesday, March 27, 13
  45. 45. Des graphes et des formules summarize() ? Per Second -> Per Hour Revenue per HourWednesday, March 27, 13
  46. 46. Des graphes et des formules ? 2 servers Total Revenue per HourWednesday, March 27, 13
  47. 47. Des graphes et des formules sumSeries() ? 2 servers Total Revenue per HourWednesday, March 27, 13
  48. 48. Des graphes et des formules ? Ignore reset to zero server restartWednesday, March 27, 13
  49. 49. Des graphes et des formules nonNegativeDerivative() ? Ignore reset to zero server restartWednesday, March 27, 13
  50. 50. Des graphes et des formules Compare to ? last weekWednesday, March 27, 13
  51. 51. Des graphes et des formules Compare to timeShift() ? last weekWednesday, March 27, 13
  52. 52. Des graphes et des formules •OS: Sysload •JVM: Garbage Collector •Tomcat: activeSessions •Application: Web Site RevenueWednesday, March 27, 13
  53. 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-PRODWednesday, March 27, 13
  54. 54. Dashoards by Email Envoyer les graphes par emailWednesday, March 27, 13
  55. 55. L’alerting Intégrer Graphite à de l’alerting URL Api Seyren Nagios 27 au 29 mars 2013Wednesday, March 27, 13
  56. 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.0Wednesday, March 27, 13
  57. 57. Alerting - Seyren • Alerting Dashboard for Graphite • Open Source • Java .war + MongoDB • Alertes email, PagerDuty, ...Wednesday, March 27, 13
  58. 58. Alerting - Seyren http://seyren.jmxtrans.cloudbees.net/ •OS: Sysload •JVM: Garbage Collector •Tomcat: activeSessions •Application: Web Site RevenueWednesday, March 27, 13
  59. 59. Nagios • Infrastructure Monitoring • Open Source • Standard de facto en entreprise • check_graphite plugin • Pierre-Yves Ritschard • Jason Dixon / obfuscurityWednesday, March 27, 13
  60. 60. Monitoring & Continuous Delivery 27 au 29 mars 2013Wednesday, March 27, 13
  61. 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 monitoringWednesday, March 27, 13
  62. 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 templateWednesday, March 27, 13
  63. 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-DeploymentWednesday, March 27, 13
  64. 64. Déploiement de Graphite 27 au 29 mars 2013Wednesday, March 27, 13
  65. 65. Déploiement de GraphiteWednesday, March 27, 13
  66. 66. Cadeau bonus ! 27 au 29 mars 2013Wednesday, March 27, 13
  67. 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. 68. Conclusion 27 au 29 mars 2013Wednesday, March 27, 13
  69. 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.htmlWednesday, March 27, 13
  70. 70. http://demo-cocktail.jmxtrans.cloudbees.net/ http://jmxtrans.org/Wednesday, March 27, 13

×