Voir le flux RSS

Blog de Hinault Romaric (.NET Core, ASP.NET Core, Azure, DevOps)

[Actualité] DevOps avec Azure – Partie 10 : Introduction à Azure Application Insights et configuration

Noter ce billet
par , 11/08/2018 à 20h57 (230 Affichages)
Ce billet est le dixième de ma série consacrée à DevOps avec la plateforme Cloud Microsoft Azure.


DevOps sur Microsoft Azure – Partie 1 : Introduction à DevOps

DevOps avec Azure – partie 2 : Infrastructure as Code (IaC) avec Azure ARM

DevOps avec Azure – Partie 3 : Création et déploiement des ressources avec Visual Studio et ARM Template

DevOPS avec Azure – Partie 4 : ARM Template CI & CD avec VSTS

DevOps avec Azure – Partie 5 : stratégie de CI & CD pour l’infrastructure et le Code, 1re approche

DevOps avec Azure – Partie 6 : stratégie de CI & CD pour l’infrastructure et le Code, approche 2

DevOps avec Azure - partie 7 : à la découverte de l’extension « Continuous Delivery Tools for Visual Studio »

DevOPS avec Azure - partie 8 : App Service Continuous Delivery

DevOps avec Azure - partie 9 : à la découverte d’Azure DevOps Projects


Dans un projet DevOps, les parties prenantes doivent s’améliorer de façon continue. Il est quasi impossible d’apporter des améliorations sans être en mesure d’évaluer de façon fiable ce qui a été fait. C’est pourquoi il est recommandé de disposer des indicateurs permettant de mesurer les performances de l’application, d’évaluer la qualité des livrables, d’être informé et pouvoir réagir rapidement en cas de bogue, etc. Surtout lorsque l’application est en production, car ces indicateurs de performances et de qualité seront une base de travail pour améliorer l’application et mieux répondre aux besoins des utilisateurs.

Un pipeline DevOps doit donc intégrer des outils qui permettront aux équipes projets de s’améliorer en continu. Cela s’inscrit dans la portion Mesure des cinq piliers de DevOps.


Pour adresser ce besoin, Azure offre comme solution Azure Applications Insights.

Qu’est-ce qu’Azure Application Insights

Azure Application Insights est un service extensible de gestion des performances des applications Web, permettant une analyse temps réel de son application. Le service détecte automatiquement les problèmes de performances. Il intègre de puissants outils d’analyse qui aident à diagnostiquer les problèmes et à comprendre ce que font les utilisateurs avec votre application. Il a été conçu pour permettre d’améliorer continuellement les performances et la convivialité. Il prend en charge un large éventail de plates-formes, notamment .NET, Node.js et J2EE, hébergées sur site ou dans le cloud.
L’un des atouts d’Application Insights est le fait qu’il s’intègre à votre processus DevOps et offre des points de connexion à un large éventail d’outils de développement.

Application Insight analyse entre autres les éléments suivants :

  • Taux de demandes, temps de réponse et taux d’échec : ce qui permet d’identifier les pages les plus consultées, à quel moment de la journée, et déterminer où se trouvent vos utilisateurs. De savoir quelles sont les pages qui offrent les meilleures performances. Si vos temps de réponse et votre taux d’échec augmentent lorsqu’il y a plus de requêtes, vous avez peut-être un problème de ressources.
  • Taux de dépendance, temps de réponse et taux d’échec : permet de détermine si des services externes vous ralentissent.
  • Exceptions : grâce aux informations fournies, vous pouvez analyser les statistiques agrégées, ou choisir des instances en particulier et explorer l’arborescence des appels de procédure et les requêtes connexes. Les exceptions de serveur et de navigateur sont signalées.
  • Consultations de pages et performances de chargement : indiquées par le navigateur de vos utilisateurs.
  • Appels AJAX à partir de pages web : taux, temps de réponse et taux d’échec.
  • Nombre de sessions et d’utilisateurs.
  • Compteurs de performances de vos serveurs Windows ou Linux, par exemple le processeur, la mémoire et l’utilisation du réseau.
  • Diagnostics d’hébergement de Docker ou Azure.
  • Journaux de suivi des diagnostics de votre application : pour pouvoir mettre en corrélation les événements de suivi avec les demandes.
  • Mesures et événements personnalisés que vous écrivez vous-même dans le code client ou serveur, pour effectuer le suivi des événements commerciaux tels que les articles vendus ou les matchs gagnés.


Nom : 00-sample.png
Affichages : 675
Taille : 144,4 Ko

Intégration d’Application Insights dans le code de l’infrastructure

Dans les parties précédentes de cette série de billets de blog, nous avons procédé à la création de notre infrastructure en utilisant des fichiers de scripts JSON (ARM Template). Ces fichiers de scripts ont été intégrés dans un pipeline d’intégration et livraison continue, tout comme le code de l’application.

De ce fait, pour chaque évolution de l’infrastructure, les modifications sont effectuées dans les fichiers de scripts de configuration et archivées. A ce moment, le déploiement des changements en production se fait automatiquement par le pipeline.

Nous disposons actuellement des ressources suivantes dans notre infrastructure sur Azure.

Nom : img1.PNG
Affichages : 654
Taille : 34,3 Ko

Notre besoin actuel est de pouvoir ajouter la nouvelle ressource Application Insights à notre infrastructure. La nouvelle ressource à ajouter est de type « Microsoft.Insights/components ». Le code JSON ARM Template permettant de créer cette dernière est le suivant :

Code json : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
   {
      "apiVersion": "2014-04-01",
      "name": "[variables('webSiteName')]",
      "type": "Microsoft.Insights/components",
      "location": "East US",
      "dependsOn": [
        "[resourceId('Microsoft.Web/sites/', variables('webSiteName'))]"
      ],
      "tags": {
        "[concat('hidden-link:', resourceGroup().id, '/providers/Microsoft.Web/sites/', variables('webSiteName'))]": "Resource",
        "displayName": "AppInsightsComponent"
      },
      "properties": {
        "applicationId": "[variables('webSiteName')]"
      }
    }

La ressource Application Insights aura le même nom que l’application Web. L’emplacement doit être le même que celui de l’application car les deux ressources doivent être créées dans le même ressource group. La ressource Application Insights dépend de la ressource pour l’application Web, dont le second sera créé avant le premier.

Il est important d’ajouter le paramètre tags qui est linké avec ResourceGroup Id de la Web App. Cela permet non seulement d’avoir les ressources dans le même ressource group, mais aussi de créer un lien entre les deux ressources. Ainsi, dans le portail Azure à partir de la WebApp vous pouvez naviguer vers Application Insights.

Pour ajouter cette nouvelle ressource, vous devez simplement éditer le fichier JSON de description de votre infrastructure et ajouter le code ci-dessus :

Nom : img2.PNG
Affichages : 664
Taille : 58,0 Ko

C’est tout. Une fois vos modifications enregistrées et archivées, votre infrastructure sera mise à jour avec la création de la nouvelle ressource Application Insights :

Nom : img3.png
Affichages : 648
Taille : 45,6 Ko

Configuration d’Application Insights dans le projet

Afin qu’Application Insights puisse collecter les données de télémétrie sur les performances et le fonctionnement de notre application, nous devons intégrer le SDK de ce dernier et configurer notre application afin que les informations soient transmises à la ressource Application Insights que nous avons créée précédemment.

Cela va demander la modification de plusieurs fichiers. Mais, en utilisant Visual Studio, l’intégration est assez simple, car une interface est offerte pour guider le développeur dans le processus.

L’intégration d’Application Insights se fait à partir de l’explorateur de solution en faisant un clic sur le projet, puis en sélectionnant Ajouter, ensuite Application Insights Telemetry.

Nom : img4.png
Affichages : 652
Taille : 42,8 Ko

Dans la fenêtre de configuration qui va s’afficher, cliquez sur Bien démarrer.

Il y’a une interface qui va s’afficher permettant de sélectionner votre compte Azure, l’abonnement Azure, ensuite la ressource Application Insights. Si cette dernière n’existe pas, il est possible d’en créer directement une. Mais, procéder ainsi serait en contradiction avec l’approche Infrastructure as Code (IaC). Ceci parce que l’infrastructure sera modifiée sans passer par les scripts de configuration.

Nom : img5.PNG
Affichages : 654
Taille : 20,2 Ko

Un clic sur s’inscrire et la configuration est effectuée pour votre projet.

Le fichier .csproj est modifié pour ajouter les packages nécessaires au fonctionnement de Application Insights. Une entrée est effectuée dans le fichier appsettings.jons pour ajouter la clé d’instrumentation de la ressource Application Insights. La classe Program est mise à jour pour prendre en compte Application Insights dans le pipeline HTTP de ASP.NET Core. Et enfin, le Layout de l’application est modifié pour intégrer les scripts JavaScript d’instrumentation de Application Insights.

Vous pouvez enregistrer votre projet et archiver toutes vos modifications. Le déploiement se fera automatiquement. Suite à l’utilisation de votre application, de nombreuses informations seront collectées et agrégées dans le portail Azure.

Nom : img6.PNG
Affichages : 647
Taille : 43,0 Ko

Le monitoring et l’évaluation de son application en production est étape importante et non négligeable dans un projet DevOps. Avec Application Insights, vous avez une solution à ce besoin.


Pour en savoir plus sur Application Insights, consultez la documentation officielle.

Envoyer le billet « DevOps avec Azure – Partie 10 : Introduction à Azure Application Insights et configuration » dans le blog Viadeo Envoyer le billet « DevOps avec Azure – Partie 10 : Introduction à Azure Application Insights et configuration » dans le blog Twitter Envoyer le billet « DevOps avec Azure – Partie 10 : Introduction à Azure Application Insights et configuration » dans le blog Google Envoyer le billet « DevOps avec Azure – Partie 10 : Introduction à Azure Application Insights et configuration » dans le blog Facebook Envoyer le billet « DevOps avec Azure – Partie 10 : Introduction à Azure Application Insights et configuration » dans le blog Digg Envoyer le billet « DevOps avec Azure – Partie 10 : Introduction à Azure Application Insights et configuration » dans le blog Delicious Envoyer le billet « DevOps avec Azure – Partie 10 : Introduction à Azure Application Insights et configuration » dans le blog MySpace Envoyer le billet « DevOps avec Azure – Partie 10 : Introduction à Azure Application Insights et configuration » dans le blog Yahoo

Mis à jour 11/08/2018 à 21h13 par Hinault Romaric

Catégories
DotNET , ASP.NET , .NET Core , ASP.NET Core , Microsoft Azure , DevOps

Commentaires