Métriques reposant sur un journal d’Application Insights

Les métriques Application Insights reposant sur un journal vous permettent d'analyser l'intégrité de vos applications surveillées, de créer de puissants tableaux de bord, et de configurer des alertes. Il existe deux types de métriques :

Comme les métriques standard sont pré-agrégées pendant la collecte, elles offrent de meilleures performances lors des requêtes. Elles constituent donc un meilleur choix pour les tableaux de bord et les alertes en temps réel. Les métriques reposant sur un journal contiennent plus de dimensions, ce qui en fait une meilleure option pour l'analyse des données et les diagnostics ad hoc. Utilisez le sélecteur d'espace de noms pour basculer entre les métriques reposant sur un journal et les métriques standard dans Metrics Explorer.

Interpréter et utiliser les requêtes de cet article

Cet article énumère les métriques contenant des agrégations et des dimensions prises en charge. Les détails sur les métriques reposant sur un journal incluent les instructions de requête Kusto sous-jacentes. Par commodité, chaque requête utilise des valeurs par défaut pour la granularité temporelle, le type de graphique et parfois la dimension de fractionnement, ce qui simplifie l'utilisation de la requête dans Log Analytics sans aucune modification nécessaire.

Lorsque vous tracez la même métrique dans Metrics Explorer, il n'y a aucune valeur par défaut : la requête est ajustée dynamiquement en fonction des paramètres de votre graphique :

  • La plage de temps sélectionnée est convertie en une clause where timestamp... qui sélectionne uniquement les événements de la plage de temps sélectionnée. Par exemple, dans un graphique affichant les données des dernières 24 heures, la requête inclut | where timestamp > ago(24 h).

  • La granularité temporelle sélectionnée est placée dans la clause summarize ... by bin(timestamp, [time grain]) finale.

  • Toutes les dimensions Filtre sélectionnées sont converties en clauses where supplémentaires.

  • La dimension Split chart (Fractionner le graphique) sélectionnée est convertie en une propriété de résumé supplémentaire. Par exemple, si vous fractionnez votre graphique par emplacement et que vous le tracez en utilisant une granularité temporelle de 5 minutes, la clause summarize est résumée par ... by bin(timestamp, 5 m), location.

Notes

Si vous découvrez le langage de requête Kusto, commencez par copier et coller les instructions Kusto dans le volet de requête Log Analytics sans y apporter de modification. Cliquez sur Exécuter pour afficher le graphique de base. À mesure que vous assimilez la syntaxe du langage de requête, vous pouvez commencer à apporter de petites modifications et voir l'impact de votre changement. Explorer vos propres données est un excellent moyen de tirer pleinement parti de Log Analyticset Azure Monitor.

Métriques de disponibilité

Les métriques de la catégorie Disponibilité vous permettent d’afficher l’intégrité de votre application web telle qu'elle apparaît dans le monde entier. Configurer les tests de disponibilité pour commencer à utiliser les métriques de cette catégorie.

Disponibilité (availabilityResults/availabilityPercentage)

La métrique Disponibilité indique le pourcentage des tests web qui n'ont détecté aucun problème. La valeur la plus basse possible est 0, qui indique que tous les tests web ont échoué. La valeur 100 signifie que tous les tests en ligne ont satisfait aux critères de validation.

Unité de mesure Agrégations prises en charge Dimensions prises en charge
Pourcentage Average Emplacement d'exécution, Nom du test
availabilityResults 
| summarize sum(todouble(success == 1) * 100) / count() by bin(timestamp, 5m), location
| render timechart

Durée du test de disponibilité (availabilityResults/duration)

La métrique Durée du test de disponibilité indique le temps nécessaire pour exécuter le test web. Pour les tests web à plusieurs étapes, la métrique reflète le temps d'exécution total de toutes les étapes.

Unité de mesure Agrégations prises en charge Dimensions prises en charge
Millisecondes Moyenne, Min, Max Emplacement d'exécution, Nom du test, Résultat du test
availabilityResults
| where notempty(duration)
| extend availabilityResult_duration = iif(itemType == 'availabilityResult', duration, todouble(''))
| summarize sum(availabilityResult_duration)/sum(itemCount) by bin(timestamp, 5m), location
| render timechart

Test de disponibilité (availabilityResults/count)

La métrique Tests de disponibilité reflète le nombre de tests web exécutés par Azure Monitor.

Unité de mesure Agrégations prises en charge Dimensions prises en charge
Count Count Emplacement d'exécution, Nom du test, Résultat du test
availabilityResults
| summarize sum(itemCount) by bin(timestamp, 5m)
| render timechart

Métriques du navigateur

Les métriques du navigateur sont collectées par le Kit de développement logiciel (SDK) JavaScript Application Insights à partir des navigateurs réels des utilisateurs finaux. Elles vous donnent un excellent aperçu de l'expérience de vos utilisateurs avec votre application web. Les métriques du navigateur ne sont généralement pas échantillonnées, ce qui signifie qu’elles offrent une plus grande précision des données d'utilisation par rapport aux métriques côté serveur qui peuvent être biaisées par l'échantillonnage.

Notes

Pour collecter les métriques du navigateur, votre application doit être instrumentée avec le kit SDK JavaScript Application Insights.

Temps de chargement de la page de navigateur (browserTimings/totalDuration)

Temps s’écoulant entre la demande de l’utilisateur et le chargement du DOM, des feuilles de style, des scripts et des images.

Unité de mesure Agrégations prises en charge Dimensions prédéfinies
Millisecondes Moyenne, Min, Max Aucun
browserTimings
| where notempty(totalDuration)
| extend _sum = totalDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render timechart

Temps de traitement du client (browserTiming/processingDuration)

Temps écoulé entre la réception du dernier octet d’un document et le chargement du modèle DOM. Les demandes asynchrones peuvent encore être en cours de traitement.

Unité de mesure Agrégations prises en charge Dimensions prédéfinies
Millisecondes Moyenne, Min, Max Aucun
browserTimings
| where notempty(processingDuration)
| extend _sum = processingDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum)/sum(_count) by bin(timestamp, 5m)
| render timechart

Temps de connexion au réseau pour le chargement de page (browserTimings/networkDuration)

Temps écoulé entre la requête de l’utilisateur et la connexion réseau. Inclut la connexion de recherche DNS et de transport.

Unité de mesure Agrégations prises en charge Dimensions prédéfinies
Millisecondes Moyenne, Min, Max Aucun
browserTimings
| where notempty(networkDuration)
| extend _sum = networkDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render timechart

Temps de réception de réponse (browserTimings/receiveDuration)

Temps écoulé entre le premier et le dernier octet, ou jusqu’à la déconnexion.

Unité de mesure Agrégations prises en charge Dimensions prédéfinies
Millisecondes Moyenne, Min, Max Aucun
browserTimings
| where notempty(receiveDuration)
| extend _sum = receiveDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render timechart

Temps d’envoi de la requête (browserTimings/sendDuration)

Temps écoulé entre la connexion réseau et la réception du premier octet.

Unité de mesure Agrégations prises en charge Dimensions prédéfinies
Millisecondes Moyenne, Min, Max Aucun
browserTimings
| where notempty(sendDuration)
| extend _sum = sendDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render timechart

Métriques d’échec

Les métriques de la catégorie Échecs montrent les problèmes liés au traitement des requêtes, aux appels de dépendances et aux exceptions levées.

Exceptions du navigateur (exceptions/browser)

Cette métrique reflète le nombre d'exceptions levées à partir de votre code d'application exécuté dans le navigateur. Seules les exceptions suivies avec un appel à l’API Application Insights trackException() sont incluses dans la métrique.

Unité de mesure Agrégations prises en charge Dimensions prédéfinies Notes
Count Count None La version reposant sur un journal utilise l’agrégation Sum
exceptions
| where notempty(client_Browser)
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

Échecs d'appel de dépendance (dependencies/failed)

Nombre d’appels de dépendance ayant échoué.

Unité de mesure Agrégations prises en charge Dimensions prédéfinies Notes
Count Count None La version reposant sur un journal utilise l’agrégation Sum
dependencies
| where success == 'False'
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

Exceptions (exceptions/count)

Chaque fois que vous consignez une exception dans Application Insights, un appel à la méthode trackException() du SDK est effectué. La métrique Exceptions indique le nombre d'exceptions consignées.

Unité de mesure Agrégations prises en charge Dimensions prédéfinies Notes
Count Count Nom du rôle cloud, Instance de rôle cloud, Type d’appareil La version reposant sur un journal utilise l’agrégation Sum
exceptions
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

Demandes ayant échoué (requests/failed)

Nombre de requêtes de serveur suivies qui ont été marquées comme ayant échoué. Par défaut, le SDK Application Insights marque automatiquement chaque requête de serveur qui renvoie le code de réponse HTTP 5xx ou 4xx comme une requête ayant échoué. Vous pouvez personnaliser cette logique en modifiant la propriété success (réussite) de l'élément de télémétrie de requête dans un initialisateur de télémétrie personnalisé.

Unité de mesure Agrégations prises en charge Dimensions prédéfinies Notes
Count Count Instance de rôle cloud, Nom du rôle cloud, Trafic réel ou synthétique, Performances de la requête, Code de réponse La version reposant sur un journal utilise l’agrégation Sum
requests
| where success == 'False'
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

Exceptions du serveur (exceptions/server)

Cette métrique indique le nombre d'exceptions du serveur.

Unité de mesure Agrégations prises en charge Dimensions prédéfinies Notes
Count Count Nom du rôle cloud, Instance de rôle cloud La version reposant sur un journal utilise l’agrégation Sum
exceptions
| where isempty(client_Browser)
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

Compteurs de performance

Utilisez les métriques de la catégorie Compteurs de performance pour accéder aux compteurs de performance système collectés par Application Insights.

Mémoire disponible (performanceCounters/availableMemory)

performanceCounters
| where ((category == "Memory" and counter == "Available Bytes") or name == "availableMemory")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

Taux d’exceptions (performanceCounters/exceptionRate)

performanceCounters
| where ((category == ".NET CLR Exceptions" and counter == "# of Exceps Thrown / sec") or name == "exceptionRate")
| extend performanceCounter_value = iif(itemType == 'performanceCounter',value,todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

Durée d’exécution de la requête HTTP (performanceCounters/requestExecutionTime)

performanceCounters
| where ((category == "ASP.NET Applications" and counter == "Request Execution Time") or name == "requestExecutionTime")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

Taux de requêtes HTTP (performanceCounters/requestsPerSecond)

performanceCounters
| where ((category == "ASP.NET Applications" and counter == "Requests/Sec") or name == "requestsPerSecond")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

Requêtes HTTP dans la file d'attente de l'application (performanceCounters/requestsInQueue)

performanceCounters
| where ((category == "ASP.NET Applications" and counter == "Requests In Application Queue") or name == "requestsInQueue")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

Processeur de processus (performanceCounters/processCpuPercentage)

La métrique indique la part de la capacité totale du processeur consommée par le processus qui héberge votre application surveillée.

Unité de mesure Agrégations prises en charge Dimensions prises en charge
Pourcentage Moyenne, Min, Max Instance de rôle cloud
performanceCounters
| where ((category == "Process" and counter == "% Processor Time Normalized") or name == "processCpuPercentage")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

Notes

La plage de la métrique est comprise entre 0 et 100 * n, où n est le nombre de cœurs de processeur disponibles. Par exemple, la valeur métrique de 200 % peut représenter l’utilisation complète de deux cœurs d’UC ou d’une demi-utilisation de 4 cœurs de processeur, et ainsi de suite. La valeur normalisée de l’UC de processus est une autre mesure collectée par de nombreux kits de développement logiciel (SDK) qui représente la même valeur, mais la divise par le nombre de cœurs de processeur disponibles. Par conséquent, la plage de mesures normalisées de l’UC de processus est comprise entre 0 et 100.

Taux d’E/S du processus (performanceCounters/processIOBytesPerSecond)

Unité de mesure Agrégations prises en charge Dimensions prises en charge
Octets par seconde Moyenne, Min, Max Instance de rôle cloud
performanceCounters
| where ((category == "Process" and counter == "IO Data Bytes/sec") or name == "processIOBytesPerSecond")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

Octets privés du processus (performanceCounters/processPrivateBytes)

Quantité de mémoire non partagée que le processus surveillé a allouée pour ses données.

Unité de mesure Agrégations prises en charge Dimensions prises en charge
Octets Moyenne, Min, Max Instance de rôle cloud
performanceCounters
| where ((category == "Process" and counter == "Private Bytes") or name == "processPrivateBytes")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

Temps processeur (performanceCounters/processorCpuPercentage)

Consommation d’UC de tous les processus s'exécutant sur l'instance de serveur surveillée.

Unité de mesure Agrégations prises en charge Dimensions prises en charge
Pourcentage Moyenne, Min, Max Instance de rôle cloud

Notes

La métrique Temps processeur n'est pas disponible pour les applications hébergées dans Azure App Services. Utilisez la métrique Utilisation de l'UC pour suivre l'utilisation d’UC des applications web hébergées dans App Services.

performanceCounters
| where ((category == "Processor" and counter == "% Processor Time") or name == "processorCpuPercentage")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

Indicateurs de performances de serveur

Appels de dépendance (dependencies/count)

Cette métrique est liée au nombre d'appels de dépendance.

dependencies
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

Durée de la dépendance (dependencies/duration)

Cette métrique fait référence à la durée des appels de dépendance.

dependencies
| where notempty(duration)
| extend dependency_duration = iif(itemType == 'dependency',duration,todouble(''))
| extend _sum = dependency_duration
| extend _count = itemCount
| extend _sum = _sum*_count
| summarize sum(_sum)/sum(_count) by bin(timestamp, 1m)
| render timechart

Requêtes serveur (requests/count)

Cette métrique reflète le nombre de requêtes de serveur entrantes reçues par votre application web.

requests
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

Temps de réponse du serveur (requests/duration)

Cette métrique reflète le temps nécessaire aux serveurs pour traiter les demandes entrantes.

requests
| where notempty(duration)
| extend request_duration = iif(itemType == 'request', duration, todouble(''))
| extend _sum = request_duration
| extend _count = itemCount
| extend _sum = _sum*_count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 1m)
| render timechart

Métriques d'utilisation

Temps de chargement de la page consultée (pageViews/duration)

Cette métrique fait référence au temps nécessaire au chargement des événements PageView.

pageViews
| where notempty(duration)
| extend pageView_duration = iif(itemType == 'pageView', duration, todouble(''))
| extend _sum = pageView_duration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render barchart

Affichages de pages (pageViews/count)

Nombre d'événements PageView consignés avec l'API Application Insights TrackPageView().

pageViews
| summarize sum(itemCount) by bin(timestamp, 1h)
| render barchart

Sessions (sessions/count)

Cette métrique fait référence au nombre d'ID de session distincts.

union traces, requests, pageViews, dependencies, customEvents, availabilityResults, exceptions, customMetrics, browserTimings
| where notempty(session_Id)
| summarize dcount(session_Id) by bin(timestamp, 1h)
| render barchart

Traces (traces/count)

Nombre d'instructions de suivi consignées avec l'appel à l’API Application Insights TrackTrace().

traces
| summarize sum(itemCount) by bin(timestamp, 1h)
| render barchart

Utilisateurs (users/count)

Nombre d’utilisateurs distincts qui ont accédé à votre application. L'utilisation de l'échantillonnage et du filtrage par télémétrie peut avoir une incidence importante sur la précision de cette métrique.

union traces, requests, pageViews, dependencies, customEvents, availabilityResults, exceptions, customMetrics, browserTimings
| where notempty(user_Id)
| summarize dcount(user_Id) by bin(timestamp, 1h)
| render barchart

Utilisateurs, Authentifié (users/authenticated)

Nombre d’utilisateurs distincts qui se sont authentifiés auprès de votre application.

union traces, requests, pageViews, dependencies, customEvents, availabilityResults, exceptions, customMetrics, browserTimings
| where notempty(user_AuthenticatedId)
| summarize dcount(user_AuthenticatedId) by bin(timestamp, 1h)
| render barchart

Accéder à toutes vos données directement avec l’API REST Application Insights

L’API REST Application Insights permet la récupération programmatique des métriques basées sur les journaux. Il propose également un paramètre facultatif « ai.include-query-payload » qui, lorsqu’il est ajouté à une chaîne de requête, invite l’API à retourner non seulement les données de la série chronologique, mais également l’instruction Langage de requête Kusto (KQL) utilisée pour l’extraire. Ce paramètre peut être particulièrement bénéfique pour les utilisateurs qui visent à comprendre la connexion entre les événements bruts dans Log Analytics et la métrique basée sur les journaux résultantes.

Pour accéder directement à vos données, transmettez le paramètre « ai.include-query-payload » à l’API Application Insights dans une requête à l’aide de KQL.

api.applicationinsights.io/v1/apps/DEMO_APP/metrics/users/authenticated?api_key=DEMO_KEY&prefer=ai.include-query-payload

Voici un exemple d’instruction KQL de retour pour la métrique « Utilisateurs authentifiés ». (Dans cet exemple, « users/authenticated » est l’ID de métrique.)

output
{
    "value": {
        "start": "2024-06-21T09:14:25.450Z",
        "end": "2024-06-21T21:14:25.450Z",
        "users/authenticated": {
            "unique": 0
        }
    },
    "@ai.query": "union (traces | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (requests | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (pageViews | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (dependencies | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (customEvents | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (availabilityResults | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (exceptions | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (customMetrics | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (browserTimings | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)) | where notempty(user_AuthenticatedId) | summarize ['users/authenticated_unique'] = dcount(user_AuthenticatedId)"
}