Devops mycode devoxx-france-2015-v2

487 vues

Publié le

This slides describes how to add accurate metrics to a java application

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
487
Sur SlideShare
0
Issues des intégrations
0
Intégrations
3
Actions
Partages
0
Téléchargements
12
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Devops mycode devoxx-france-2015-v2

  1. 1. @ZouheirCadi#DevopsMyCode Devops  my  Code  
  2. 2. @ZouheirCadi#DevopsMyCode DEVOPS  MY  CODE   @Zouheircadi Dev.Archi Java, NoSQL, Prod Co-organisateur DevoxxFr (Ancien …) Paris JUG
  3. 3. @ZouheirCadi#DevopsMyCode Agenda   • Objectif • Métriques pour les services métiers •  Metriques : Générations et mesures •  Démo : Logstash Statsd, Graphite • Design 4 failure • Qui suis-je ? • Conclusion
  4. 4. @ZouheirCadi#DevopsMyCode Objec:f   • Sensibilisation des devs (java ?) à produire du code auditable/ exploitable • Initiation à la stratégie et aux outils de monitoring
  5. 5. @ZouheirCadi#DevopsMyCode Diagramme  de  déploiement  
  6. 6. @ZouheirCadi#DevopsMyCode Diagramme  de  composant  
  7. 7. @ZouheirCadi#DevopsMyCode Diagramme  de  déploiement   SCM C. I. REPO.
  8. 8. @ZouheirCadi#DevopsMyCode Produc:on  
  9. 9. @ZouheirCadi#DevopsMyCode Produc:on  
  10. 10. @ZouheirCadi#DevopsMyCode Produc:on  
  11. 11. @ZouheirCadi#DevopsMyCode Produc:on  
  12. 12. @ZouheirCadi#DevopsMyCode Produc:on   SCM C. I. DEV. Q. A. PRODUCTION REPO.
  13. 13. @ZouheirCadi#DevopsMyCode Produc:on  
  14. 14. @ZouheirCadi#DevopsMyCode Produc:on  
  15. 15. @ZouheirCadi#DevopsMyCode METRIQUES  
  16. 16. @ZouheirCadi#DevopsMyCode METRIQUES   Layer Example Metric Application layer API Calls Type, rate Service layer Apache, Storage, Caches, … Apache : request rate, response time, busu workers RDMMS : Busy/ sleeping connections, query rates Physical layer CPU, memory, disk, network CPU : user, system, %wait Disk : space utilization, I/O rates, %wait Network : bytes in/ out
  17. 17. @ZouheirCadi#DevopsMyCode Genera:on  de  metriques   spring.xml
  18. 18. @ZouheirCadi#DevopsMyCode Genera:on  de  metriques   PetstoreAspect.java
  19. 19. @ZouheirCadi#DevopsMyCode Genera:on  de  metriques   PetstoreAspect.java
  20. 20. @ZouheirCadi#DevopsMyCode Genera:on  de  metriques   PetstoreAspect.java
  21. 21. @ZouheirCadi#DevopsMyCode Genera:on  de  metriques   PetstoreAspect.java
  22. 22. @ZouheirCadi#DevopsMyCode Genera:on  de  metriques   logback.xml
  23. 23. @ZouheirCadi#DevopsMyCode Genera:on  de  metriques   logback.xml
  24. 24. @ZouheirCadi#DevopsMyCode Genera:on  de  metriques   2014-10-11 12:39:23 INFO service.catalog.impl.CatalogServiceImpl.findCategory YES 253 Timestamp Données
  25. 25. @ZouheirCadi#DevopsMyCode Genera:on  de  metriques   www.logstash.net/docs/1.4.2/learn
  26. 26. @ZouheirCadi#DevopsMyCode Logstash  
  27. 27. @ZouheirCadi#DevopsMyCode Logstash   input { file { type => "audit-log" path => "/${TOMCAT_HOME}/log/business.layer.log" } } filter { if [type] == "audit-log" { grok { match => [ "message" , "%{TIMESTAMP_ISO8601:timestamp} %{DATA:THREAD} %{WORD:LEVEL} %{DATA:method} %{WORD:returnCode} %{NUMBER:responseTime}" ] } } } output { statsd { host => "localhost" port => 8125 timing => [ "%{method}.time_ms", "%{responseTime}" ] } }
  28. 28. @ZouheirCadi#DevopsMyCode Statsd   • Deamon NodeJS • Fonctionne sous le protocole réseau UDP • Ecoute des statistiques et les agrègent avant envoi vers Graphite • Fournit un support pour différents types de métriques •  Counter •  Timer •  Gauges •  Set
  29. 29. @ZouheirCadi#DevopsMyCode Statsd   • Counting / Sampling : send increments from your application com.ServiceImpl.authenticate:1|c com.ServiceImpl.createUser:1|c|@0.1
  30. 30. @ZouheirCadi#DevopsMyCode Statsd   • Timing : •  time •  Statistique la plus intéressante pour récolter les métriques d’un service métier com.ServiceImpl.findCategory:230 | ms
  31. 31. @ZouheirCadi#DevopsMyCode Cen:le   • Effectif d’une distribution divisée en 100 parts égales •  Distribution coupée en tranches de 1% •  Médiane C50 •  50% des valeurs lui sont inférieures •  50% des valeurs lui sont supérieures •  90Percentile •  90% des valeurs lui sont inférieures •  10% des valeurs lui sont supérieures
  32. 32. @ZouheirCadi#DevopsMyCode StatsD   • Gauges • Sets • Multi-Metric Packets
  33. 33. @ZouheirCadi#DevopsMyCode Graphite   collecting-metrics-with-graphite-and-statsd
  34. 34. @ZouheirCadi#DevopsMyCode Graphite  -­‐  architecture   • Graphite web •  Front end. •  Visualisation des métriques sous forme de graphique. •  « Powerfull plotting API » • Carbon •  Ensemble de 3 process en charge de la réception, l’agrégation et la persistance des données sur disque • Whisper •  Base de données de séries chronologiques
  35. 35. @ZouheirCadi#DevopsMyCode All  in  one   LOGS LOGSTASH STATSD GRAPHITE
  36. 36. @YourTwitterHandle@YourTwitterHandle@ZouheirCadi#DevopsMyCode Demo
  37. 37. @ZouheirCadi#DevopsMyCode Métriques  -­‐  process   • Mesurer (ligne de log) • Monitorer • Alerter • Decider • Agir
  38. 38. @ZouheirCadi#DevopsMyCode Monitoring  -­‐  Aler:ng   • Monitoring •  Graphite, •  Ganglia (monitoring des systèmes distribués) •  Outils payants : newRelic, AppDynamics • Alerting •  Nagios •  Outils payants : newRelic, AppDynamics
  39. 39. @ZouheirCadi#DevopsMyCode Supervision  batch/audit  
  40. 40. @ZouheirCadi#DevopsMyCode Supervision  audit  
  41. 41. @ZouheirCadi#DevopsMyCode Résilience  
  42. 42. @ZouheirCadi#DevopsMyCode Résilience  
  43. 43. @ZouheirCadi#DevopsMyCode Résilience  
  44. 44. @ZouheirCadi#DevopsMyCode Résilience  
  45. 45. @ZouheirCadi#DevopsMyCode Résilience  
  46. 46. @ZouheirCadi#DevopsMyCode Résilience  
  47. 47. @ZouheirCadi#DevopsMyCode Résilience  
  48. 48. @ZouheirCadi#DevopsMyCode Résilience  
  49. 49. @ZouheirCadi#DevopsMyCode Quelle(s)  métrique(s)   • Metrique de contrôle du fonctionnement courant •  1 appel = 1 metrique •  Interception des appels de la couche métier •  AccessLogs •  Tomcat => Valve
  50. 50. @ZouheirCadi#DevopsMyCode Quelle(s)  métrique(s)   • Métrique de dysfonctionnement •  $$$$$ •  Dégrade le fonctionnement
  51. 51. @ZouheirCadi#DevopsMyCode
  52. 52. @ZouheirCadi#DevopsMyCode Qui  suis-­‐je  
  53. 53. @ZouheirCadi#DevopsMyCode Qui  suis-­‐je  ?  
  54. 54. @ZouheirCadi#DevopsMyCode Qui  suis-­‐je  ?   • Plugin maven : properties-maven-plugin • Génération d’un fichier • Contenant les deux properties •  project.version •  maven.build.timestamp • Properties lues grâce à un service
  55. 55. @ZouheirCadi#DevopsMyCode Qui  suis-­‐je  ?  
  56. 56. @ZouheirCadi#DevopsMyCode Qui  suis-­‐je  ?  
  57. 57. @ZouheirCadi#DevopsMyCode Health-­‐check   • Resource fournissant des informations sur l’application •  Serveur d’application •  Service accédé via le serveur d’application • Utilisé par des humains (dev, integrateurs, sysadmin, …) • Used by automates for monitoring
  58. 58. @ZouheirCadi#DevopsMyCode Health-­‐check  
  59. 59. @ZouheirCadi#DevopsMyCode Que  fais-­‐je  ?  
  60. 60. @ZouheirCadi#DevopsMyCode Ou  suis-­‐je  :  Dans  quelle  organisa:on  ?  
  61. 61. @YourTwitterHandle@YourTwitterHandle@ZouheirCadi#DevopsMyCode CONCLUSION
  62. 62. @ZouheirCadi#DevopsMyCode Conclusion  
  63. 63. @ZouheirCadi#DevopsMyCode Conclusion  
  64. 64. @ZouheirCadi#DevopsMyCode Conclusion  
  65. 65. @ZouheirCadi#DevopsMyCode Conclusion  
  66. 66. @ZouheirCadi#DevopsMyCode Conclusion  
  67. 67. @ZouheirCadi#DevopsMyCode Conclusion  
  68. 68. @ZouheirCadi#DevopsMyCode Conclusion  
  69. 69. @ZouheirCadi#DevopsMyCode Conclusion  
  70. 70. @ZouheirCadi#DevopsMyCode Conclusion  
  71. 71. @ZouheirCadi#DevopsMyCode URLographie   •  http://pivotallabs.com/139-metrics-metrics-everywhere/ •  https://wooster.checkmy.ws/fr/doc/graphite/ •  https://wooster.checkmy.ws/2013/12/time-series-databases/ •  https://github.com/hopsoft/docker-graphite-statsd •  http://tomcat.apache.org/tomcat-7.0-doc/config/valve.html •  http://java.dzone.com/articles/java-performance-troubleshooti-0 •  http://rubynaut.net/2012/08/30/application-monitoring/ •  http://www.logstash.net/docs/1.4.2/learn •  http://fr.slideshare.net/itnig/collecting-metrics-with-graphite-and-statsd •  http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/ index.html
  72. 72. @ZouheirCadi#DevopsMyCode Bibliographie   •  Web operations, keeping the data on time, John Allspaw and Jesse Robbins, 2010, O’Reilly Ed. •  Continuous delivery, Jez Humble and David Farley, 2010, Addison Wesley Ed.
  73. 73. @ZouheirCadi#DevopsMyCode Con:nuous  delivery  
  74. 74. @YourTwitterHandle@YourTwitterHandle@ZouheirCadi#DevopsMyCode Q & A

×