Włączanie diagnostyki w usługach Azure Cloud Services (wersja klasyczna) przy użyciu programu PowerShell
Ważne
Usługi Cloud Services (wersja klasyczna) są teraz przestarzałe dla wszystkich klientów od 1 września 2024 r. Wszystkie istniejące uruchomione wdrożenia zostaną zatrzymane i zamknięte przez firmę Microsoft, a dane zostaną przypadkowo utracone od października 2024 r. Nowe wdrożenia powinny używać nowego modelu wdrażania opartego na usłudze Azure Resource Manager w usługach Azure Cloud Services (wsparcie dodatkowe).
Możesz zbierać dane diagnostyczne, takie jak dzienniki aplikacji, liczniki wydajności itp. z usługi w chmurze przy użyciu rozszerzenia Diagnostyka Azure. W tym artykule opisano sposób włączania rozszerzenia Diagnostyka Azure dla usługi w chmurze przy użyciu programu PowerShell. Zobacz How to install and configure Azure PowerShell for the prerequisites needed for this article (Jak zainstalować i skonfigurować program Azure PowerShell ), aby zapoznać się z wymaganiami wstępnymi wymaganymi w tym artykule.
Włączanie rozszerzenia diagnostyki w ramach wdrażania usługi Cloud Service
Takie podejście ma zastosowanie do scenariuszy ciągłej integracji, w których rozszerzenie diagnostyczne można włączyć w ramach wdrażania usługi w chmurze. Podczas tworzenia nowego wdrożenia usługi w chmurze można włączyć rozszerzenie diagnostyczne, przekazując parametr ExtensionConfiguration do polecenia cmdlet New-AzureDeployment . Parametr ExtensionConfiguration przyjmuje tablicę konfiguracji diagnostycznych, które można utworzyć przy użyciu polecenia cmdlet New-AzureServiceDiagnosticsExtensionConfig.
W poniższym przykładzie pokazano, jak włączyć diagnostykę dla usługi w chmurze z elementami WebRole i WorkerRole, z których każda ma inną konfigurację diagnostyki.
$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)
Jeśli plik konfiguracji diagnostyki określa StorageAccount
element o nazwie konta magazynu, polecenie New-AzureServiceDiagnosticsExtensionConfig
cmdlet automatycznie używa tego konta magazynu. Aby ta konfiguracja działała, konto magazynu musi znajdować się w tej samej subskrypcji co wdrażana usługa w chmurze.
W przypadku zestawu Azure SDK 2.6 pliki konfiguracji rozszerzenia generowane przez docelowe dane wyjściowe publikowania programu MSBuild zawierają nazwę konta magazynu na podstawie ciągu konfiguracji diagnostyki określonego w pliku konfiguracji usługi (cscfg). Poniższy skrypt przedstawia sposób analizowania plików konfiguracji rozszerzenia z danych wyjściowych publikowania docelowego i konfigurowania rozszerzenia diagnostycznego dla każdej roli podczas wdrażania usługi w chmurze.
$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
Program Visual Studio Codespace używa podobnego podejścia do zautomatyzowanych wdrożeń usług Cloud Services z rozszerzeniem diagnostycznym. Aby zapoznać się z kompletnym przykładem, zobacz Publish-AzureCloudDeployment.ps1 (Publikowanie w usłudze AzureCloudDeployment.ps1 ).
Jeśli nie określono wartości StorageAccount
w konfiguracji diagnostycznej, musisz przekazać parametr StorageAccountName do polecenia cmdlet. Jeśli określisz parametr StorageAccountName , polecenie cmdlet używa konta magazynu określonego w parametrze, a nie określonego w pliku konfiguracji diagnostyki.
Jeśli konto magazynu diagnostyki znajduje się w innej subskrypcji niż usługa w chmurze, musisz jawnie przekazać parametry StorageAccountName i StorageAccountKey do polecenia cmdlet. Parametr StorageAccountKey nie jest wymagany, gdy konto magazynu diagnostycznego znajduje się w tej samej subskrypcji, ponieważ polecenie cmdlet może automatycznie wysyłać zapytania i ustawiać wartość klucza podczas włączania rozszerzenia diagnostyki. Jeśli jednak konto magazynu diagnostycznego znajduje się w innej subskrypcji, polecenie cmdlet może nie być w stanie uzyskać klucza automatycznie i należy jawnie określić klucz za 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
Włączanie rozszerzenia diagnostyki w istniejącej usłudze Cloud Service
Możesz użyć polecenia cmdlet Set-AzureServiceDiagnosticsExtension , aby włączyć lub zaktualizować konfigurację diagnostyki w usłudze w chmurze, która jest już uruchomiona.
Ostrzeżenie
Po włączeniu diagnostyki dla istniejącej roli wszystkie rozszerzenia, które zostały już ustawione, są wyłączone podczas wdrażania pakietu. Są to:
- Diagnostyka programu Microsoft Monitoring Agent
- Monitorowanie zabezpieczeń platformy Microsoft Azure
- Rozwiązanie Microsoft Antimalware
- Microsoft Monitoring Agent
- Agent profilera usług firmy Microsoft
- Rozszerzenie domeny platformy Windows Azure
- Rozszerzenie Diagnostyka Azure systemu Windows
- Rozszerzenie pulpitu zdalnego platformy Windows Azure
- Moduł zbierający dzienniki platformy Windows Azure
Rozszerzenia można zresetować za pośrednictwem witryny Azure Portal lub programu PowerShell po wdrożeniu zaktualizowanej roli.
$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
Pobieranie bieżącej konfiguracji rozszerzenia diagnostyki
Użyj polecenia cmdlet Get-AzureServiceDiagnosticsExtension, aby uzyskać bieżącą konfigurację diagnostyki dla usługi w chmurze.
Get-AzureServiceDiagnosticsExtension -ServiceName "MyService"
Usuwanie rozszerzenia diagnostyki
Aby wyłączyć diagnostykę usługi w chmurze, możesz użyć polecenia cmdlet Remove-AzureServiceDiagnosticsExtension .
Remove-AzureServiceDiagnosticsExtension -ServiceName "MyService"
Jeśli rozszerzenie diagnostyczne zostało włączone przy użyciu polecenia Set-AzureServiceDiagnosticsExtension lub New-AzureServiceDiagnosticsExtensionConfig bez parametru Rola, możesz usunąć rozszerzenie przy użyciu polecenia Remove-AzureServiceDiagnosticsExtension bez parametru Role. Jeśli parametr roli został użyty podczas włączania rozszerzenia, należy go również użyć podczas usuwania rozszerzenia.
Aby usunąć rozszerzenie diagnostyki z pojedynczej roli:
Remove-AzureServiceDiagnosticsExtension -ServiceName "MyService" -Role "WebRole"
Następne kroki
- Aby uzyskać więcej informacji na temat korzystania z diagnostyki platformy Azure i innych technik rozwiązywania problemów, zobacz Włączanie diagnostyki w usługach Azure Cloud Services i maszynach wirtualnych.
- Schemat konfiguracji diagnostyki wyjaśnia różne opcje konfiguracji xml dla rozszerzenia diagnostyki.
- Aby dowiedzieć się, jak włączyć rozszerzenie diagnostyczne dla maszyn wirtualnych, zobacz Tworzenie maszyny wirtualnej z systemem Windows z monitorowaniem i diagnostyką przy użyciu szablonu usługi Azure Resource Manager