devops’mycode’ - zouheircadi.files.wordpress.com @zouheircadi devops’my’code’ @zouheircadi...
Post on 10-Jun-2018
237 Views
Preview:
TRANSCRIPT
@ZouheirCadi #DevopsMyCode
Devops my Code
@ZouheirCadi #DevopsMyCode
DEVOPS MY CODE
@Zouheircadi Dev.Archi Java, NoSQL, Prod Co-organisateur DevoxxFr (Ancien …) Paris JUG
@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
@ZouheirCadi #DevopsMyCode
Objec:f • Sensibilisation des devs (java ?) à produire du code auditable/
exploitable • Initiation à la stratégie et aux outils de monitoring
@ZouheirCadi #DevopsMyCode
Diagramme de déploiement
@ZouheirCadi #DevopsMyCode
Diagramme de composant
@ZouheirCadi #DevopsMyCode
Diagramme de déploiement SCM C. I. REPO.
@ZouheirCadi #DevopsMyCode
Produc:on
@ZouheirCadi #DevopsMyCode
Produc:on
@ZouheirCadi #DevopsMyCode
Produc:on
@ZouheirCadi #DevopsMyCode
Produc:on
@ZouheirCadi #DevopsMyCode
Produc:on SCM C. I.
DEV. Q. A. PRODUCTION
REPO.
@ZouheirCadi #DevopsMyCode
Produc:on
@ZouheirCadi #DevopsMyCode
Produc:on
@ZouheirCadi #DevopsMyCode
METRIQUES
@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
@ZouheirCadi #DevopsMyCode
Genera:on de metriques
spring.xml
@ZouheirCadi #DevopsMyCode
Genera:on de metriques
PetstoreAspect.java
@ZouheirCadi #DevopsMyCode
Genera:on de metriques
PetstoreAspect.java
@ZouheirCadi #DevopsMyCode
Genera:on de metriques
PetstoreAspect.java
@ZouheirCadi #DevopsMyCode
Genera:on de metriques
PetstoreAspect.java
@ZouheirCadi #DevopsMyCode
Genera:on de metriques
logback.xml
@ZouheirCadi #DevopsMyCode
Genera:on de metriques
logback.xml
@ZouheirCadi #DevopsMyCode
Genera:on de metriques
2014-10-11 12:39:23 INFO service.catalog.impl.CatalogServiceImpl.findCategory YES 253
Timestamp Données
@ZouheirCadi #DevopsMyCode
Genera:on de metriques
www.logstash.net/docs/1.4.2/learn
@ZouheirCadi #DevopsMyCode
Logstash
@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}" ] } }
@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
@ZouheirCadi #DevopsMyCode
Statsd • Counting / Sampling : send increments from your application
com.ServiceImpl.authenticate:1|c
com.ServiceImpl.createUser:1|c|@0.1
@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
@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
@ZouheirCadi #DevopsMyCode
StatsD • Gauges
• Sets
• Multi-Metric Packets
@ZouheirCadi #DevopsMyCode
Graphite
collecting-metrics-with-graphite-and-statsd
@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
@ZouheirCadi #DevopsMyCode
All in one
LOGS LOGSTASH STATSD GRAPHITE
@YourTwitterHandle @YourTwitterHandle @ZouheirCadi #DevopsMyCode
Demo
@ZouheirCadi #DevopsMyCode
Métriques -‐ process • Mesurer (ligne de log)
• Monitorer
• Alerter
• Decider
• Agir
@ZouheirCadi #DevopsMyCode
Monitoring -‐ Aler:ng • Monitoring
• Graphite, • Ganglia (monitoring des systèmes distribués) • Outils payants : newRelic, AppDynamics
• Alerting • Nagios • Outils payants : newRelic, AppDynamics
@ZouheirCadi #DevopsMyCode
Supervision batch/audit
@ZouheirCadi #DevopsMyCode
Supervision audit
@ZouheirCadi #DevopsMyCode
Résilience
@ZouheirCadi #DevopsMyCode
Résilience
@ZouheirCadi #DevopsMyCode
Résilience
@ZouheirCadi #DevopsMyCode
Résilience
@ZouheirCadi #DevopsMyCode
Résilience
@ZouheirCadi #DevopsMyCode
Résilience
@ZouheirCadi #DevopsMyCode
Résilience
@ZouheirCadi #DevopsMyCode
Résilience
@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
@ZouheirCadi #DevopsMyCode
Quelle(s) métrique(s) • Métrique de dysfonctionnement
• $$$$$ • Dégrade le fonctionnement
@ZouheirCadi #DevopsMyCode
@ZouheirCadi #DevopsMyCode
Qui suis-‐je
@ZouheirCadi #DevopsMyCode
Qui suis-‐je ?
@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
@ZouheirCadi #DevopsMyCode
Qui suis-‐je ?
@ZouheirCadi #DevopsMyCode
Qui suis-‐je ?
@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
@ZouheirCadi #DevopsMyCode
Health-‐check
@ZouheirCadi #DevopsMyCode
Que fais-‐je ?
@ZouheirCadi #DevopsMyCode
Ou suis-‐je : Dans quelle organisa:on ?
@YourTwitterHandle @YourTwitterHandle @ZouheirCadi #DevopsMyCode
CONCLUSION
@ZouheirCadi #DevopsMyCode
Conclusion
@ZouheirCadi #DevopsMyCode
Conclusion
@ZouheirCadi #DevopsMyCode
Conclusion
@ZouheirCadi #DevopsMyCode
Conclusion
@ZouheirCadi #DevopsMyCode
Conclusion
@ZouheirCadi #DevopsMyCode
Conclusion
@ZouheirCadi #DevopsMyCode
Conclusion
@ZouheirCadi #DevopsMyCode
Conclusion
@ZouheirCadi #DevopsMyCode
Conclusion
@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
@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.
@ZouheirCadi #DevopsMyCode
Con:nuous delivery
@YourTwitterHandle @YourTwitterHandle @ZouheirCadi #DevopsMyCode
Q & A
top related