Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Utilisez Azure Monitor pour collecter des journaux, des métriques et des alertes sur vos applications JavaScript et les services Azure dont ils dépendent. Azure Monitor est le service de plateforme centrale qui collecte et stocke vos données de télémétrie. Vous pouvez instrumenter vos applications avec Application Insights. Vous devez surveiller votre service d’application hébergé, les services Azure auxquels l’application s’intègre et le code source de l’application lui-même.
Comprendre les journaux, les métriques et les alertes
La télémétrie est les données collectées à partir de vos applications et services pour surveiller leur intégrité, leurs performances et leur utilisation. Dans Azure, les données de télémétrie sont classées en journaux, métriques et alertes.
Azure propose quatre types de télémétrie :
| Type de télémétrie | Ce qu’il vous donne | Où le trouver pour chaque service |
|---|---|---|
| Métriques | Données numériques, de série chronologique (PROCESSEUR, mémoire, etc.) | Métriques dans le portail ou l'interface de ligne de commande |
| Alertes | Notifications proactives lorsque les seuils sont atteints |
Alertes dans le portail ou az monitor metrics alert l’interface CLI |
| Journaux | Événements et diagnostics textuels (web, application) | App Service Journaux, Surveillance des fonctions, Diagnostics des applications en conteneur |
| Journaux d’activité personnalisés | Votre propre télémétrie d’application via App Insights | Table Journaux d’activité (trace) de votre ressource Application Insights |
Choisissez la télémétrie appropriée pour votre question :
| Scénario | Utiliser les journaux d’activité... | Utiliser des métriques... | Utiliser des alertes... |
|---|---|---|---|
| « Mon application web a-t-elle démarré et répondu ? » | Journaux du serveur web App Service (Journaux) | N/A | N/A |
| Est-ce que ma fonction arrive à expiration ou échoue ? | Journaux d'appel de fonction ("Monitor") | Métrique de durée d’exécution de la fonction | Alerte sur « Erreurs de fonction >0 » |
| « Quelle est la charge de mon service et peut-il évoluer ? » | N/A | Débit de service/PROCESSEUR dans les métriques | Alerte de mise à l’échelle automatique sur le processeur% > 70% |
| « Quelles exceptions mon code lève-t-il ? » | Journaux de trace personnalisés dans Application Insights | N/A | Alerte sur « ServerExceptions >0 » |
| « Ai-je dépassé mes limites de transaction ou de quota ? » | N/A | Métriques liées au quota (transactions, limitation) | Alerte sur « ThrottlingCount >0 » |
Optimisation des coûts
Vous pouvez réduire considérablement votre coût pour Azure Monitor en comprenant les meilleures pratiques pour les options de configuration et les opportunités de réduction de la quantité de données qu’il collecte.
Activer la journalisation et les métriques pour toutes les ressources Azure
Chaque service dans Azure dispose de ses propres fonctionnalités de journalisation et de métriques. Activez la journalisation sur chaque ressource Azure pour vous assurer que vous disposez des données de télémétrie dont vous avez besoin pour surveiller l’ensemble de votre application de bout en bout.
Créer une ressource Azure Monitor
Vous pouvez créer une ressource Azure Monitor pour collecter les journaux et les métriques de vos ressources Azure. Cette ressource est généralement un espace de travail Log Analytics, où sont stockés les journaux et les métriques.
Vous pouvez créer cette ressource de plusieurs façons :
- Portail Azure : utilisez le portail Azure pour créer un espace de travail Log Analytics et configurer les paramètres de diagnostic pour vos ressources.
- Azure CLI : Utilisez Azure CLI pour créer un espace de travail Log Analytics et configurer des paramètres de diagnostic pour vos ressources.
- PowerShell : Utilisez PowerShell pour créer un espace de travail Log Analytics et configurer des paramètres de diagnostic pour vos ressources.
- Bicep : Utilisez des modèles Bicep pour définir et déployer vos ressources Azure Monitor de manière déclarative.
Créer un espace de travail Log Analytics à l’aide d’Azure CLI
Utilisez le CLI d'Azure pour créer un espace de travail Log Analytics, qui est l'endroit où des journaux et des métriques sont stockés. Exemple:
# Variables
resourceGroup="myResourceGroup"
location="eastus"
workspaceName="myWorkspace"
webAppName="myWebApp"
diagName="${webAppName}/appServiceLogging"
# 1) Create a Log Analytics workspace
workspaceId=$(az monitor log-analytics workspace create \
--resource-group $resourceGroup \
--workspace-name $workspaceName \
--location $location \
--query id -o tsv)
# 2) Enable diagnostic settings on your App Service
az monitor diagnostic-settings create \
--name "$diagName" \
--resource "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$resourceGroup/providers/Microsoft.Web/sites/$webAppName" \
--workspace $workspaceId \
--logs '[{"category": "Administrative", "enabled": true},{"category":"AppServiceConsoleLogs","enabled":true},{"category":"AppServiceHTTPLogs","enabled":true}]' \
--metrics '[{"category":"AllMetrics","enabled":true}]'
Créer un espace de travail Log Analytics à l’aide de Bicep
Utilisez Bicep pour définir et déployer vos ressources Azure Monitor de manière déclarative. Cet exemple crée un espace de travail Log Analytics et configure les paramètres de diagnostic d’un App Service :
Include logging, metrics, and alerting in your IaC templates with a [Bicep diagnosticSettings resource reference](/azure/templates/microsoft.insights/diagnosticsettings). Example (Bicep):
```bicep
resource logAnalytics 'Microsoft.OperationalInsights/workspaces@2022-10-01' = {
name: 'myWorkspace'
location: resourceGroup().location
}
resource diagSettings 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = {
name: '${webApp.name}/appServiceLogging'
properties: {
workspaceId: logAnalytics.id
logs: [
{ category: 'AppServiceConsoleLogs'; enabled: true }
{ category: 'AppServiceHTTPLogs'; enabled: true }
]
metrics: [
{ category: 'AllMetrics'; enabled: true }
]
}
}
Créer des alertes pour vos ressources
Vous pouvez configurer des alertes pour les métriques dans le portail Azure ou à l’aide d’Azure CLI. Les alertes peuvent inclure des métriques spécifiques, des flux de communication (tels que l’e-mail) et la fréquence.
Utilisez les exemples suivants pour créer des alertes de métrique dans le portail ou par programmation :
- Azure CLI : configuration rapide via
az monitor metrics alert - Bicep : Définition IaC déclarative pour
Microsoft.Insights/metricAlerts
Les alertes peuvent spécifier les métriques cibles, les canaux de notification (e-mail, webhook), la gravité, la fréquence d’évaluation et les groupes d’actions.
az monitor metrics alert create \
--name HighCpuAlert \
--resource-group MyResourceGroup \
--scopes /subscriptions/{sub}/resourceGroups/MyResourceGroup/providers/Microsoft.Web/sites/myApp \
--condition "avg CpuPercentage > 70" \
--description "Alert when CPU goes above 70%" \
--severity 2 \
--window-size 5m \
--evaluation-frequency 1m \
--action /subscriptions/{sub}/resourceGroups/MyResourceGroup/providers/microsoft.insights/actionGroups/MyActionGroup
resource cpuAlert 'Microsoft.Insights/metricAlerts@2018-03-01' = {
name: 'highCpuAlert'
location: resourceGroup().location
properties: {
description: 'Alert when CPU goes above 70%'
severity: 2
enabled: true
scopes: [
webApp.id
]
evaluationFrequency: 'PT1M'
windowSize: 'PT5M'
criteria: {
allOf: [
{
criterionType: 'StaticThresholdCriterion'
name: 'HighCpu'
metricName: 'CpuPercentage'
metricNamespace: 'Microsoft.Web/sites'
operator: 'GreaterThan'
threshold: 70
timeAggregation: 'Average'
}
]
}
autoMitigate: false
actions: [
{
actionGroupId: '/subscriptions/{sub}/resourceGroups/MyResourceGroup/providers/microsoft.insights/actionGroups/MyActionGroup'
}
]
}
}
Affichage des données de journal
Pour afficher les données de journal dans le portail Azure, accédez à votre espace de travail Log Analytics et sélectionnez Journaux. Vous pouvez exécuter des requêtes KQL (Kusto Query Language) sur les journaux.
Diffuser les journaux d’activité en continu
Utilisez le tableau suivant pour en savoir plus sur le flux de journaux.
Serveur Azure MCP
Lorsque vous développez localement, vous pouvez utiliser l’outil Azure MCP ServerMonitor pour interroger les journaux sans quitter votre IDE. Une fois que vous avez installé le serveur, les invites Copilot sont les suivantes :
- Répertorier les espaces de travail : « Afficher tous les espaces de travail Log Analytics dans mon abonnement ».
- Rechercher des tables : « Répertorier toutes les tables dans mon espace de travail « security-logs »
- Requête complexe : « Afficher la tendance de l’utilisation du processeur pour mes serveurs web au cours des dernières 24 heures »
Ajouter la journalisation à votre code
Pour la journalisation des applications, Application Insights peut fournir les éléments suivants :
- Journalisation standard dans le service Azure et dans votre code source, en fonction de l’initialisation.
- Journalisation personnalisée depuis votre pipeline de déploiement et dans votre code source.
Journalisation standard de la console (stdout/stderr)
Les applications web Azure et Azure Functions fournissent automatiquement une journalisation personnalisée à stdout et à stderr, si vous utilisez les fonctions de journalisation appropriées.
- Les applications web utilisent
console.log('your message here'). - Les applications de fonction utilisent
context.log('your message here').
Ajouter une journalisation Application Insights personnalisée
Vous pouvez ajouter une journalisation personnalisée plus riche à l’aide d’Application Insights dans Azure Monitor. Application Insights propose des scénarios serveur (Node.js) et client (navigateur) :
- Ajoutez le Kit de développement logiciel (SDK) Application Insights à votre code source.
- Connectez-vous à partir de Node.js à l’aide d’un package npm.
- Veillez à configurer le SDK Node.js avec
enableAutoCollectConsole: trueafin de collecter les journaux de console personnalisés.
- Veillez à configurer le SDK Node.js avec
- Connectez-vous à partir de votre code client à l’aide d’un package npm.
- Connectez-vous à partir de votre cluster Kubernetes ou de votre machine virtuelle Azure.
Activer les journaux de pipeline du SDK (@Azure/enregistreur d’événements)
Contrôlez la verbosité du SDK en utilisant la AZURE_LOG_LEVEL variable d’environnement ou le @azure/logger paquet npm :
import { setLogLevel } from "@azure/logger";
// Options: 'error', 'warning', 'info', 'verbose'
setLogLevel(process.env.AZURE_LOG_LEVEL || "info");
Configurer le Kit de développement logiciel (SDK) application Insights Node.js
Initialisez Application Insights pour Node.js SDK avec l’échantillonnage, la collecte de dépendances et la capture du journal de console :
import appInsights from "applicationinsights";
appInsights
.setup("<INSTRUMENTATION_KEY>")
.setAutoCollectConsole(true, true) // collect console.log
.setAutoCollectDependencies(true) // track outgoing requests
.setInternalLogging(false, true) // SDK internal logs
.start();
// Optional: add custom properties to all telemetry
appInsights.defaultClient.commonProperties = { serviceName: "my-service" };
Ajouter une corrélation et un suivi distribué
Le SDK Application Insights injecte automatiquement les ID de corrélation et les opérations dans les requêtes. Pour ajouter une corrélation ou des propriétés personnalisées :
appInsights.defaultClient.trackTrace({
message: "Custom trace",
properties: { userId: user.id }
});
En savoir plus : conseils de suivi distribué
Purger les données de télémétrie dans les scripts de développement
Vérifiez que les journaux sont envoyés avant la sortie du processus pendant le développement local :
appInsights.defaultClient.flush({
callback: () => process.exit(0)
});
Configuration de la télémétrie côté client
Pour les applications clientes, utilisez le @microsoft/applicationinsights-web package :
import { ApplicationInsights } from "@microsoft/applicationinsights-web";
const ai = new ApplicationInsights({ config: {
instrumentationKey: "<INSTRUMENTATION_KEY>",
enableAutoRouteTracking: true
}});
ai.loadAppInsights();