Ativar diagnósticos no Azure Serviços Cloud (clássico) com o PowerShell
Importante
Serviços Cloud (clássico) foi preterido para novos clientes e será descontinuado a 31 de agosto de 2024 para todos os clientes. As novas implementações devem utilizar o novo modelo de implementação baseado em Resource Manager do Azure Serviços Cloud (suporte alargado).
Pode recolher dados de diagnóstico, como registos de aplicações, contadores de desempenho, etc. a partir de um Serviço Cloud com a extensão Diagnóstico do Azure. Este artigo descreve como ativar a extensão Diagnóstico do Azure para um Serviço Cloud com o PowerShell. Veja Como instalar e configurar Azure PowerShell para os pré-requisitos necessários para este artigo.
Ativar a extensão de diagnóstico como parte da implementação de um Serviço Cloud
Esta abordagem aplica-se a cenários de integração contínua, em que a extensão de diagnóstico pode ser ativada como parte da implementação do serviço cloud. Ao criar uma nova implementação do Serviço Cloud, pode ativar a extensão de diagnóstico ao transmitir o parâmetro ExtensionConfiguration para o cmdlet New-AzureDeployment . O parâmetro ExtensionConfiguration utiliza uma matriz de configurações de diagnóstico que podem ser criadas com o cmdlet New-AzureServiceDiagnosticsExtensionConfig .
O exemplo seguinte mostra como pode ativar diagnósticos para um serviço em nuvem com um WebRole e WorkerRole, cada um com uma configuração de diagnóstico diferente.
$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)
Se o ficheiro de configuração de diagnóstico especificar um StorageAccount
elemento com um nome de conta de armazenamento, o New-AzureServiceDiagnosticsExtensionConfig
cmdlet utilizará automaticamente essa conta de armazenamento. Para que isto funcione, a conta de armazenamento tem de estar na mesma subscrição que o Serviço Cloud que está a ser implementado.
A partir do SDK do Azure 2.6, os ficheiros de configuração da extensão gerados pela saída de destino de publicação do MSBuild incluirão o nome da conta de armazenamento com base na cadeia de configuração de diagnóstico especificada no ficheiro de configuração do serviço (.cscfg). O script abaixo mostra-lhe como analisar os ficheiros de configuração da Extensão a partir da saída de destino de publicação e configurar a extensão de diagnóstico para cada função ao implementar o serviço cloud.
$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
O Visual Studio Online utiliza uma abordagem semelhante para implementações automatizadas de Serviços Cloud com a extensão de diagnóstico. Veja Publish-AzureCloudDeployment.ps1 para obter um exemplo completo.
Se não tiver sido especificado nenhum StorageAccount
na configuração de diagnóstico, terá de transmitir o parâmetro StorageAccountName para o cmdlet . Se o parâmetro StorageAccountName for especificado, o cmdlet utilizará sempre a conta de armazenamento especificada no parâmetro e não a especificada no ficheiro de configuração de diagnóstico.
Se a conta de armazenamento de diagnósticos estiver numa subscrição diferente do Serviço Cloud, terá de transmitir explicitamente os parâmetros StorageAccountName e StorageAccountKey para o cmdlet . O parâmetro StorageAccountKey não é necessário quando a conta de armazenamento de diagnósticos está na mesma subscrição, uma vez que o cmdlet pode consultar e definir automaticamente o valor da chave ao ativar a extensão de diagnóstico. No entanto, se a conta de armazenamento de diagnóstico estiver numa subscrição diferente, o cmdlet poderá não conseguir obter a chave automaticamente e terá de especificar explicitamente a chave através do parâmetro 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
Ativar a extensão de diagnóstico num Serviço Cloud existente
Pode utilizar o cmdlet Set-AzureServiceDiagnosticsExtension para ativar ou atualizar a configuração de diagnósticos num Serviço Cloud que já está em execução.
Aviso
Quando ativa o diagnóstico para uma função existente, todas as extensões que já definiu são desativadas quando o pacote é implementado. Incluem-se:
- Diagnóstico do Microsoft Monitoring Agent
- Monitorização de Segurança do Microsoft Azure
- Microsoft Antimalware
- Microsoft Monitoring Agent
- Agente do Microsoft Service Profiler
- Extensão de Domínio do Windows Azure
- Extensão do Windows Diagnóstico do Azure
- Extensão de Ambiente de Trabalho Remoto do Windows Azure
- Recoletor de Registos do Windows Azure
Pode repor as extensões através do portal do Azure ou do PowerShell depois de implementar a função atualizada.
$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
Obter a configuração atual da extensão de diagnóstico
Utilize o cmdlet Get-AzureServiceDiagnosticsExtension para obter a configuração de diagnóstico atual para um serviço cloud.
Get-AzureServiceDiagnosticsExtension -ServiceName "MyService"
Remover a extensão de diagnóstico
Para desativar o diagnóstico num serviço cloud, pode utilizar o cmdlet Remove-AzureServiceDiagnosticsExtension .
Remove-AzureServiceDiagnosticsExtension -ServiceName "MyService"
Se tiver ativado a extensão de diagnóstico com Set-AzureServiceDiagnosticsExtension ou New-AzureServiceDiagnosticsExtensionConfig sem o parâmetro Role , pode remover a extensão com Remove-AzureServiceDiagnosticsExtension sem o parâmetro Role . Se o parâmetro Função tiver sido utilizado ao ativar a extensão, também tem de ser utilizado ao remover a extensão.
Para remover a extensão de diagnóstico de cada função individual:
Remove-AzureServiceDiagnosticsExtension -ServiceName "MyService" -Role "WebRole"
Passos Seguintes
- Para obter orientações adicionais sobre como utilizar diagnósticos do Azure e outras técnicas para resolver problemas, veja Enabling Diagnostics in Azure Serviços Cloud and Máquinas Virtuais (Ativar Diagnósticos no Azure Serviços Cloud e Máquinas Virtuais).
- O Esquema de Configuração de Diagnóstico explica as várias opções de configuração xml para a extensão de diagnóstico.
- Para saber como ativar a extensão de diagnóstico para Máquinas Virtuais, veja Criar uma Máquina Virtual do Windows com monitorização e diagnóstico com o Modelo de Resource Manager do Azure