Aktivera diagnostik i Azure Cloud Services (klassisk) med PowerShell

Viktigt

Cloud Services (klassisk) är nu inaktuell för nya kunder och kommer att dras tillbaka den 31 augusti 2024 för alla kunder. 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 molntjänstdistribution 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 olika diagnostikkonfigurationer.

$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 det lagringskontot. För att detta 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 lagringskontots namn baserat på diagnostikkonfigurationssträngen som anges i tjänstkonfigurationsfilen (.cscfg). Skriptet nedan 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 Online använder en liknande metod för automatiserade distributioner av Cloud Services med diagnostiktillägget. Ett fullständigt exempel finns iPublish-AzureCloudDeployment.ps1 .

Om inget StorageAccount har angetts i diagnostikkonfigurationen måste du skicka parametern StorageAccountName till cmdleten. Om parametern StorageAccountName anges använder cmdleten alltid 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 omfattar:

  • 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 Fjärrskrivbordstillä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 på 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 den 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