Installation de l'APM GlowRoot pour Windows Server

  • Rédacteur :
  • Date de modification : 16/12/2022

1. Installation de l'APM GlowRoot

Nous allons installer un outil d'APM (Application Performance Management) de monitoring Applicatif que nous allons télécharger via l'url suivante : https://glowroot.org/.

L'accès à GlowRoot :

  • Sur le serveur: http://localhost:4000/glowroot
  • Depuis le DNS : https://<votre DNS>/glowroot

Lors de notre installation, la dernière version disponible sur le site de GlowRoot et que nous avons téléchargé, est la version GlowRoot X.XX.X


Création du répertoire de téléchargement pour l'APM GlowRoot

> md D:\jalios\download\glowroot\

Téléchargement du fichier glowroot-X.XX.X-dist.zip dans le répertoire D:\jalios\download\glowroot\

> Invoke-WebRequest <url de téléchargement de glowroot> -OutFile D:\jalios\download\glowroot\glowroot-X.XX.X-dist.zip

Création du répertoire d'installation pour GlowRoot:

> md D:\jalios\bin\glowroot\

Installation de GlowRoot:

> &D:\jalios\bin\zip\7z.exe x D:\jalios\download\glowroot\glowroot-X.XX.X-dist.zip -o"D:\jalios\bin\glowroot\"

On renomme le repertoire avec le numeros de version

> Move-Item -force D:\jalios\bin\glowroot\glowroot\ D:\jalios\bin\glowroot\glowroot-X.XX.X-dist\

Création du répertoire des liens symboliques des instances GlowRoot:

> md D:\jalios\instance\glowroot\

Création d'un lien symbolique du répertoire GlowRoot dédié à l'application Jalios :

> cmd /c "mklink /D `"D:\jalios\instance\glowroot\jplatform`"   `"D:\jalios\bin\glowroot\glowroot-X.XX.X-dist\`""

Création des répertoires de configuration de GlowRoot

> md D:\jalios\app\glowroot\jplatform\conf 
> md D:\jalios\app\glowroot\jplatform\data
> md D:\jalios\app\glowroot\jplatform\logs
> md D:\jalios\app\glowroot\jplatform\temp

Création du fichier de configuration des repertoires de GlowRoot

> New-Item D:\jalios\instance\glowroot\jplatform\glowroot.properties -ItemType file

Ajout des éléments suivants dans le fichier de configuration D:\jalios\instance\glowroot\jplatform\glowroot.properties

conf.dir=D:\\jalios\\app\\glowroot\\jplatform\\conf
log.dir=D:\\jalios\\app\\glowroot\\jplatform\\logs
tmp.dir=D:\\jalios\\app\\glowroot\\jplatform\\temp
data.dir=D:\\jalios\\app\\glowroot\\jplatform\\data

Création du fichier de configuration d'administration par défaut de GlowRoot

> New-Item D:\jalios\app\glowroot\jplatform\conf\admin.json -ItemType file

Ajout des éléments suivants dans le fichier de configuration D:\jalios\app\glowroot\jplatform\conf\admin.json

{
  "web": {
"port": 4000, "bindAddress": "127.0.0.1",
"contextPath": "/glowroot" } }

 

2. Configuration de l'APM dans le service Apache Tomcat

Arrêt du service d'Apache Tomcat

> &D:\jalios\instance\tomcat\jplatform\bin\tomcat8.exe //SS//jplatform

Ajout de l'agent GlowRoot au service Apache Tomcat

> &D:\jalios\instance\tomcat\jplatform\bin\tomcat8.exe //US//jplatform --JvmOptions "-javaagent:D:\jalios\instance\glowroot\jplatform\glowroot.jar;-XX:HeapDumpPath=D:\jalios\support\jplatform\dump\;-Dcatalina.home=D:\jalios\instance\tomcat\jplatform\;-Dcatalina.base=D:\jalios\app\tomcat\jplatform\;-Djava.endorsed.dirs=D:\jalios\instance\tomcat\jplatform\endorsed;-Djava.io.tmpdir=D:\jalios\app\tomcat\jplatform\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=D:\jalios\app\tomcat\jplatform\conf\logging.properties;-XX:+UseG1GC;-XX:MaxMetaspaceSize=512m;-Djava.awt.headless=true;-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true;-Dorg.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true;-Dcom.sun.management.jmxremote;-Dcom.sun.management.jmxremote.authenticate=false;-Dcom.sun.management.jmxremote.ssl=false;-Dcom.sun.management.jmxremote.port=8010;-Djava.net.preferIPv4Stack=true;-Djava.rmi.server.hostname=127.0.0.1;-Dcom.sun.management.jmxremote.rmi.port=8010;-Dcom.sun.management.jmxremote.autodiscovery=true;"

Lancement du service d'Apache Tomcat

> &D:\jalios\instance\tomcat\jplatform\bin\tomcat8.exe //ES//jplatform

 

3. Configuration du serveur web Apache HTTPD

Modifier le fichier de configuration D:\jalios\app\httpd\conf\jplatform\100-jplatform_proxy_ajp.conf

....
<Proxy "http://localhost:4000/glowroot">
 ProxySet keepalive=On
 ProxySet connectiontimeout=5 timeout=59 retry=1 max=5
 Require all granted
</Proxy>

ProxyPass /glowroot http://localhost:4000/glowroot
ProxyPassReverse /glowroot http://localhost:4000/glowroot
....

Modifier le fichier de configuration D:\jalios\app\httpd\conf\jplatform\000-jplatform_modules.conf

....
LoadModule proxy_http_module modules/mod_proxy_http.so

Test de la configuration du serveur Web

> &D:\jalios\instance\httpd\default\bin\httpd.exe -t

Arrêt-relance du serveur web Apache HTTPD

> &D:\jalios\instance\httpd\default\bin\httpd.exe -k restart

22 commentaires

Daniel HENRIET

Bonjour, le chemin 

D:\jalios\support\jplatform\dump\

n'existe pas chez moi : le dossier support est absent.

Faut il le créer (comme le dossier instance) ?

Daniel HENRIET

Benoît Dissert De plus, je ne trouve pas sur le serveur hébergeant le service httpd de fichier qui pourrait ressembler à 100-jplatform_proxy_ajp.conf ou à 000-jplatform_modules.conf.

Benoît Dissert

Daniel HENRIET 

D'une part il faut partir de la racine d'installation dans votre envirronnement. Ce n'est sans doute pas D:\jalios, mais plus vraisemblablement D:\JaliosSuite ou quelque chose comme ça, d'autre part il suffit de créer le répertoire D:\JaliosSuite\support\jplatform\dump : il s'agit juste d'un répertoire de destination pour les dumps, donc de base, il est vide.

D'autre part, chez vous, vous n'utilisez pas AJP, mais HTTP (entre Apache HTTPD et Apache Tomcat). Il suffit donc de mettre la partie indiquée dans le fichier de configuration de virtualhosting, qui doit être quelque chose comme : D:\JaliosSuite\app\httpd\jplatform\conf\20-jplatform-https.conf.

Daniel HENRIET

Benoît Dissert 

je te suggère donc d'ajouter la commande de création du répertoire dans la procédure.

Daniel HENRIET

Benoît Dissert 

Ci-joint le script powershell adapté à mon environnement ; au démarrage de tomcat, j'ai l'erreur The Jalios - Tomcat (jplatform) service terminated with the following service-specific error: The system cannot open the file. (Lien en accès restreint)

Daniel HENRIET

Benoît Dissert 

En ce qui concerne la modification à apporter sur le serveur HTTPD. J'obtiens une erreur lors du test de la configuration du serveur web, y compris sur l'environnement de production où aucune manip n'a encore été effecutée :

D:\JaliosSuite\bin\httpd\apache24\bin>httpd.exe -t
httpd.exe: Syntax error on line 39 of D:/JaliosSuite/bin/httpd/apache24/conf/httpd.conf: ServerRoot must be a valid directory

Ci-joint le fichier httpd.conf. (Lien en accès restreint)  

En outre, puisque notre architecture dispose de 2 serveurs windows différents hébergeant les services https et tomcat, j'imagine qu'il faut spécifier

http://notreserveurapplicatif.notredomaine:4000/glowroot

au lieu de 

http://localhost:4000/glowroot

Enfin,  je n'ai pas trouvé de fichier 000-jplatform_modules.conf, mais la ligne LoadModule proxy_http_module modules/mod_proxy_http.so est déjà présente dans le fichier 00-common.conf. Cela suffit il ?

Benoît Dissert

Daniel HENRIET 

Il n'y a pas mention du fichier concerné par l'erreur ? (suite au commentaire #5)

Benoît Dissert

Daniel HENRIET 

Pour l'erreur mentionné, créez un répertoire (vide) C:/Apache24 sur le serveur hébergeant HTTPD. Ce répertoire n'est de toutes façons pas utilisé dans votre contexte, mais HTTPD fait quand même la vérification d'existence.

Dans la mesure où Tomcat et HTTPD sont sur deux machines distinctes, il faut également que la machine sur laquelle est présent HTTPD puisse accéder au port 4000 de la machine sur laquelle se trouve Tomcat. S'il y a des firewalls sur chaque machines, il faut ouvrir le port 4000 pour un accès depuis le frontal.

Une seule déclaration LoadModule proxy_http_module modules/mod_proxy_http.so est suffisante.

Daniel HENRIET

Benoît Dissert 

Problème au démarrage de tomcat : le fichier n'est pas mentionné ni dans le journal windows, ni dans les logs d'apache.

Problème de test de bon paramétrage de httpd : j'ai modifié le fichier httpd.conf pour que $SRVROOT pointe sur le bon dossier (D:\JaliosSuite\bin\httpd\apache24) ; cela semble plus propre.

Cela a permis de ne plus avoir l'erreur de syntaxe.

J'ai toutefois une autre erreur : (Lien en accès restreint)  

Cependant, sous DOS, la commande passe sans erreur.

C'est donc l'interpréteur powershell qui m'embête ; une idée ?

Daniel HENRIET

En faisant le restart de httpd, j'ai l'erreur suivante :

C:\Windows\system32>D:\JaliosSuite\bin\httpd\apache24\bin\httpd.exe -k restart
[Thu Apr 27 13:49:15.758504 2023] [mpm_winnt:error] [pid 548:tid 372] (OS 2)The system cannot find the file specified.  : AH00436: No installed service named "Apache2.4".

Toutefois, j'ai pu stopper et démarrer le service httpd ; je pense que c'est équivalent.

Benoît Dissert

Daniel HENRIET Lors de l'installation avec JWindowsInstall, le nom du service est changé en "jalios-apacheweb". Vous pouvez le voir en allant dans l'interface des services, puis click-droit, puis "propriétés" sur le service en question.

Daniel HENRIET

Benoît Dissert , ça je l'avais bien compris, mais où faut il changer apache2.4 en jalios-apacheweb ?

Benoît Dissert

1 vote :

Daniel HENRIET 

Au lieu de lancer :

C:\Windows\system32>D:\JaliosSuite\bin\httpd\apache24\bin\httpd.exe -k restart

Il faut lancer :

C:\Windows\system32>D:\JaliosSuite\bin\httpd\apache24\bin\httpd.exe -k restart -n "jalios-apacheweb"
Daniel HENRIET

Paramétrage de tomcat avant la manip : (Lien en accès restreint)

Daniel HENRIET

Benoît Dissert 

Dans The java option -Djava.endorsed.dirs is no longer needed or suppported. - Knowledge Base - Qvera, il est indiqué que la directive -Djava.endorsed.dirs bloque à partir de java 8 le démarrage de la JVM !

Daniel HENRIET

Benoît Dissert 

à priori, c'est installé ; comment peut on l'utiliser ?

Benoît Dissert

Daniel HENRIET 

Bonne nouvelle.

Vous avez sur le site de Glowroot un exemple cf: https://demo.glowroot.org/jvm/gauges?gauge-name=java.lang:type%3DMemory:HeapMemoryUsage.used

Cette interface, à laquelle vous pouvez accéder maintenant donne beaucoup d'informations (évidement, pour l'instant, il n'y en a pas beaucoup parce que ça vient de démarrer) sur la période de temps sur laquelle il y a eu les métriques de prises.

Entre autre, ça permet de voir s'il y a une différence de comportement au moment où vous constatez des problèmes par rapport à un comportement nominal.

Cette même interface permet de voir s'il y a trop de temps passé dans un traitement background type garbage collection à certain moments stratégiques, ce qui indiquerait que :

  • soit il faut changer l'algorithme de GC
  • soit il y a une allocation anormales de données à un moment précis

Cela permet également facilement d'avoir des ThreadDumps (à prendre aux moments où des ralentissements se font sentir) pour comprendre sur quoi ça bloque dans ces moments (Thread Dumps à fournir au support).

Daniel HENRIET

Benoît Dissert 

Quelle URL faut il saisir ? Depuis mon poste, depuis le serveur frontal httpd ou depuis le serveur applicatif tomcat ?

Tu indiques qu'il n'y a pas beaucoup de données, parce que cela vient de démarrer. Est-ce que cela veut dire que cela collecte en permanence des données qui sont stockées quelque part ? Dans un fichier ?

Daniel HENRIET

Benoît Dissert j'aimerais bien pouvoir utiliser glowroot rapidement.

Benoît Dissert

Daniel HENRIET Il y a des données qui sont générées dans le répertoire de données, celui qui est renseigné par 

data.dir

dans le fichier de configuration.

Vous pouvez accéder à l'interface de Glowroot depuis le serveur (avec Apache HTTPD), en accédant à l'adresse :

http://localhost:4000/glowroot

si vous avez utilisé l'exemple de configuration indiquée ci-dessus.

Daniel HENRIET

Benoît Dissert j'ai bien identifié le chemin des datas. à surveiller.

l'accès à l'url ne fonctionne pas, mais je ne suis pas sûr de mon paramétrage du fichier 20-https-site.conf : dans le paragraphe 3, les 3 occurences de localhost font elles référence au serveur windows hébergeant httpd ou à celui qui héberge tomcat ?

Daniel HENRIET

Benoît Dissert j'ai fait un essai en positionnant 

ProxyPass /glowroot http://localhost:4000/glowroot
ProxyPassReverse /glowroot http://localhost:4000/glowroot

 

après la directive proxypass / http:....

Mais ça ne fonctionne toujours pas.