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

Important

Services Cloud (classique) est désormais déconseillé pour les nouveaux clients et sera supprimé le 31 août 2024 pour tous les clients. 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 de configuration des diagnostics spécifie un élément StorageAccount avec un nom de compte de stockage, l’applet de commande New-AzureServiceDiagnosticsExtensionConfig utilise automatiquement ce compte de stockage. Pour que cela fonctionne, le compte de stockage doit appartenir au même abonnement que le service cloud déployé.

À partir d’Azure SDK 2.6, les fichiers de configuration de l’extension générés par la sortie cible de publication MSBuild incluent le nom du compte de stockage en fonction de la chaîne de configuration des diagnostics spécifiée dans le fichier de configuration de service (.cscfg). Le script ci-dessous vous montre comment analyser les fichiers de configuration de l’extension à partir de la sortie cible de publication, et comment configurer l’extension de diagnostics pour chaque rôle lorsque 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 Online utilise une approche similaire pour les déploiements automatisés de services cloud 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 le paramètre StorageAccountName est spécifié, l’applet de commande utilise toujours le compte de stockage spécifié dans le paramètre et non celui spécifié dans le fichier de configuration des 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 lorsque le compte de stockage de diagnostics appartient au même abonnement si l’applet de commande peut interroger et définir automatiquement la valeur clé lors 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