Utiliser Application Insights pour monitorer les performances et la disponibilité de vos applications Windows Azure
Dans un précédent billet, je vous présentais l’utlisation d’Application Insights pour monitorer les usages et comportements de vos utilisateurs dans une application Windows Store App, et Jonathan parlait du pendant sur Windows Phone 8. Aujourd’hui, je vous propose de nous intéresser à une toute autre fonctionnalité d’Application Insights : le monitoring des performances de vos applications Windows Azure !
Déclaration de l’application sur le dashboard d’Application Insights
Pour commencer, vous devez déclarer l’application Windows Azure que vous souhaitez monitorer depuis le dashboard d’Application Insights sur Visual Studio Online. Depuis cette interface, cliquez sur le lien Add an application :
Comme pour les applications Windows Store Apps et Windows Phone, Microsoft nous a bien mâché le travail, puisqu’il suffit de suivre l’assistant en pas à pas pour la configurer.
Cliquez sur le lien pour confirmer le type de votre application et répondez simplement aux questions :
Ceci étant fait, vous n’avez plus qu’à récupérer les fichiers pour l’instrumentation de Cloud Service Azure en cliquant sur le lien disponible dans la section 2 “Download”.
Configuration du Cloud Service
La mise en place du monitoring de performances via App Insights dans un Cloud Service se fait par configuration, très simplement. Tout d’abord, créez un dossier AppInsightsAgent dans le rôle Azure que vous souhaitez instrumenter et ajoutez-y les fichiers UnifiedBootstrap.bat et UnifiedBootstrap.ps1 qui se trouvent dans l’archive que vous avez téléchargée depuis le portail précédemment :
Attention, pensez à bien définir la build action de ces deux éléments à Content et à les copier en sortie de build :
Vous allez maintenant devoir configurer une startup task au niveau de la définition de la configuration de votre rôle Azure (ServiceDefinition.csdef) :
<Startup> <Task commandLine="AppInsightsAgent\UnifiedBootstrap.bat" executionContext="elevated" taskType="background"> </Task> </Startup>
Pour configurer Application Insights sur votre compte, vous devez également ajouter les paramètres de configuration suivant dans la définition :
<Setting name="Microsoft.AppInsights.AccountId" /> <Setting name="Microsoft.AppInsights.InstrumentationKey" /> <Setting name="Microsoft.AppInsights.EnableMonitoring" />
Enfin, il est évidemment nécessaire de renseigner les valeurs de ces paramètres dans les fichiers des différentes configurations de votre rôle Azure, avec par exemple la valeur EnableMonitoring à true pour ce que vous déployez dans Azure et à false pour votre environnement de développement local. Vous pouvez récupérer votre AccountId et InstrumentationKey depuis le portail d’Application Insights :
<Setting name="Microsoft.AppInsights.AccountId" value="{Votre ID}" /> <Setting name="Microsoft.AppInsights.InstrumentationKey" value="{Clé d'instrumentation}" /> <Setting name="Microsoft.AppInsights.EnableMonitoring" value="true" />
Et voilà, le tour est joué ! Cela n’est pas plus compliqué que ça.
Il ne vous reste plus qu’à redéployer votre service dans Azure, patienter environ une demi heure, et vos premières statistiques de performance seront disponibles sur le portail d’Application Insights.
Configuration du suivi de la disponibilité
La configuration du suivi de la disponibilité d’une application Web permet de contrôler de manière régulière que votre application est bien disponible d’une part, et d’autre part, d’avoir un suivi des temps de réponse de cette application. Pour le configurer, rendez-vous sur le dashboard App Insights sur le portail Visual Studio Online, dans l’onglet Availability et cliquez sur le bouton + :
Vous pouvez alors choisir d’ajouter une URL simple, qui sera accedée à intervals réguliers par les services d’App Insights, ou alors un test web en plusieurs étapes qui vous permet d’importer directement un fichier de test web et de choisir les localisations géographiques depuis lesquelles il doit être joué et à quelle fréquence :
Dans le cas présent, j’ai choisi de rajouter une URL simple :
Il suffit alors de renseigner l’adresse de l’application web, de sélectionner les localisations depuis lesquelles la tester, la fréquence, d’indiquer des critères de succès ou d’alertes, puis éventuellement de préciser une ou plusieurs adresses e-mail à contacter en cas de problème.
Tableau de bord de suivi de disponibilité
Tout étant correctement configuré, vous pouvez désormais suivre votre application depuis différents tableau de bord. Le premier concerne la disponibilité. Pour y accéder, sélectionnez votre application dans la liste de gauche dans la section Availability > Synthetic monitors. Vous pouvez alors visualiser les résultats des différents tests, réussis ou en échec :
Tableau de bord des perfomances et diagnostique
Pour accéder au tableau de bord des performances, rendez-vous dans l’onglet Performance et sélectionnez l’application que vous avez configurée. Le premier dashboard vous offre des informations synthétiques sur les temps de réponse de l’application, les accès SQL, service bus ou blob storage par exemple, mais aussi des informations concernant la consommation CPU, les exceptions ou encore les requêtes qui ont mis le plus de temps à s’exécuter :
Si vous cliquez sur le titre d’un des graphiques, vous entrerez directement dans la section metrics du tableau de bord de diagnostique et vous pourrez visualiser plus de détails.
La section events vous permet notamment de récupérer la liste des exceptions qui se sont produites dans l’application :
Si vous double-cliquez sur une exception, vous aurez alors accès au détails de celle-ci, sa stack trace etc.. et vous pourrez également télécharger le fichier d’intellitrace associé qui vous permettra de visualiser cette exception dans le debugger historique de visual studio !!
Plutôt sympa non ?
Conclusion
Comme nous l’avons vu dans cet article, la mise en place du suivi des performances, du diagnostique et de la disponibilité d’une application Windows Azure est ultra simple avec Application Insights, et surtout permet d’avoir un tableau de bord très riche directement sur le portail de Visual Studio Online pour suivre ces métriques !
Comme on dit, y’a plus qu’à !
A bientôt
Julien
Commentaires