Dela via


Aktivera diagnostik i Azure Cloud Services (klassisk) med hjälp av PowerShell

Viktigt!

Cloud Services (klassisk) är nu inaktuellt för alla kunder från och med den 1 september 2024. Alla befintliga distributioner som körs stoppas och stängs av av Microsoft och data försvinner permanent från och med oktober 2024. Nya distributioner bör använda den nya Azure Resource Manager-baserade distributionsmodellen Azure Cloud Services (utökad support).

Du kan samla in diagnostikdata som programloggar, prestandaräknare osv. från en molntjänst med hjälp av Azure Diagnostics-tillägget. Den här artikeln beskriver hur du aktiverar Azure Diagnostics-tillägget för en molntjänst med hjälp av PowerShell. Se Så här installerar och konfigurerar du Azure PowerShell för de krav som krävs för den här artikeln.

Aktivera diagnostiktillägget som en del av distributionen av en molntjänst

Den här metoden gäller för scenarier med kontinuerlig integrering, där diagnostiktillägget kan aktiveras som en del av distributionen av molntjänsten. När du skapar en ny Cloud Service-distribution kan du aktivera diagnostiktillägget genom att skicka parametern ExtensionConfiguration till cmdleten New-AzureDeployment . Parametern ExtensionConfiguration tar en matris med diagnostikkonfigurationer som kan skapas med cmdleten New-AzureServiceDiagnosticsExtensionConfig .

I följande exempel visas hur du kan aktivera diagnostik för en molntjänst med en WebRole och WorkerRole, där var och en har en annan diagnostikkonfiguration.

$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)

Om diagnostikkonfigurationsfilen anger ett StorageAccount element med ett lagringskontonamn använder cmdleten New-AzureServiceDiagnosticsExtensionConfig automatiskt lagringskontot. För att den här konfigurationen ska fungera måste lagringskontot finnas i samma prenumeration som molntjänsten som distribueras.

Från Azure SDK 2.6 och senare innehåller tilläggskonfigurationsfilerna som genereras av MSBuild-publiceringsmålutdata lagringskontonamnet baserat på diagnostikkonfigurationssträngen som anges i tjänstkonfigurationsfilen (.cscfg). Följande skript visar hur du parsar tilläggskonfigurationsfilerna från publiceringsmålutdata och konfigurerar diagnostiktillägg för varje roll när du distribuerar molntjänsten.

$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 använder en liknande metod för automatiserade distributioner av Cloud Services med diagnostiktillägget. Ett fullständigt exempel finns i Publish-AzureCloudDeployment.ps1 .

Om inget StorageAccount har angetts i diagnostikkonfigurationen måste du skicka parametern StorageAccountName till cmdleten. Om du anger parametern StorageAccountName använder cmdleten det lagringskonto som anges i parametern och inte det som anges i diagnostikkonfigurationsfilen.

Om diagnostiklagringskontot finns i en annan prenumeration än molntjänsten måste du uttryckligen skicka parametrarna StorageAccountName och StorageAccountKey till cmdleten. Parametern StorageAccountKey behövs inte när diagnostiklagringskontot finns i samma prenumeration, eftersom cmdleten automatiskt kan fråga och ange nyckelvärdet när du aktiverar diagnostiktillägget. Men om diagnostiklagringskontot finns i en annan prenumeration kanske cmdleten inte kan hämta nyckeln automatiskt och du måste uttryckligen ange nyckeln via parametern 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

Aktivera diagnostiktillägg i en befintlig molntjänst

Du kan använda cmdleten Set-AzureServiceDiagnosticsExtension för att aktivera eller uppdatera diagnostikkonfigurationen på en molntjänst som redan körs.

Varning

När du aktiverar diagnostik för en befintlig roll inaktiveras alla tillägg som du redan har angett när paketet distribueras. Dessa kan vara:

  • Microsoft Monitoring Agent Diagnostics
  • Säkerhetsövervakning i Microsoft Azure
  • Microsoft-programvara mot skadlig kod
  • Microsoft Monitoring Agent
  • Microsoft Service Profiler Agent
  • Windows Azure-domäntillägg
  • Windows Azure Diagnostics-tillägg
  • Windows Azure Remote Desktop-tillägg
  • Windows Azure-logginsamlare

Du kan återställa dina tillägg via Azure Portal eller PowerShell när du har distribuerat den uppdaterade rollen.

$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

Hämta den aktuella konfigurationen för diagnostiktillägg

Använd cmdleten Get-AzureServiceDiagnosticsExtension för att hämta den aktuella diagnostikkonfigurationen för en molntjänst.

Get-AzureServiceDiagnosticsExtension -ServiceName "MyService"

Ta bort diagnostiktillägg

Om du vill inaktivera diagnostik för en molntjänst kan du använda cmdleten Remove-AzureServiceDiagnosticsExtension .

Remove-AzureServiceDiagnosticsExtension -ServiceName "MyService"

Om du har aktiverat diagnostiktillägget med antingen Set-AzureServiceDiagnosticsExtension eller New-AzureServiceDiagnosticsExtensionConfig utan parametern Roll kan du ta bort tillägget med hjälp av Remove-AzureServiceDiagnosticsExtension utan parametern Roll. Om parametern Roll användes när tillägget aktiverades måste det också användas när tillägget tas bort.

Så här tar du bort diagnostiktillägget från varje enskild roll:

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

Nästa steg