Povolení diagnostiky v Azure Cloud Services (Classic) pomocí PowerShellu

Důležité

Cloud Services (classic) je teď pro nové zákazníky zastaralý a bude vyřazen 31. srpna 2024 pro všechny zákazníky. Nová nasazení by měla používat nový model nasazení Azure Resource Manager založený na Azure Cloud Services (rozšířená podpora).

Můžete shromažďovat diagnostická data, jako jsou protokoly aplikací, čítače výkonu atd. z cloudové služby pomocí rozšíření Azure Diagnostics. Tento článek popisuje, jak povolit rozšíření Azure Diagnostics pro cloudovou službu pomocí PowerShellu. Požadavky potřebné pro tento článek najdete v tématu Instalace a konfigurace Azure PowerShell.

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

Tento přístup se vztahuje na scénáře typu kontinuální integrace, kde je možné povolit rozšíření diagnostiky v rámci nasazení cloudové služby. Při vytváření nového nasazení cloudové služby můžete povolit rozšíření diagnostiky předáním parametru ExtensionConfigurationrutině New-AzureDeployment . Parametr ExtensionConfiguration přebírá pole konfigurací diagnostiky, které je možné vytvořit pomocí rutiny New-AzureServiceDiagnosticsExtensionConfig .

Následující příklad ukazuje, jak můžete povolit diagnostiku pro cloudovou službu s webrole a rolí pracovního procesu, přičemž každá z nich 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 to fungovalo, účet úložiště musí být ve stejném předplatném jako nasazované cloudové služby.

Od verze Azure SDK 2.6 budou konfigurační soubory rozšíření vygenerované výstupem cíle publikování MSBuild obsahovat 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 výstupu cíle 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 Online používá podobný přístup k automatizovaným nasazením Cloud Services s rozšířením diagnostiky. Úplný příklad najdete v Publish-AzureCloudDeployment.ps1 .

StorageAccount Pokud v konfiguraci diagnostiky nebyla zadána hodnota , musíte do rutiny předat parametr StorageAccountName. Pokud je zadaný parametr StorageAccountName , rutina vždy použije účet úložiště, který je zadaný v parametru, a ne ten, který je 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 rutině explicitně předat parametry StorageAccountName a StorageAccountKey . Pokud je účet úložiště diagnostiky ve stejném předplatném, není parametr StorageAccountKey potřeba, protože rutina může při povolování rozšíření diagnostiky automaticky dotazovat a nastavit hodnotu klíče. Pokud je ale účet úložiště diagnostiky v jiném předplatném, nemusí být rutina schopná získat klíč automaticky a vy ho budete muset explicitně zadat prostřednictvím 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á je už spuštěná.

Upozornění

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

  • Diagnostika agenta Microsoft Monitoring Agent
  • Microsoft Azure Security Monitoring
  • Antimalware od Microsoftu
  • Microsoft Monitoring Agent
  • Microsoft Service Profiler Agent
  • Rozšíření domény Windows Azure
  • Rozšíření Windows Azure Diagnostics
  • Rozšíření Windows Azure Remote Desktop
  • Kolektor protokolů Windows Azure

Po nasazení aktualizované role můžete rozšíření resetovat prostřednictvím 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

K získání aktuální konfigurace diagnostiky pro cloudovou službu použijte rutinu Get-AzureServiceDiagnosticsExtension .

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 diagnostické rozšíření povolili pomocí rutiny Set-AzureServiceDiagnosticsExtension nebo New-AzureServiceDiagnosticsExtensionConfig bez parametru Role , můžete rozšíření odebrat pomocí rutiny Remove-AzureServiceDiagnosticsExtension bez parametru Role . Pokud se při povolování rozšíření použil parametr Role , musí se 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