Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
Cloud Services (clásico) ahora está en desuso para todos los clientes a partir del 1 de septiembre de 2024. Microsoft detendrá y cerrará todas las implementaciones en curso y los datos se perderán de forma permanente a partir de octubre de 2024. Las nuevas implementaciones deben usar el nuevo modelo de implementación basado en Azure Resource Manager Azure Cloud Services (soporte extendido).
Puede recopilar datos de diagnóstico como registros de aplicaciones, contadores de rendimiento, etc., de un servicio en la nube mediante la extensión de Diagnósticos de Azure. En este artículo se describe cómo habilitar la extensión de Diagnósticos de Azure para un servicio en la nube mediante PowerShell. Consulte Instalación y configuración de Azure PowerShell para conocer los requisitos previos necesarios para este artículo.
Habilitar la extensión de diagnósticos como parte de la implementación de un servicio en la nube
Este enfoque es aplicable para el tipo de integración continua de escenarios en los que se puede habilitar la extensión de diagnóstico como parte de la implementación del servicio en la nube. Al crear una nueva implementación del servicio en la nube, puede habilitar la extensión de diagnóstico pasando el parámetro ExtensionConfiguration al cmdlet New-AzureDeployment . El parámetro ExtensionConfiguration toma una matriz de configuraciones de diagnóstico que se pueden crear mediante el cmdlet New-AzureServiceDiagnosticsExtensionConfig .
En el ejemplo siguiente se muestra cómo habilitar el diagnóstico de un servicio en la nube con un WebRole y WorkerRole, cada uno con una configuración 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)
Si el archivo de configuración de diagnóstico especifica un elemento StorageAccount con un nombre de cuenta de almacenamiento, el cmdlet New-AzureServiceDiagnosticsExtensionConfig usa automáticamente esa cuenta de almacenamiento. Para que esta configuración funcione, la cuenta de almacenamiento debe estar en la misma suscripción que el servicio en la nube que se está implementando.
A partir de Azure SDK 2.6, los archivos de configuración de extensión generados por la salida de destino de publicación de MSBuild incluyen el nombre de la cuenta de almacenamiento en función de la cadena de configuración de diagnóstico que se haya especificado en el archivo de configuración de servicio (.cscfg). El script siguiente muestra cómo analizar los archivos de configuración de extensión desde la salida de destino de publicación y cómo configurar la extensión de diagnóstico de cada rol al implementar el servicio en la nube.
$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 usa un enfoque similar para las implementaciones automatizadas de Cloud Services con la extensión de diagnóstico. Consulte Publish-AzureCloudDeployment.ps1 para obtener un ejemplo completo.
Si no se especificó StorageAccount en la configuración de diagnóstico, debe pasar el parámetro StorageAccountName al cmdlet. Si especifica el parámetro StorageAccountName , el cmdlet usa la cuenta de almacenamiento especificada en el parámetro y no la especificada en el archivo de configuración de diagnóstico.
Si la cuenta de almacenamiento de diagnóstico está en una suscripción diferente del servicio en la nube, debe pasar explícitamente los parámetros StorageAccountName y StorageAccountKey al cmdlet . El parámetro StorageAccountKey no es necesario cuando la cuenta de almacenamiento de diagnóstico está en la misma suscripción, ya que el cmdlet puede consultar y establecer automáticamente el valor de clave al habilitar la extensión de diagnóstico. Sin embargo, si la cuenta de almacenamiento de diagnóstico está en otra suscripción, es posible que el cmdlet no pueda obtener la clave automáticamente y debe especificar explícitamente la clave mediante el 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
Habilitar la extensión de diagnóstico en un servicio en la nube existente
Puede usar el cmdlet Set-AzureServiceDiagnosticsExtension para habilitar o actualizar la configuración de diagnóstico en un servicio en la nube que ya se está ejecutando.
Advertencia
Cuando se habilita el diagnóstico para un rol existente, todas las extensiones que se hayan establecido ya se deshabilitan al implementar el paquete. Estos incluyen:
- Diagnósticos de Microsoft Monitoring Agent
- Supervisión de la seguridad de Microsoft Azure
- Microsoft Antimalware
- Agente de Monitoreo de Microsoft
- Agente de Perfil de Servicio de Microsoft
- Extensión de dominio de Microsoft Azure
- Extensión de Microsoft Azure Diagnostics
- Extensión de escritorio remoto de Microsoft Azure
- Recopilador de registros de Microsoft Azure
Puede volver a establecer sus extensiones a través de Azure Portal o de PowerShell después de haber implementado el rol actualizado.
$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
Obtener la configuración actual de la extensión de diagnósticos
Use el cmdlet Get-AzureServiceDiagnosticsExtension para obtener la configuración de diagnóstico actual de un servicio en la nube.
Get-AzureServiceDiagnosticsExtension -ServiceName "MyService"
Eliminar la extensión de diagnóstico
Para desactivar los diagnósticos en un servicio en la nube, puede usar el cmdlet Remove-AzureServiceDiagnosticsExtension .
Remove-AzureServiceDiagnosticsExtension -ServiceName "MyService"
Si ha habilitado la extensión de diagnóstico mediante Set-AzureServiceDiagnosticsExtension o New-AzureServiceDiagnosticsExtensionConfig sin el parámetro Role , puede quitar la extensión mediante Remove-AzureServiceDiagnosticsExtension sin el parámetro Role . Si se usó el parámetro Role al habilitar la extensión, también debe usarse al quitar la extensión.
Para quitar la extensión de diagnóstico de cada rol individual:
Remove-AzureServiceDiagnosticsExtension -ServiceName "MyService" -Role "WebRole"
Pasos siguientes
- Para más información sobre el uso de diagnósticos de Azure y otras técnicas para solucionar problemas, consulte Habilitación de diagnósticos en Azure Cloud Services y Máquinas virtuales.
- El esquema de configuración de diagnóstico explica las distintas opciones de configuración xml para la extensión de diagnóstico.
- Para obtener información sobre cómo habilitar la extensión de diagnóstico para máquinas virtuales, consulte Creación de una máquina virtual Windows con supervisión y diagnóstico mediante la plantilla de Azure Resource Manager.