Suivi des dépendances dans Application Insights
Attention
Nous recommandons la Distribution OpenTelemetry Azure Monitor pour les nouvelles applications ou les nouveaux clients afin d’alimenter Azure Monitor Application Insights. La distribution OpenTelemetry Azure Monitor offre une expérience et des fonctionnalités similaires à celles du Kit de développement logiciel (SDK) Application Insights. Il est possible de migrer depuis le Kit de développement logiciel (SDK) Application Insights en utilisant les guides de migration pour .NET, Node.js et Python, mais nous travaillons encore à l’ajout de quelques fonctionnalités supplémentaires pour la compatibilité descendante.
Une dépendance est un composant externe appelé par votre application. Il s’agit habituellement d’un service appelé à l’aide de HTTP, d’une base de données ou d’un système de fichiers. Application Insights : mesure la durée des appels de dépendances, indique si les appels ont réussi ou échoué et fournit des informations comme le nom des dépendances. Vous pouvez examiner des appels de dépendances spécifiques et les mettre en corrélation avec les requêtes et les exceptions.
Dépendances suivies automatiquement
Les kits de développement logiciel (SDK) Application Insights pour .NET et .NET Core sont fournis avec DependencyTrackingTelemetryModule
, qui est un module de télémétrie qui collecte automatiquement les dépendances. Cette collection de dépendances est activée automatiquement pour les applications ASP.NET et ASP.NET Core lorsqu’elle est configurée conformément aux documents officiels figurant en lien. Le module DependencyTrackingTelemetryModule
est expédié sous forme de package NuGet Microsoft.ApplicationInsights.DependencyCollector et est ajouté automatiquement lorsque vous utilisez le package NuGet Microsoft.ApplicationInsights.Web
ou Microsoft.ApplicationInsights.AspNetCore
.
Actuellement, DependencyTrackingTelemetryModule
suit automatiquement les dépendances suivantes :
Les dépendances | Détails |
---|---|
HTTP/HTTPS | Appels HTTP/HTTPS locaux ou distants. |
Appels WCF | Suivi automatique uniquement si les liaisons HTTP sont utilisées. |
SQL | Appels effectués avec SqlClient . Consultez la section Suivi SQL avancé pour obtenir la requête SQL complète pour capturer des requêtes SQL. |
Stockage Blob Azure, Stockage Table ou Stockage File d'attente | Appels effectués avec le client Stockage Azure. |
Kit de développement logiciel (SDK) Azure Event Hubs | Utilisez le package le plus récent : https://nuget.org/packages/Azure.Messaging.EventHubs. |
Kit de développement logiciel (SDK) client Azure Service Bus | Utilisez le package le plus récent : https://nuget.org/packages/Azure.Messaging.ServiceBus. |
Azure Cosmos DB | Suivi automatique si HTTP/HTTPS est utilisé. Le traçage des opérations en mode direct avec TCP est capturé automatiquement à l’aide du package en préversion >= 3.33.0-preview. Pour plus de détails, visitez la documentation. |
S’il vous manque une dépendance ou si vous utilisez un autre kit SDK, vérifiez qu’elle figure dans la liste des dépendances collectées automatiquement. Si la dépendance n’est pas collectée automatiquement, vous pouvez la suivre manuellement avec un appel de suivi des dépendances.
Configurer le suivi automatique des dépendances dans les applications console
Pour suivre automatiquement les dépendances des applications de console .NET, installez le package NuGet Microsoft.ApplicationInsights.DependencyCollector
et initialisez DependencyTrackingTelemetryModule
:
DependencyTrackingTelemetryModule depModule = new DependencyTrackingTelemetryModule();
depModule.Initialize(TelemetryConfiguration.Active);
Pour les applications de console .NET Core, TelemetryConfiguration.Active
est obsolète. Consultez les instructions de la documentation du service worker et la documentation de supervision ASP.NET Core.
Comment fonctionne le suivi automatique des dépendances ?
Les dépendances sont automatiquement collectées avec l’une des techniques suivantes :
- Utilisation de l’instrumentation de code d’octet autour des méthodes sélectionnées. Utilisez
InstrumentationEngine
à partir deStatusMonitor
ou une extension Azure App Service Web Apps. - Rappels
EventSource
. - Rappels
DiagnosticSource
dans les derniers kits SDK .NET ou .NET Core.
Suivi manuel des dépendances
Les exemples de dépendances suivants ne sont pas collectés automatiquement et nécessitent un suivi manuel :
- La surveillance d’Azure Cosmos DB est effectuée automatiquement uniquement si le protocole HTTP/HTTPS est utilisé. Le mode TCP ne sera pas automatiquement capturé par Application Insights pour les versions SDK antérieures à
2.22.0-Beta1
. - Redis
L’API TrackDependency, qui est utilisée par les modules de collecte automatique standard, vous permet de suivre manuellement les dépendances que le SDK ne collecte pas automatiquement.
Exemple
Si vous générez votre code avec un assembly que vous n’avez pas écrit vous-même, vous pouvez minuter tous les appels vers celui-ci. Ce scénario vous permet de déterminer la contribution qu’elle apporte à vos temps de réponse.
Pour afficher ces données dans les graphiques de dépendance d’Application Insights, envoyez-les en utilisant TrackDependency
:
var startTime = DateTime.UtcNow;
var timer = System.Diagnostics.Stopwatch.StartNew();
try
{
// making dependency call
success = dependency.Call();
}
finally
{
timer.Stop();
telemetryClient.TrackDependency("myDependencyType", "myDependencyCall", "myDependencyData", startTime, timer.Elapsed, success);
}
Vous pouvez aussi utiliser les méthodes d’extension StartOperation
et StopOperation
fournies par TelemetryClient
pour suivre les dépendances manuellement, comme cela est expliqué dans Suivi des dépendances sortantes.
Si vous souhaitez désactiver le module de suivi des dépendances standard, supprimez la référence à DependencyTrackingTelemetryModule
dans ApplicationInsights.config pour les applications ASP.NET. Pour les applications ASP.NET Core, suivez les instructions de la section Application Insights pour applications ASP.NET Core.
Suivre les appels AJAX à partir de pages web
Pour les pages web, le kit SDK JavaScript Application Insights collecte automatiquement les appels AJAX en tant que dépendances.
Suivi SQL avancé pour obtenir la requête SQL complète
Notes
Azure Functions exige des paramètres distincts pour activer la collecte de texte SQL. Pour plus d’informations, consultez Activer la collecte de requêtes SQL.
Pour les appels SQL, le nom du serveur et de la base de données est toujours collecté et stocké comme le nom du DependencyTelemetry
collecté. Un autre champ, appelé data, peut contenir le texte de la requête SQL complète.
Pour les applications ASP.NET Core, il est maintenant nécessaire d’accepter la collecte de texte SQL avec :
services.ConfigureTelemetryModule<DependencyTrackingTelemetryModule>((module, o) => { module. EnableSqlCommandTextInstrumentation = true; });
Pour les applications ASP.NET, la requête SQL complète est collectée à l’aide de l’instrumentation de code byte, qui requiert le moteur d’instrumentation, ou à l’aide du package NuGet Microsoft.Data.SqlClient au lieu de la bibliothèque System.Data.SqlClient. Les étapes spécifiques à la plateforme pour activer la collecte complète de requêtes SQL sont décrites dans le tableau suivant.
Plateforme | Étapes nécessaires pour obtenir la requête SQL complète |
---|---|
Applications web dans Azure App Service | Dans le Panneau de configuration de l’application web, ouvrez le volet Application Insights et activez les commandes SQL dans .NET. |
Serveur IIS (machines virtuelles Azure, locales, et ainsi de suite) | Utilisez le package NuGet Microsoft.Data.SqlClient ou le module PowerShell Agent Application Insights pour installer le moteur d’instrumentation et redémarrer IIS. |
Services cloud Azure | Ajoutez une tâche de démarrage pour installer StatusMonitor. Votre application doit être intégrée au SDK ApplicationInsights au moment de la build en installant les packages NuGet pour les applications ASP.NET ou ASP.NET Core. |
IIS Express | Utiliser le package NuGet Microsoft.Data.SqlClient. |
WebJobs dans Azure App Service | Utiliser le package NuGet Microsoft.Data.SqlClient. |
En plus des étapes spécifiques à la plateforme ci-dessus, vous devez également choisir explicitement d’activer la collecte de commandes SQL en modifiant le fichier applicationInsights.config
avec le code suivant :
<TelemetryModules>
<Add Type="Microsoft.ApplicationInsights.DependencyCollector.DependencyTrackingTelemetryModule, Microsoft.AI.DependencyCollector">
<EnableSqlCommandTextInstrumentation>true</EnableSqlCommandTextInstrumentation>
</Add>
Dans les cas ci-dessus, la bonne pratique pour vérifier que ce moteur d’instrumentation est correctement installé est de vous assurer que la version du SDK du DependencyTelemetry
collecté est rddp
. L’utilisation de rdddsd
ou de rddf
indique que les dépendances sont collectées via des rappels DiagnosticSource
ou EventSource
. Par conséquent, la requête SQL complète ne sera pas capturée.
Où trouver des données sur les dépendances
- Mise en correspondance d’applications visualise les dépendances entre votre application et les composants voisins.
- Diagnostics de transaction montre les données serveur mises en corrélation avec les composants unifiés.
- Navigateurs montre les appels AJAX provenant des navigateurs des utilisateurs.
- Sélectionnez des demandes lentes ou ayant échoué pour vérifier leurs appels de dépendance.
- Vous pouvez utiliser Analytics pour interroger des données de dépendances.
Diagnostiquer les demandes lentes
Chaque événement de demande est associé aux appels de dépendance, aux exceptions et aux autres événements suivis pendant le traitement de la demande. Ainsi, si certaines demandes échouent, vous pouvez savoir si cela est dû à la lenteur des réponses d’une dépendance.
Traçage des demandes aux dépendances
Sélectionnez l’onglet Performances à gauche, puis l’onglet Dépendances en haut.
Sélectionnez un Nom de dépendance sous Général. Après avoir sélectionné une dépendance, vous voyez un graphique de la distribution des durées de cette dépendance.
Sélectionnez le bouton Exemples en bas à droite. Sélectionnez ensuite un exemple pour afficher les détails de la transaction de bout en bout.
Profiler votre site en ligne
.NET Profiler trace les appels HTTP vers votre site en direct et vous montre les fonctions dans votre code qui ont pris le plus de temps.
Demandes ayant échoué
Les échecs de demandes peuvent également être associés à des échecs d’appels de dépendances.
Sélectionnez l’onglet Défaillances à gauche, puis l’onglet Dépendances en haut.
Vous voyez ici le nombre de dépendances ayant échoué. Pour plus d’informations sur une occurrence ayant échoué, sélectionnez un nom de dépendance dans le tableau du bas. Sélectionnez le bouton Dépendances en bas à droite pour afficher les détails de la transaction de bout en bout.
Logs (Analytics)
Vous pouvez suivre les dépendances dans le langage de requête Kusto. Voici quelques exemples.
Rechercher les appels de dépendances ayant échoué :
dependencies | where success != "True" | take 10
Rechercher les appels AJAX :
dependencies | where client_Type == "Browser" | take 10
Rechercher les appels de dépendances associés aux demandes :
dependencies | where timestamp > ago(1d) and client_Type != "Browser" | join (requests | where timestamp > ago(1d)) on operation_Id
Rechercher les appels AJAX associés à des pages consultées :
dependencies | where timestamp > ago(1d) and client_Type == "Browser" | join (browserTimings | where timestamp > ago(1d)) on operation_Id
Forum aux questions
Cette section fournit des réponses aux questions fréquentes.
Comment le collecteur automatique de dépendances signale-t-il les échecs d’appels des dépendances ?
Pour les appels de dépendances ayant échoué, le champ success
est défini sur False. Le module DependencyTrackingTelemetryModule
ne signale pas ExceptionTelemetry
. Le modèle de données complet pour la dépendance est décrit dans Télémétrie des modèle de données Application Insights.
Comment calculer la latence d’ingestion pour ma télémétrie des dépendances ?
Utilisez ce code :
dependencies
| extend E2EIngestionLatency = ingestion_time() - timestamp
| extend TimeIngested = ingestion_time()
Comment déterminer l’heure à laquelle l’appel de dépendance a été initié ?
Dans l’affichage des requêtes Log Analytics timestamp
représente le moment où l’appel TrackDependency() a été lancé, ce qui se produit immédiatement après la réception de la réponse à l’appel de dépendance. Pour calculer l’heure de début de l’appel de dépendance, vous devez prendre timestamp
et soustraire la duration
enregistrée de l’appel de dépendance.
Le suivi des dépendances dans Application Insights inclut-il les corps de réponse de journalisation ?
Le suivi des dépendances dans Application Insights n’inclut pas les corps de réponse de journalisation, car cela générerait trop de données de télémétrie pour la plupart des applications.
Kit de développement logiciel (SDK) open source
Comme chaque SDK Application Insights, le module de collecte des dépendances est également open source. Lisez et contribuez au code, ou signalez les problèmes rencontrés dans le dépôt GitHub officiel.
Collecte automatique des dépendances
Voici la liste des appels de dépendance actuellement pris en charge qui sont automatiquement détectés comme des dépendances sans devoir apporter des modifications supplémentaires au code de votre application. Ces dépendances sont visualisées dans les vues Cartographie d’application et Diagnostics des transactions d’Application Insights. Si votre dépendance ne figure pas dans la liste, vous pouvez toujours la suivre manuellement avec un appel de suivi de dépendance.
.NET
Infrastructures d’application | Versions |
---|---|
Formulaires web ASP.NET | 4.5+ |
ASP.NET MVC | 4+ |
Web API ASP.NET | 4.5+ |
ASP.NET Core | 1.1+ |
Bibliothèques de communication | |
HttpClient | 4.5+, .NET Core 1.1+ |
SqlClient | .NET Core 1.0+, NuGet 4.3.0 |
Microsoft.Data.SqlClient | 1.1.0 - dernière version stable. (Consultez la remarque suivante.) |
Kit de développement logiciel (SDK) du client Event Hubs | 1.1.0 |
Kit de développement logiciel (SDK) client ServiceBus | 7.0.0 |
Clients de stockage | |
ADO.NET | 4.5+ |
Notes
Il existe un problème connu avec les versions antérieures de Microsoft.Data.SqlClient. Nous vous recommandons d’utiliser la version 1.1.0 ou ultérieure pour atténuer ce problème. Entity Framework Core n’est pas nécessairement fourni avec la dernière version stable de Microsoft.Data.SqlClient. Nous vous recommandons donc de confirmer que vous disposez d’au moins la version 1.1.0 pour éviter ce problème.
Java
Consultez la liste des dépendances collectées automatiquement d’Application Insights Java.
Node.js
Une liste des modules les plus récents pris en charge est disponible ici.
JavaScript
Bibliothèques de communication | Versions |
---|---|
XMLHttpRequest | Tous |
Étapes suivantes
- Exceptions
- Données utilisateur et de la page
- Disponibilité
- Configurez le suivi des dépendances personnalisé pour Java.
- Configurez le suivi personnalisé des dépendances pour OpenCensus Python.
- Écrire des données de télémétrie des dépendances personnalisées
- Pour connaître les types et les modèles de données Application Insights, consultez Modèle de données.
- Découvrez quelles plateformes sont prises en charge par Application Insights.