Activer les diagnostics dans Azure Cloud Services (classique) à l’aide de PowerShell

Important

Microsoft Azure Cloud Services (classique) est désormais déconseillé pour tous les clients à compter du 1er septembre 2024. Tous les déploiements en cours d’exécution seront interrompus et arrêtés par Microsoft, et les données seront définitivement perdues à compter d’octobre 2024. Les nouveaux déploiements doivent utiliser le nouveau modèle de déploiement basé sur Azure Resource Manager Azure Cloud Services (support étendu) .

Vous pouvez collecter des données de diagnostic telles que les journaux des applications, les compteurs de performances, etc. à partir d’un service cloud à l’aide de l’extension de diagnostics Azure. Cet article décrit comment activer l’extension Diagnostics Azure pour un service cloud à l’aide de PowerShell. Voir Installer et configurer Azure PowerShell pour connaître les conditions requises pour cet article.

Activer l’extension de diagnostics lors du déploiement d’un service cloud

Cette approche peut s’appliquer aux scénarios d’intégration continue où l’extension de diagnostics peut être activée dans le cadre du déploiement d’un service cloud. Lorsque vous créez un déploiement de service cloud, vous pouvez activer l’extension de diagnostics en transmettant le paramètre ExtensionConfiguration à la cmdlet New-AzureDeployment . Le paramètre ExtensionConfiguration prend un tableau de configurations de diagnostics qui peut être créé à l’aide de l’applet de commande New-AzureServiceDiagnosticsExtensionConfig .

L’exemple suivant montre comment vous pouvez activer les diagnostics pour un service cloud avec un rôle web et un rôle de travail possédant chacun sa propre configuration de diagnostics.

$service_name = "MyService"
$service_package = "CloudService.cspkg"
$service_config = "ServiceConfiguration.Cloud.cscfg"
$webrole_diagconfigpath = "MyService.WebRole.PubConfig.xml"
$workerrole_diagconfigpath = "MyService.WorkerRole.PubConfig.xml"

$webrole_diagconfig = New-AzureServiceDiagnosticsExtensionConfig -Role "WebRole" -DiagnosticsConfigurationPath $webrole_diagconfigpath
$workerrole_diagconfig = New-AzureServiceDiagnosticsExtensionConfig -Role "WorkerRole" -DiagnosticsConfigurationPath $workerrole_diagconfigpath

New-AzureDeployment -ServiceName $service_name -Slot Production -Package $service_package -Configuration $service_config -ExtensionConfiguration @($webrole_diagconfig,$workerrole_diagconfig)

Si le fichier config de diagnostics spécifie un élément StorageAccount avec un nom de compte de stockage, la cmdlet New-AzureServiceDiagnosticsExtensionConfig utilise automatiquement ce compte de stockage. Pour que cette configuration fonctionne, le compte de stockage doit se trouver dans le même abonnement que l’instance déployée de Cloud Services.

À partir du kit Azure SDK 2.6, les fichiers config d’extension générés par la sortie de la cible de publication MSBuild incluent le nom du compte de stockage en fonction de la chaîne de configuration de diagnostic spécifiée dans le fichier de configuration de service (.cscfg). Le script suivant vous montre comment analyser les fichiers config d’extension à partir de la sortie de la cible de publication, et comment configurer l’extension de diagnostics pour chaque rôle quand vous déployez le service cloud.

$service_name = "MyService"
$service_package = "C:\build\output\CloudService.cspkg"
$service_config = "C:\build\output\ServiceConfiguration.Cloud.cscfg"

#Find the Extensions path based on service configuration file
$extensionsSearchPath = Join-Path -Path (Split-Path -Parent $service_config) -ChildPath "Extensions"

$diagnosticsExtensions = Get-ChildItem -Path $extensionsSearchPath -Filter "PaaSDiagnostics.*.PubConfig.xml"
$diagnosticsConfigurations = @()
foreach ($extPath in $diagnosticsExtensions)
{
    #Find the RoleName based on file naming convention PaaSDiagnostics.<RoleName>.PubConfig.xml
    $roleName = ""
    $roles = $extPath -split ".",0,"simplematch"
    if ($roles -is [system.array] -and $roles.Length -gt 1)
    {
        $roleName = $roles[1]
        $x = 2
        while ($x -le $roles.Length)
            {
               if ($roles[$x] -ne "PubConfig")
                {
                    $roleName = $roleName + "." + $roles[$x]
                }
                else
                {
                    break
                }
                $x++
            }
        $fullExtPath = Join-Path -path $extensionsSearchPath -ChildPath $extPath
        $diagnosticsconfig = New-AzureServiceDiagnosticsExtensionConfig -Role $roleName -DiagnosticsConfigurationPath $fullExtPath
        $diagnosticsConfigurations += $diagnosticsconfig
    }
}
New-AzureDeployment -ServiceName $service_name -Slot Production -Package $service_package -Configuration $service_config -ExtensionConfiguration $diagnosticsConfigurations

Visual Studio codespace utilise une approche similaire pour les déploiements automatisés de Cloud Services avec l’extension de diagnostics. Consultez Publish-AzureCloudDeployment.ps1 pour obtenir un exemple complet.

Si aucun StorageAccount n’a été spécifié dans la configuration des diagnostics, vous devez transmettre le paramètre StorageAccountName à l’applet de commande. Si vous spécifiez le paramètre StorageAccountName, la cmdlet utilise le compte de stockage spécifié dans le paramètre, et non celui spécifié dans le fichier config de diagnostics.

Si le compte de stockage de diagnostics appartient à un autre abonnement que celui du service cloud, vous devez transmettre explicitement les paramètres StorageAccountName et StorageAccountKey à l’applet de commande. Le paramètre StorageAccountKey n’est pas nécessaire quand le compte de stockage de diagnostics se trouve dans le même abonnement, car la cmdlet peut automatiquement interroger et définir la valeur de clé au moment de l’activation de l’extension de diagnostics. Toutefois, si le compte de stockage de diagnostics appartient à un autre abonnement, l’applet de commande n’est peut-être pas en mesure d’obtenir automatiquement la clé, et vous devez explicitement spécifier celle-ci par le biais du paramètre StorageAccountKey .

$webrole_diagconfig = New-AzureServiceDiagnosticsExtensionConfig -Role "WebRole" -DiagnosticsConfigurationPath $webrole_diagconfigpath -StorageAccountName $diagnosticsstorage_name -StorageAccountKey $diagnosticsstorage_key
$workerrole_diagconfig = New-AzureServiceDiagnosticsExtensionConfig -Role "WorkerRole" -DiagnosticsConfigurationPath $workerrole_diagconfigpath -StorageAccountName $diagnosticsstorage_name -StorageAccountKey $diagnosticsstorage_key

Activer l’extension de diagnostics sur un service cloud existant

Vous pouvez utiliser l’applet de commande Set-AzureServiceDiagnosticsExtension pour activer ou mettre à jour la configuration de diagnostics sur un service cloud qui est déjà en cours d’exécution.

Avertissement

Quand vous activez les diagnostics pour un rôle existant, toutes les extensions que vous avez déjà définies sont désactivées lors du déploiement du package. Ce sont, entre autres, les suivantes :

  • Extension Microsoft Monitoring Agent Diagnostics
  • Surveillance de la sécurité de Microsoft Azure
  • Microsoft Antimalware
  • Microsoft Monitoring Agent
  • Agent du profileur de service Microsoft
  • Extension de domaine Microsoft Azure
  • Extension Diagnostics Azure pour Windows
  • Extension Bureau à distance de Microsoft Azure
  • Collecteur de journaux Microsoft Azure

Vous pouvez réinitialiser vos extensions via le portail Azure ou PowerShell une fois que le rôle mis à jour est déployé.

$service_name = "MyService"
$webrole_diagconfigpath = "MyService.WebRole.PubConfig.xml"
$workerrole_diagconfigpath = "MyService.WorkerRole.PubConfig.xml"

$webrole_diagconfig = New-AzureServiceDiagnosticsExtensionConfig -Role "WebRole" -DiagnosticsConfigurationPath $webrole_diagconfigpath
$workerrole_diagconfig = New-AzureServiceDiagnosticsExtensionConfig -Role "WorkerRole" -DiagnosticsConfigurationPath $workerrole_diagconfigpath

Set-AzureServiceDiagnosticsExtension -DiagnosticsConfiguration @($webrole_diagconfig,$workerrole_diagconfig) -ServiceName $service_name

Obtenir la configuration actuelle de l’extension de diagnostics

Pour obtenir la configuration de diagnostics actuelle pour un service cloud, utilisez l’applet de commande Get-AzureServiceDiagnosticsExtension :

Get-AzureServiceDiagnosticsExtension -ServiceName "MyService"

Supprimer l’extension de diagnostics

Pour désactiver les diagnostics sur un service cloud, vous pouvez utiliser la cmdlet Remove-AzureServiceDiagnosticsExtension.

Remove-AzureServiceDiagnosticsExtension -ServiceName "MyService"

Si vous avez activé l’extension de diagnostics à l’aide de Set-AzureServiceDiagnosticsExtension ou New-AzureServiceDiagnosticsExtensionConfig sans le paramètre Role, vous pouvez supprimer l’extension à l’aide de Remove-AzureServiceDiagnosticsExtension sans le paramètre Role. Si le paramètre Role a été utilisé lors de l’activation de l’extension, il doit également être utilisé lors de la suppression de l’extension.

Pour supprimer l’extension de diagnostics de chaque rôle individuel :

Remove-AzureServiceDiagnosticsExtension -ServiceName "MyService" -Role "WebRole"

Étapes suivantes