Sdílet prostřednictvím


Povolení diagnostiky ve službách Azure Cloud Services (Classic) pomocí PowerShellu

Důležité

Od 1. září 2024 je služba Cloud Services (Classic) pro všechny zákazníky zastaralá. Microsoft zastaví a vypne všechna stávající spuštěná nasazení a data se od října 2024 trvale ztratí. Nová nasazení by měla používat nový model nasazení založený na Azure Resource Manageru na Azure Cloud Services (rozšířená podpora).

Pomocí rozšíření Azure Diagnostics můžete shromažďovat diagnostická data, jako jsou protokoly aplikací, čítače výkonu atd. z cloudové služby. Tento článek popisuje, jak povolit rozšíření Azure Diagnostics pro cloudovou službu pomocí PowerShellu. Informace o instalaci a konfiguraci Azure PowerShellu najdete v požadavcích potřebných pro tento článek.

Povolit rozšíření diagnostiky jako součást nasazení cloudové služby

Tento přístup se vztahuje na typ kontinuální integrace scénářů, kdy je možné povolit rozšíření diagnostiky jako součást nasazení cloudové služby. Při vytváření nového nasazení cloudové služby můžete rozšíření diagnostiky povolit předáním parametru ExtensionConfiguration rutině New-AzureDeployment . Parametr ExtensionConfiguration přebírá pole konfigurací diagnostiky, které lze vytvořit pomocí rutiny New-AzureServiceDiagnosticsExtensionConfig .

Následující příklad ukazuje, jak můžete povolit diagnostiku cloudové služby s webrolem a rolem pracovního procesu, přičemž každá má jinou konfiguraci diagnostiky.

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

Pokud konfigurační soubor diagnostiky určuje StorageAccount prvek s názvem účtu úložiště, rutina New-AzureServiceDiagnosticsExtensionConfig tento účet úložiště automaticky použije. Aby tato konfigurace fungovala, musí být účet úložiště ve stejném předplatném jako nasazená cloudová služba.

Od sady Azure SDK 2.6 dále konfigurační soubory rozšíření generované cílovým výstupem publikování NÁSTROJE MSBuild zahrnují název účtu úložiště na základě konfiguračního řetězce diagnostiky zadaného v konfiguračním souboru služby (.cscfg). Následující skript ukazuje, jak analyzovat konfigurační soubory rozšíření z cílového výstupu publikování a nakonfigurovat rozšíření diagnostiky pro každou roli při nasazování cloudové služby.

$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 používá podobný přístup pro automatizovaná nasazení cloudových služeb s rozšířením diagnostiky. Úplný příklad najdete v tématu Publish-AzureCloudDeployment.ps1.

Pokud nebyla v konfiguraci diagnostiky zadána žádná StorageAccount , musíte do rutiny předat parametr StorageAccountName . Pokud zadáte parametr StorageAccountName , použije rutina účet úložiště zadaný v parametru, nikoli účet úložiště zadaný v konfiguračním souboru diagnostiky.

Pokud je účet úložiště diagnostiky v jiném předplatném než cloudová služba, musíte do rutiny explicitně předat parametry StorageAccountName a StorageAccountKey . Parametr StorageAccountKey není potřeba, pokud je účet úložiště diagnostiky ve stejném předplatném, protože rutina může automaticky dotazovat a nastavit hodnotu klíče při povolování rozšíření diagnostiky. Pokud je ale účet úložiště diagnostiky v jiném předplatném, rutina nemusí být schopná klíč získat automaticky a musíte klíč explicitně zadat pomocí parametru 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

Povolit rozšíření diagnostiky na existující službu Cloud

Pomocí rutiny Set-AzureServiceDiagnosticsExtension můžete povolit nebo aktualizovat konfiguraci diagnostiky v cloudové službě, která už je spuštěná.

Upozorňující

Když povolíte diagnostiku pro existující roli, všechna rozšíření, která jste už nastavili, budou při nasazení balíčku zakázána. Tady jsou některé z nich:

  • Diagnostika agenta Microsoft Monitoring Agent
  • Monitorování zabezpečení Microsoft Azure
  • Antimalware od Microsoftu
  • Microsoft Monitoring Agent
  • Microsoft Service Profiler Agent
  • Rozšíření domény Windows Azure
  • Rozšíření Windows Azure Diagnostics
  • Rozšíření Vzdálené plochy Windows Azure
  • Kolektor protokolů Windows Azure

Po nasazení aktualizované role můžete rozšíření resetovat prostřednictvím webu Azure Portal nebo PowerShellu.

$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

Získejte aktuální konfiguraci rozšíření diagnostiky

Pomocí rutiny Get-AzureServiceDiagnosticsExtension získejte aktuální konfiguraci diagnostiky pro cloudovou službu.

Get-AzureServiceDiagnosticsExtension -ServiceName "MyService"

Odeberte rozšíření diagnostiky

Pokud chcete vypnout diagnostiku cloudové služby, můžete použít rutinu Remove-AzureServiceDiagnosticsExtension .

Remove-AzureServiceDiagnosticsExtension -ServiceName "MyService"

Pokud jste rozšíření diagnostiky povolili pomocí set-AzureServiceDiagnosticsExtension nebo New-AzureServiceDiagnosticsExtensionConfig bez parametru role , můžete rozšíření odebrat pomocí Remove-AzureServiceDiagnosticsExtension bez parametru role . Pokud byl při povolování rozšíření použit parametr Role, je potřeba ho použít také při odebírání rozšíření.

Chcete-li odebrat rozšíření diagnostiky pro každou jednotlivou roli:

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

Další kroky