Que vous soyez Dev, Ops ou QA, vous avez sûrement eu à investiguer des problèmes de performances sur une application Java.
Savez-vous que cela peut se faire simplement, sans toucher la moindre ligne de code, en moins de 5mn et sans impact sur votre application ?
Mieux encore, si je vous disais que vous pouvez utiliser le même outil que vous soyez en Dev, QA ou en production. Le même outil pour tous, ça sent bon le DevOps non ?
2. Qui suis-je ?
Dev, QA, Ops, CI/CD
Actuellement éleveur d’infrastructure chez
En charge notamment de
https://github.com/hgomez
@hgomez
LyonJUG - 24 Octobre 2018
4. Un APM, qu’est-ce donc ?
Application Performance Management (*)
Outillage de mesure des performances d’une application
Terme principal : TPS (Transaction/s)
LyonJUG - 24 Octobre 2018
5. Un APM c’est cher
Oui mais ça c’était avant Glowroot
LyonJUG - 24 Octobre 2018
6. Un APM c’est un outil d’Ops
Ops - SLA, Tuning Prod
QA - Préprod, Réduction du taux de WTF
Dev - Run à fond
LyonJUG - 24 Octobre 2018
7. Glowroot, c’est surpuissant
Accès à l’instrumentation JVM instruments et MBeans
Multi frameworks (Servlet, Netty, Play 1&2, VertX …)
Multi protocoles (JDBC, Elastic, Cassandra ..)
Multi App Server (Tomcat, Jetty, Wildfly, Payara…)
Détection des pistes d’exécutions standard (servlet, quartz …)
Ajout de pistes d'exécutions à la volée
LyonJUG - 24 Octobre 2018
8. Glowroot, APM Java
Agent Java
Mode Autonome ou connecté (Central)
Overhead marginal < 10us
Surcoût mémoire minime ~ 2ko
LyonJUG - 24 Octobre 2018
10. Un web server sur le port 4000
En Dev sans mode debug (pleine vitesse)
En QA pour remonter rapidement des hotspots
En Prod sur une VM, un container, oneshot mode
En mode autonome
LyonJUG - 24 Octobre 2018
Stockage local dans H2 DB, à éviter sur de longues périodes
11. Java Agent, mode autonome
Exemple pour Tomcat
#
# Injection de l’Agent Glowroot
#
export CATALINA_OPTS="-javaagent:/path/to/glowroot.jar $CATALINA_OPTS"
Astuce: Pour Tomcat, dans bin/setenv.sh (créer le fichier et le rendre
exécutable)
LyonJUG - 24 Octobre 2018
12. Java Agent, mode autonome - port Web
Par défaut 4000, peut être défini dans admin.json
"web": {
"port": 4000,
"bindAddress": "127.0.0.1",
"contextPath": "/",
"sessionTimeoutMinutes": 30,
"sessionCookieName": "GLOWROOT_SESSION_ID"
LyonJUG - 24 Octobre 2018
13. En mode connecté
Connecté à Glowroot Central (HTTP/2 - gRPC)
Pré-requis un Cassandra >= 2.1
Pour suivre l’activité d’une ferme d’applications
Groupement des applications via glowroot.agent.rollup.id
Specification de l’instance via glowroot.agent.id
LyonJUG - 24 Octobre 2018
15. Java Agent, mode connecté
Exemple pour Tomcat
#
# Glowroot using Central
#
export CATALINA_OPTS="-javaagent:/path/to/glowroot/glowroot.jar
-Dglowroot.agent.id=tomcat
-Dglowroot.agent.rollup.id=app-voxxedlu2018
-Dglowroot.collector.address=central:8181
$CATALINA_OPTS"
LyonJUG - 24 Octobre 2018
17. Java Agent, connecté & cluster
Exemple pour Tomcat
#
# Glowroot using Dual Central
#
export CATALINA_OPTS="-javaagent:/path/to/glowroot/glowroot.jar
-Dglowroot.agent.id=tomcat
-Dglowroot.agent.rollup.id=app-voxxedlu2018
-Dglowroot.collector.address=http://central1:8181,http://central2:8181
$CATALINA_OPTS"
LyonJUG - 24 Octobre 2018
18. # Glowroot Agent injection pour SonarQube Web dans sonar.properties
sonar.web.javaAdditionalOpts=
-javaagent:/path/to/glowroot/glowroot.jar
-Dglowroot.multi.dir=true
-Dglowroot.agent.id=web
-Dglowroot.agent.rollup.id=sqdev
# Glowroot Agent injection pour SonarQube ComputeEngine dans sonar.properties
sonar.ce.javaAdditionalOpts=
-javaagent:/path/to/glowroot/glowroot.jar
-Dglowroot.multi.dir=true
-Dglowroot.agent.id=ce
-Dglowroot.agent.rollup.id=sqdev
Java Agent, connecté, plusieurs jvm locales
LyonJUG - 24 Octobre 2018
Depuis la 0.11.x, il faut spécifier -Dglowroot.multi.dir=true
21. Glowroot c’est
Pour tous
Simplissime à déployer
Mode Autonome ou Connecté
Déclenchement sur dépassement de seuils
Pas d’impact sur le run (<10us-2ko/req)
“Embarquable” dans vos applications (ASL 2.0)
LyonJUG - 24 Octobre 2018