Module 6 : Monitoring Azure
Écosystème Azure Monitor
+----------------------------------------------------------+
| AZURE MONITOR |
+----------------------------------------------------------+
| |
| Sources de données: |
| +-- Applications (App Insights) |
| +-- Systemes d'exploitation (VM Insights) |
| +-- Ressources Azure (Metrics, Logs) |
| +-- Subscriptions (Activity Log) |
| +-- Tenant (Azure AD Logs) |
| |
| Stockage: |
| +-- Metrics (base temporelle) |
| +-- Logs (Log Analytics Workspace) |
| |
| Actions: |
| +-- Alertes |
| +-- Dashboards |
| +-- Workbooks |
| +-- Autoscale |
| |
+----------------------------------------------------------+
Log Analytics Workspace
Log Analytics est le repository central pour tous les logs Azure :
- Stockage des logs de diagnostic
- Requêtes KQL (Kusto Query Language)
- Retention configurable
- Integration avec les alertes
# Créer un Log Analytics Workspace (PowerShell)
az monitor log-analytics workspace create --workspace-name law-folab-dev --resource-group rg-folab-dev --location westeurope --retention-time 90 --tags Project=FOLAB Env=Dev
# Voir les workspaces existants
az monitor log-analytics workspace list --resource-group rg-folab-dev --output table
Version Bash (cliquez pour afficher)
# Créer un Log Analytics Workspace
az monitor log-analytics workspace create \
--workspace-name law-folab-dev \
--resource-group rg-folab-dev \
--location westeurope \
--retention-time 90 \
--tags Project=FOLAB Env=Dev
# Voir les workspaces existants
az monitor log-analytics workspace list \
--resource-group rg-folab-dev \
--output table
Diagnostics Settings (PowerShell)
Configurer l'envoi des logs vers Log Analytics :
# Activer les diagnostics sur un Storage Account
az monitor diagnostic-settings create --name "diag-storage" --resource "/subscriptions/{sub}/resourceGroups/rg-folab-dev/providers/Microsoft.Storage/storageAccounts/stfolabdev001" --workspace law-folab-dev --logs '[{\"category\":\"StorageRead\",\"enabled\":true},{\"category\":\"StorageWrite\",\"enabled\":true},{\"category\":\"StorageDelete\",\"enabled\":true}]' --metrics '[{\"category\":\"Transaction\",\"enabled\":true}]'
# Activer les diagnostics sur Synapse
az monitor diagnostic-settings create --name "diag-synapse" --resource "/subscriptions/{sub}/resourceGroups/rg-folab-dev/providers/Microsoft.Synapse/workspaces/syn-folab-dev" --workspace law-folab-dev --logs '[{\"category\":\"SynapseRbacOperations\",\"enabled\":true},{\"category\":\"SQLSecurityAuditEvents\",\"enabled\":true}]'
Version Bash (cliquez pour afficher)
# Activer les diagnostics sur un Storage Account
az monitor diagnostic-settings create \
--name "diag-storage" \
--resource "/subscriptions/{sub}/resourceGroups/rg-folab-dev/providers/Microsoft.Storage/storageAccounts/stfolabdev001" \
--workspace law-folab-dev \
--logs '[{"category":"StorageRead","enabled":true},{"category":"StorageWrite","enabled":true},{"category":"StorageDelete","enabled":true}]' \
--metrics '[{"category":"Transaction","enabled":true}]'
# Activer les diagnostics sur Synapse
az monitor diagnostic-settings create \
--name "diag-synapse" \
--resource "/subscriptions/{sub}/resourceGroups/rg-folab-dev/providers/Microsoft.Synapse/workspaces/syn-folab-dev" \
--workspace law-folab-dev \
--logs '[{"category":"SynapseRbacOperations","enabled":true},{"category":"SQLSecurityAuditEvents","enabled":true}]'
Requêtes KQL (Kusto)
Exemples de requêtes utiles :
// Activites récentes sur le Resource Group
AzureActivity
| where ResourceGroup == "rg-folab-dev"
| where TimeGenerated > ago(24h)
| project TimeGenerated, OperationName, Caller, ActivityStatus
| order by TimeGenerated desc
| take 50
// Erreurs de stockage
StorageBlobLogs
| where TimeGenerated > ago(1h)
| where StatusCode >= 400
| summarize count() by StatusCode, OperationName
| order by count_ desc
// Requêtes SQL les plus lentes (Synapse)
SynapseSqlPoolExecRequests
| where TimeGenerated > ago(24h)
| where Status == "Completed"
| top 20 by TotalElapsedTimeMs desc
| project TimeGenerated, Command, TotalElapsedTimeMs, RowCount
// Connexions échouées
SigninLogs
| where TimeGenerated > ago(7d)
| where ResultType != 0
| summarize FailedCount=count() by UserPrincipalName, ResultDescription
| order by FailedCount desc
Alertes (PowerShell)
# Créer une alerte sur une métrique (CPU > 80%)
az monitor metrics alert create --name "alert-high-cpu" --resource-group rg-folab-dev --scopes "/subscriptions/{sub}/resourceGroups/rg-folab-dev/providers/Microsoft.Compute/virtualMachines/vm-folab" --condition "avg Percentage CPU > 80" --window-size 5m --evaluation-frequency 1m --action-group "/subscriptions/{sub}/resourceGroups/rg-folab-dev/providers/Microsoft.Insights/actionGroups/ag-folab-ops"
# Créer un Action Group (notifications)
az monitor action-group create --name ag-folab-ops --resource-group rg-folab-dev --short-name FolabOps --email-receiver name="DataTeam" email="data-team@mycompany.com"
Version Bash (cliquez pour afficher)
# Créer une alerte sur une métrique (CPU > 80%)
az monitor metrics alert create \
--name "alert-high-cpu" \
--resource-group rg-folab-dev \
--scopes "/subscriptions/{sub}/resourceGroups/rg-folab-dev/providers/Microsoft.Compute/virtualMachines/vm-folab" \
--condition "avg Percentage CPU > 80" \
--window-size 5m \
--evaluation-frequency 1m \
--action-group "/subscriptions/{sub}/resourceGroups/rg-folab-dev/providers/Microsoft.Insights/actionGroups/ag-folab-ops"
# Créer un Action Group (notifications)
az monitor action-group create \
--name ag-folab-ops \
--resource-group rg-folab-dev \
--short-name FolabOps \
--email-receiver name="DataTeam" email="data-team@mycompany.com"
Alertes recommandées
| Ressource | Métrique | Seuil |
|---|---|---|
| Storage | Used Capacity | > 80% |
| Synapse SQL Pool | DWU Used Percent | > 90% |
| Synapse SQL Pool | Connections Failed | > 5 |
| Data Factory | Pipeline Failed Runs | > 0 |
Dashboards et Workbooks (PowerShell)
# Créer un dashboard partage
az portal dashboard create --name "dashboard-folab-ops" --resource-group rg-folab-dev --input-path @dashboard-template.json
# Les Workbooks sont créés via le Portal
# Ils permettent des rapports interactifs avec KQL
Version Bash (cliquez pour afficher)
# Créer un dashboard partage
az portal dashboard create \
--name "dashboard-folab-ops" \
--resource-group rg-folab-dev \
--input-path @dashboard-template.json
# Les Workbooks sont créés via le Portal
# Ils permettent des rapports interactifs avec KQL
Activity Log (PowerShell)
L'Activity Log enregistre toutes les opérations de controle :
# Voir les opérations récentes
az monitor activity-log list --resource-group rg-folab-dev --start-time 2025-01-01 --output table
# Filtrer par type d'operation
az monitor activity-log list --resource-group rg-folab-dev --status Failed --output table
Version Bash (cliquez pour afficher)
# Voir les opérations récentes
az monitor activity-log list \
--resource-group rg-folab-dev \
--start-time 2025-01-01 \
--output table
# Filtrer par type d'operation
az monitor activity-log list \
--resource-group rg-folab-dev \
--status Failed \
--output table
Bonnes pratiques monitoring :
- Un Log Analytics Workspace par environnement
- Activer les diagnostics sur toutes les ressources critiques
- Configurer des alertes proactives
- Définir des retention policies appropriées
- Créer des dashboards pour les opérations quotidiennes