Skip to content
Learni
Voir tous les tutoriels
Azure

Comment configurer Azure Monitor pour la supervision en 2026

Read in English

Introduction

Azure Monitor est la solution unifiée de Microsoft Azure pour la collecte, l'analyse et l'action sur les données de supervision de vos ressources cloud. En 2026, avec l'essor des workloads hybrides et IA, il intègre Logs (KQL), Metrics, Alerts et Workbooks pour une observabilité complète. Ce tutoriel intermédiaire vous guide pas à pas pour déployer un workspace Log Analytics, interroger des logs, configurer des alertes sur métriques et créer des dashboards actionnables.

Pourquoi c'est crucial ? Une supervision défaillante coûte cher : 30% des incidents cloud sont dus à un monitoring insuffisant (source Gartner 2025). Vous apprendrez à monitorer une VM Windows avec diagnostics, exécuter des queries KQL avancées et automatiser les réponses via alerts. À la fin, vous aurez un setup production-ready, scalable et sécurisé, bookmarkable pour tout DevOps Azure.

Prérequis

  • Compte Azure actif avec abonnement (crédits suffisent pour tests)
  • Azure CLI 2.65+ installé (télécharger)
  • Azure PowerShell 13.0+ (installer)
  • Connaissances de base en Azure Resource Manager (ARM) et Kusto Query Language (KQL)
  • Visual Studio Code avec extension Azure Monitor (optionnel mais recommandé)

Créer le groupe de ressources et workspace Log Analytics

setup-workspace.sh
#!/bin/bash

# Variables (adaptez à votre environnement)
SUBSCRIPTION_ID="votre-subscription-id"
RESOURCE_GROUP="rg-monitor-demo"
LOCATION="francecentral"
WORKSPACE_NAME="log-analytics-monitor-2026"

# Login et sélection subscription
az login
az account set --subscription $SUBSCRIPTION_ID

# Créer le groupe de ressources
az group create --name $RESOURCE_GROUP --location $LOCATION --tags "project=monitor-demo" "env=dev"

# Créer le Log Analytics Workspace
az monitor log-analytics workspace create \
  --resource-group $RESOURCE_GROUP \
  --workspace-name $WORKSPACE_NAME \
  --location $LOCATION \
  --sku PerGB2018 \
  --retention-time 30 \
  --immediate-purge-data-on-deletion true

# Récupérer l'ID du workspace pour les étapes suivantes
echo "Workspace ID: $(az monitor log-analytics workspace show --resource-group $RESOURCE_GROUP --workspace-name $WORKSPACE_NAME --query id -o tsv)"

Ce script bash complet initialise un groupe de ressources et un workspace Log Analytics avec rétention 30 jours et purge immédiate pour conformité RGPD. Utilisez PerGB2018 pour optimiser les coûts (pay-as-you-go). Piège : Oubliez pas az login ou adaptez les variables, sinon erreur 400.

Déployer une VM de test pour générer des logs

Pour tester Azure Monitor, déployons une VM Windows simple via template ARM. Cela génère des logs Heartbeat et Performance Counters. Téléchargez le template ci-dessous et adaptez les paramètres.

Déployer VM Windows avec extension diagnostics

vm-template.json
{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "vmName": {
      "type": "string",
      "defaultValue": "vm-monitor-test"
    },
    "adminUsername": {
      "type": "string",
      "defaultValue": "azureuser"
    },
    "adminPassword": {
      "type": "securestring"
    },
    "workspaceId": {
      "type": "string"
    }
  },
  "variables": {},
  "resources": [
    {
      "type": "Microsoft.Compute/virtualMachines",
      "apiVersion": "2023-03-01",
      "name": "[parameters('vmName')]",
      "location": "francecentral",
      "properties": {
        "hardwareProfile": {
          "vmSize": "Standard_B2s"
        },
        "storageProfile": {
          "imageReference": {
            "publisher": "MicrosoftWindowsServer",
            "offer": "WindowsServer",
            "sku": "2022-Datacenter",
            "version": "latest"
          }
        },
        "osProfile": {
          "computerName": "[parameters('vmName')]",
          "adminUsername": "[parameters('adminUsername')]",
          "adminPassword": "[parameters('adminPassword')]",
          "windowsConfiguration": {
            "enableAutomaticUpdates": true
          }
        },
        "networkProfile": {
          "networkInterfaces": [
            {
              "id": "[resourceId('Microsoft.Network/publicIPAddresses', concat(parameters('vmName'), '-pip'))]"
            }
          ]
        }
      }
    },
    {
      "type": "Microsoft.Compute/virtualMachines/extensions",
      "apiVersion": "2022-03-01",
      "name": "[concat(parameters('vmName'), '/MicrosoftMonitoringAgent')]",
      "properties": {
        "publisher": "Microsoft.Azure.Monitor",
        "type": "AzureMonitorWindowsAgent",
        "typeHandlerVersion": "1.0",
        "autoUpgradeMinorVersion": true,
        "settings": {
          "workspaceId": "[parameters('workspaceId')]"
        }
      }
    },
    {
      "type": "Microsoft.Network/publicIPAddresses",
      "apiVersion": "2023-04-01",
      "name": "[concat(parameters('vmName'), '-pip')]",
      "sku": {
        "name": "Basic"
      },
      "properties": {
        "publicIPAllocationMethod": "Dynamic",
        "dnsSettings": {
          "domainNameLabel": "[concat(parameters('vmName'), '-', uniqueString(resourceGroup().id))]"
        }
      }
    },
    {
      "type": "Microsoft.Network/networkInterfaces",
      "apiVersion": "2023-04-01",
      "name": "[concat(parameters('vmName'), '-nic')]",
      "properties": {
        "ipConfigurations": [
          {
            "name": "ipconfig1",
            "properties": {
              "privateIPAllocationMethod": "Dynamic",
              "publicIPAddress": {
                "id": "[resourceId('Microsoft.Network/publicIPAddresses', concat(parameters('vmName'), '-pip'))]"
              },
              "subnet": {
                "id": "/subscriptions/{subscription-id}/resourceGroups/rg-monitor-demo/providers/Microsoft.Network/virtualNetworks/vnet-demo/subnets/default"
              }
            }
          }
        ]
      }
    }
  ]
}

Ce template ARM complet déploie une VM B2s Windows Server 2022 avec l'extension Azure Monitor Agent pointant vers votre workspace. Remplacez {subscription-id} et passez workspaceId en paramètre. Piège : Créez d'abord un VNet/subnet manuellement ou ajoutez-le au template ; utilisez az deployment group create --template-file vm-template.json pour déployer.

Déployer la VM via Azure CLI

deploy-vm.sh
#!/bin/bash

RESOURCE_GROUP="rg-monitor-demo"
TEMPLATE_FILE="vm-template.json"
WORKSPACE_ID="$(az monitor log-analytics workspace show --resource-group $RESOURCE_GROUP --workspace-name log-analytics-monitor-2026 --query id -o tsv)"

# Déployer (adaptez password)
az deployment group create \
  --resource-group $RESOURCE_GROUP \
  --template-file $TEMPLATE_FILE \
  --parameters adminPassword='P@ssw0rd123!^' workspaceId=$WORKSPACE_ID

# Vérifier le déploiement
echo "VM IP: $(az vm show -g $RESOURCE_GROUP -n vm-monitor-test --query publicIps -o tsv)"

Ce script déploie le template ARM avec les bons paramètres, incluant l'agent Monitor pour streamer logs/métriques vers le workspace. Attendez 5-10 min pour les premiers logs. Piège : Password doit respecter politique Azure (majuscules, chiffres, specs) sinon échec validation.

Interroger les logs avec KQL

Une fois les logs ingérés (vérifiez dans Azure Portal > Log Analytics > Logs), exécutez des queries KQL pour analyser. KQL est puissant comme SQL mais optimisé pour big data : joins, time-series, ML anomalies.

Query KQL pour Heartbeat et CPU usage

heartbeat-cpu.kql
Heartbeat
| where TimeGenerated > ago(1h)
| summarize HeartbeatCount = count() by Computer, bin(TimeGenerated, 5m)
| join kind=inner (
    Perf
    | where ObjectName == "Processor" and CounterName == "% Processor Time"
    | where TimeGenerated > ago(1h)
    | summarize AvgCPU = avg(CounterValue) by Computer, bin(TimeGenerated, 5m)
) on Computer, $left.TimeGenerated == $right.TimeGenerated
| project TimeGenerated, Computer, HeartbeatCount, AvgCPU
| render timechart

Cette query KQL join Heartbeat (dispo) et Perf CPU sur 1h, agrège par 5min et rend un timechart. Copiez-collez dans Logs blade. Piège : ago(1h) nécessite des données fraîches ; si vide, vérifiez agent avec InsightsMetrics table.

Activer diagnostic settings via PowerShell

enable-diagnostics.ps1
# Variables
$rgName = "rg-monitor-demo"
$vmName = "vm-monitor-test"
$workspaceId = (Get-AzOperationalInsightsWorkspace -ResourceGroupName $rgName -Name "log-analytics-monitor-2026").CustomerId.Guid

# Login
Connect-AzAccount
Set-AzContext -SubscriptionId "votre-subscription-id"

# Activer diagnostics pour VM (logs + metrics vers workspace)
$diagSettings = New-AzDiagnosticSetting -Name "diag-to-workspace" `
    -ResourceId (Get-AzVM -ResourceGroupName $rgName -Name $vmName).Id `
    -WorkspaceId $workspaceId `
    -Log '' `
    -Metric '' `
    -Category "VMInsights", "Perf", "Heartbeat", "WindowsEvent"

Write-Output "Diagnostics activés: $($diagSettings.Id)"

Ce script PowerShell active les diagnostics VM vers le workspace, capturant Perf/Heartbeat/WindowsEvent. Utilisez '' pour tous logs/métriques. Piège : Connect-AzAccount interactif ; pour CI/CD, utilisez service principal.

Créer une alerte métrique CPU > 80%

create-alert.sh
#!/bin/bash

RESOURCE_GROUP="rg-monitor-demo"
ALERT_NAME="High-CPU-Alert"
SCOPE_ID="$(az vm show -g $RESOURCE_GROUP -n vm-monitor-test --query id -o tsv)"

az monitor metrics alert create \
  --name $ALERT_NAME \
  --resource-group $RESOURCE_GROUP \
  --scopes $SCOPE_ID \
  --condition "\"Microsoft.Compute/virtualMachines\" AnyOf \"\"Percentage CPU\" > 80 avg 5m" \
  --description "Alerte si CPU >80% sur 5min" \
  --action-group "/subscriptions/votre-subscription-id/resourceGroups/rg-monitor-demo/providers/microsoft.insights/actionGroups/actiongroup-demo" \
  --severity 2 \
  --window-size 5m \
  --evaluation-frequency 1m

# Note: Créez d'abord un Action Group via Portal ou CLI

Crée une règle d'alerte métrique sur CPU avg >80% (5min éval 1min). Liez à un Action Group (email/SMS). Piège : Remplacez subscription/actiongroup ; testez avec stress CPU sur VM.

Bonnes pratiques

  • Retention optimisée : 30-90 jours pour logs dev, 365+ pour prod ; activez purge pour coûts.
  • Queries saved : Pin favorites dans Logs blade pour réutilisation.
  • RBAC strict : Assignez 'Monitoring Reader' minimal ; utilisez managed identities pour agents.
  • Coûts : Surveillez ingestion GB/mois via Cost Management ; filtrez logs inutiles.
  • Intégrez AIOps : Activez Smart Detection pour anomalies ML auto.

Erreurs courantes à éviter

  • Agent non installé : Vérifiez AzureMonitorWindowsAgent extension ; redéployez si MIA.
  • Queries vides : Délai 15min pour ingestion ; query search * pour valider.
  • Alerts silencieuses : Testez action group ; pas de notification si severity Sev0 sans groupe.
  • Région mismatch : Workspace/VM même location pour latence <1s.

Pour aller plus loin

Maîtrisez Application Insights pour apps web, ou Grafana avec Azure Data Explorer. Explorez notre formation Azure DevOps et docs officielles KQL. Contribuez sur GitHub Learni pour templates avancés.