Module 8 : Gestion des couts

Azure Cost Management

Cost Management permet de suivre et optimiser les dépenses Azure :


+----------------------------------------------------------+
|                    COST MANAGEMENT                        |
+----------------------------------------------------------+
|                                                           |
|   Analyse des couts:                                      |
|   +-- Par service                                        |
|   +-- Par resource group                                 |
|   +-- Par tag                                            |
|   +-- Par période                                        |
|                                                           |
|   Outils:                                                 |
|   +-- Cost Analysis (graphiques)                         |
|   +-- Budgets (limites et alertes)                       |
|   +-- Advisor (recommandations)                          |
|   +-- Reservations (remises)                             |
|                                                           |
+----------------------------------------------------------+
            

Budgets et alertes (PowerShell)

# Créer un budget mensuel
az consumption budget create --budget-name "budget-folab-dev" --amount 1000 --time-grain Monthly --start-date 2025-01-01 --end-date 2025-12-31 --resource-group rg-folab-dev --category Cost

# Ajouter des alertes au budget
# Via le portal : Cost Management > Budgets > Edit
# - Alerte a 50% : notification
# - Alerte a 80% : notification + review
# - Alerte a 100% : notification + action
Version Bash (cliquez pour afficher)
# Créer un budget mensuel
az consumption budget create \
    --budget-name "budget-folab-dev" \
    --amount 1000 \
    --time-grain Monthly \
    --start-date 2025-01-01 \
    --end-date 2025-12-31 \
    --resource-group rg-folab-dev \
    --category Cost

# Ajouter des alertes au budget
# Via le portal : Cost Management > Budgets > Edit
# - Alerte a 50% : notification
# - Alerte a 80% : notification + review
# - Alerte a 100% : notification + action

Seuils recommandés

Seuil Action Destinataires
50% Email informatif Équipe technique
80% Email + review des ressources Tech lead + Manager
100% Email + action immédiate Manager + Finance
120% Escalade Direction

Tags pour le suivi des couts

Les tags sont essentiels pour le cost tracking :
  • CostCenter : Centre de cout (obligatoire)
  • Project : Projet (obligatoire)
  • Environment : Dev/Test/Prod
  • Owner : Responsable
# Voir les couts par tag (PowerShell)
az consumption usage list --start-date 2025-01-01 --end-date 2025-01-31 --query "[?tags.Project=='FOLAB'].{Resource:instanceName, Cost:pretaxCost}" --output table

# Export des couts vers Storage (automatise)
# Via Portal : Cost Management > Exports
# - Daily export vers un container blob
# - Format CSV pour analyse
Version Bash (cliquez pour afficher)
# Voir les couts par tag
az consumption usage list \
    --start-date 2025-01-01 \
    --end-date 2025-01-31 \
    --query "[?tags.Project=='FOLAB'].{Resource:instanceName, Cost:pretaxCost}" \
    --output table

# Export des couts vers Storage (automatise)
# Via Portal : Cost Management > Exports
# - Daily export vers un container blob
# - Format CSV pour analyse

Optimisation des couts

1. Synapse (PowerShell)

# Mettre en pause le SQL Pool dédié
az synapse sql pool pause --name sqlpool-folab --workspace-name syn-folab-dev --resource-group rg-folab-dev

# Reprendre le SQL Pool
az synapse sql pool resume --name sqlpool-folab --workspace-name syn-folab-dev --resource-group rg-folab-dev

# Script de pause automatique (via Azure Automation)
# Pauser tous les soirs a 20h, reprendre a 8h
Version Bash (cliquez pour afficher)
# Mettre en pause le SQL Pool dédié
az synapse sql pool pause \
    --name sqlpool-folab \
    --workspace-name syn-folab-dev \
    --resource-group rg-folab-dev

# Reprendre le SQL Pool
az synapse sql pool resume \
    --name sqlpool-folab \
    --workspace-name syn-folab-dev \
    --resource-group rg-folab-dev

# Script de pause automatique (via Azure Automation)
# Pauser tous les soirs a 20h, reprendre a 8h

2. Spark Pools (PowerShell)

# Configurer l'auto-pause (15 min d'inactivite)
az synapse spark pool update --name sparkpool-folab --workspace-name syn-folab-dev --resource-group rg-folab-dev --enable-auto-pause true --delay 15

# Réduire la taille du pool en dev
# - Small nodes au lieu de Medium/Large
# - Min nodes = 3, Max = 10 (auto-scale)
Version Bash (cliquez pour afficher)
# Configurer l'auto-pause (15 min d'inactivite)
az synapse spark pool update \
    --name sparkpool-folab \
    --workspace-name syn-folab-dev \
    --resource-group rg-folab-dev \
    --enable-auto-pause true \
    --delay 15

# Réduire la taille du pool en dev
# - Small nodes au lieu de Medium/Large
# - Min nodes = 3, Max = 10 (auto-scale)

3. Storage

# Utiliser les tiers appropriées
# - Hot : donnees actives (< 30 jours)
# - Cool : donnees occasionnelles (30-90 jours)
# - Archive : donnees rarement accédées (> 90 jours)

# Lifecycle management pour automatiser
# (voir Module 4 - Stockage)

4. VMs et services

Économies potentielles :
  • Reserved Instances : jusqu'a -72% (engagement 1-3 ans)
  • Spot VMs : jusqu'a -90% (interruptibles)
  • Auto-shutdown : VMs de dev arrêtées la nuit
  • Right-sizing : ajuster la taille aux besoins réels

Azure Advisor (PowerShell)

Advisor fournit des recommandations de cout automatiques :

# Voir les recommandations Advisor
az advisor recommendation list --category Cost --output table

# Exemples de recommandations :
# - "Right-size underutilized VMs"
# - "Buy reserved instances for consistent usage"
# - "Delete unattached disks"
# - "Resize underutilized SQL databases"
Version Bash (cliquez pour afficher)
# Voir les recommandations Advisor
az advisor recommendation list \
    --category Cost \
    --output table

# Exemples de recommandations :
# - "Right-size underutilized VMs"
# - "Buy reserved instances for consistent usage"
# - "Delete unattached disks"
# - "Resize underutilized SQL databases"

Reservations

# Les Reservations offrent des remises significatives
# pour des engagements de 1 ou 3 ans

# Services éligibles :
# - VMs (Azure Reserved VM Instances)
# - SQL Database
# - Synapse (dedicated SQL pools)
# - Storage
# - Cosmos DB

# Analyse avant achat (via Portal) :
# Cost Management > Reservations > Recommendations

Rapports de couts (PowerShell)

# Exporter les couts mensuels
az consumption usage list --start-date 2025-01-01 --end-date 2025-01-31 --output json > costs-january.json

# Rapport par Resource Group
$costs = az consumption usage list --start-date 2025-01-01 --end-date 2025-01-31 --query "[].{RG:instanceId, Cost:pretaxCost}" | ConvertFrom-Json
$costs | Group-Object RG | ForEach-Object { @{RG = $_.Name; Total = ($_.Group.Cost | Measure-Object -Sum).Sum} }
Version Bash (cliquez pour afficher)
# Exporter les couts mensuels
az consumption usage list \
    --start-date 2025-01-01 \
    --end-date 2025-01-31 \
    --output json > costs-january.json

# Rapport par Resource Group
az consumption usage list \
    --start-date 2025-01-01 \
    --end-date 2025-01-31 \
    --query "[].{RG:instanceId, Cost:pretaxCost}" \
    | jq 'group_by(.RG) | map({rg: .[0].RG, total: map(.Cost) | add})'

Checklist optimisation couts

  • [ ] Budgets configurés avec alertes
  • [ ] Tags CostCenter sur toutes les ressources
  • [ ] Auto-pause sur Synapse SQL pools (dev)
  • [ ] Auto-pause sur Spark pools
  • [ ] Lifecycle management sur Storage
  • [ ] Review Advisor mensuel
  • [ ] Reservations pour les workloads stables
  • [ ] Auto-shutdown sur VMs de dev
  • [ ] Right-sizing des ressources