de nombreux autres produits.
New Relic, en compagnie de AppDynamics et Dynatrace fait partie des leaders suivant le Gartner (Magic Quadrant for Application Performance Monitoring, 28 Octobre 2014)
A titre d'exemple nous utiliserons New Relic pour montrer le type de fonctionnalités intéressantes dans des environnements de test ou de développement.
Ceci est une vision partielle des APMs; de nombreuses fonctionnalités, comme le Real User Monitoring (RUM), ne sont pas illustrées ici.
La mise en place est très simple. Après l’inscription sur le site vous récupérez un zip contenant en particulier le fichier de paramètres newrelic.yml déjà personnalisé votre clé de licence ainsi que l’agent java : newrelic.jar. Extrayez le zip dans un répertoire de votre serveur et ajoutez la directive -javaagent:/<chemin vers le répertoire de new Relic>/newrelic.jar
en paramètre de lancement de votre application. C’est tout. Après avoir utilisé votre application vous pouvez directement visualiser son comportement.
Ici notre application publie des services RESTs. Sans aucun paramétrage le produit est capable d'analyser les diverses requêtes envoyées à l'application et de fournir une vue synthétique de l'activité.
Par simple click il est possible d'effectuer un drill down sur une requête et obtenir les méthodes les plus longues ainsi que le nombre d'appels de cette requête au cours du temps. Les APM modernes ont une interface très intuitive permettant une prise en main très rapide.
Drill down du traitement d'une requête HTTP
L'outil permet de capturer les diverses requêtes effectuées sur la base de données et d'identifier les plus consommatrices. L'analyse temporelle permet en un coup d’œil de se rendre compte si les requêtes sont jouées de manière régulière ou uniquement à certains moments. Ici par exemple les 'vat Insert' ne sont exécutés qu'au lancement de l'application.
Liste des requêtes SQL et de leur temps d'exécution
L'outil permet de visualiser l'évolution de l'utilisation de la mémoire et des différents espaces. Cela permet de diagnostiquer des problèmes de type fuite mémoire ou caches qui ne se vident jamais.
Evolution de l'utilisation de la mémoire
Le temps passé en Garbage Collection permet d'identifier des problèmes de ralentissement de l'application dus à une trop forte activité sur la mémoire, sans qu'il y ait nécessairement de fuite mémoire.
Il est aussi possible de voir des informations sur l'utilisation des threads.
L'APM capture diverses informations très utiles comme les paramètres de lancement de la JVM et les différents Jars utilisés ainsi que leur version
Paramètres de la JVM et packages
En production l'APM est une brique incontournable pour surveiller le fonctionnement des applications et être capable de diagnostiquer et comprendre les problèmes de performances qui peuvent survenir. Des développements spécifiques n'arriveront jamais à rivaliser avec un APM sur la collecte automatisée, le stockage et la visualisation de métriques. Il est à noter qu'il existe aussi des solutions spécifiques à une technologie, comme Javamelody pour J2EE, qui permettent d'intégrer une partie des fonctionnalités d'un APM dans l'application elle même.
Dans des environnements de tests ou de développement l'APM fait office de couteau suisse de la performance. Il permet aux équipes d'analyser le fonctionnement d'une application sans passer par de fastidieux paramétrages, des analyses de logs chronophage et divers outils nécessitant une expertise pointue.
Un APM est finalement un formidable outil de communication permettant aux diverses parties prenantes d'avoir une vue complète sur le fonctionnement d'une application ou le résultat d'exécution de tests de performances.