Habilitación de Azure Diagnostics en Azure Cloud Services (clásico)
Importante
Cloud Services (clásico) ahora está en desuso para todos los clientes a partir del 1 de septiembre de 2024. Microsoft detendrá y apagará las implementaciones en ejecución existentes y los datos se perderán de forma permanente a partir de octubre de 2024. Las nuevas implementaciones deben utilizar el nuevo modelo de implementación basado en Azure Resource Manager Azure Cloud Services (soporte extendido) .
Consulte Introducción a Diagnósticos de Azure para obtener información sobre Diagnósticos de Azure.
Habilitación de Diagnósticos en un rol de trabajo
En este tutorial se describe cómo implementar un rol de trabajo de Azure que emite datos de telemetría mediante la clase EventSource de .NET. Diagnósticos de Azure se usa para recopilar datos de telemetría y almacenarla en una cuenta de almacenamiento de Azure. Al crear un rol de trabajo, Visual Studio habilita automáticamente Diagnósticos 1.0 como parte de la solución en los Kits de desarrollo de software (SDK) de Azure para .NET 2.4, y versiones anteriores. En las instrucciones siguientes se describe el proceso para crear el rol de trabajo, deshabilitar Diagnósticos 1.0 de la solución e implementar Diagnósticos 1.2 o 1.3 en el rol de trabajo.
Requisitos previos
En este artículo se supone que tiene una suscripción a Azure y usa Visual Studio con Azure SDK. Si no tiene una suscripción de Azure, puede registrarse para obtener una evaluación gratuita. Asegúrese de instalar y configurar Azure PowerShell versión 0.8.7 o posterior.
Paso 1: crear roles de trabajo
- Inicie Visual Studio.
- Cree un proyecto en Azure Cloud Services desde la plantilla Nube cuyo destino sea .NET Framework 4.5. Asigne el nombre "WadExample" al proyecto y seleccione Aceptar.
- Seleccione Rol de trabajo y después Aceptar. Se crea el proyecto.
- En el Explorador de soluciones, haga doble clic en el archivo de propiedades WorkerRole1.
- En la pestaña Configuración, desactive la opción Habilitar Diagnósticos para deshabilitar Diagnósticos 1.0 (SDK de Azure 2.4 y versiones anteriores).
- Compile la solución para comprobar que no hay errores.
Paso 2: instrumentar el código
Reemplace el contenido de WorkerRole.cs por el código siguiente. La clase SampleEventSourceWriter, heredada de la clase EventSource, implementa cuatro métodos de registro: SendEnums, MessageMethod, SetOther y HighFreq. El primer parámetro del método WriteEvent define el identificador para el evento correspondiente. El método Run implementa un bucle infinito que llama a cada uno de los métodos de registro implementados en la clase SampleEventSourceWriter cada 10 segundos.
using Microsoft.WindowsAzure.ServiceRuntime;
using System;
using System.Diagnostics;
using System.Diagnostics.Tracing;
using System.Net;
using System.Threading;
namespace WorkerRole1
{
sealed class SampleEventSourceWriter : EventSource
{
public static SampleEventSourceWriter Log = new SampleEventSourceWriter();
public void SendEnums(MyColor color, MyFlags flags) { if (IsEnabled()) WriteEvent(1, (int)color, (int)flags); }// Cast enums to int for efficient logging.
public void MessageMethod(string Message) { if (IsEnabled()) WriteEvent(2, Message); }
public void SetOther(bool flag, int myInt) { if (IsEnabled()) WriteEvent(3, flag, myInt); }
public void HighFreq(int value) { if (IsEnabled()) WriteEvent(4, value); }
}
enum MyColor
{
Red,
Blue,
Green
}
[Flags]
enum MyFlags
{
Flag1 = 1,
Flag2 = 2,
Flag3 = 4
}
public class WorkerRole : RoleEntryPoint
{
public override void Run()
{
// This is a sample worker implementation. Replace with your logic.
Trace.TraceInformation("WorkerRole1 entry point called");
int value = 0;
while (true)
{
Thread.Sleep(10000);
Trace.TraceInformation("Working");
// Emit several events every time we go through the loop
for (int i = 0; i < 6; i++)
{
SampleEventSourceWriter.Log.SendEnums(MyColor.Blue, MyFlags.Flag2 | MyFlags.Flag3);
}
for (int i = 0; i < 3; i++)
{
SampleEventSourceWriter.Log.MessageMethod("This is a message.");
SampleEventSourceWriter.Log.SetOther(true, 123456789);
}
if (value == int.MaxValue) value = 0;
SampleEventSourceWriter.Log.HighFreq(value++);
}
}
public override bool OnStart()
{
// Set the maximum number of concurrent connections
ServicePointManager.DefaultConnectionLimit = 12;
// For information on handling configuration changes
// see the MSDN topic at https://go.microsoft.com/fwlink/?LinkId=166357.
return base.OnStart();
}
}
}
Paso 3: implementar roles de trabajo
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. Entre ellos, se incluye:
- Diagnósticos de Microsoft Monitoring Agent
- Supervisión de la seguridad de Microsoft Azure
- Microsoft Antimalware
- Microsoft Monitoring Agent
- Agente del generador de perfiles del 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.
- Implemente su rol de trabajo en Azure desde Visual Studio seleccionando el proyecto WadExample en el Explorador de soluciones y luego Publicar en el menú Compilar.
- Elija su suscripción.
- En el cuadro de diálogo Configuración de publicación de Microsoft Azure, seleccione Crear nuevo….
- En el cuadro de diálogo Crear servicio en la nube y cuenta de almacenamiento, escriba un nombre (por ejemplo, "WadExample") y seleccione una región o un grupo de afinidad.
- Establezca el Entorno en Ensayo.
- Modifique cualquier otro valor de Configuración según sea necesario y seleccione Publicar.
- Una vez que finalice la implementación, compruebe en Azure Portal que el servicio en la nube está en un estado En ejecución.
Paso 4: crear el archivo de configuración de Diagnósticos e instalar la extensión
Descargue la definición del esquema del archivo de configuración público ejecutando el comando de PowerShell siguiente:
(Get-AzureServiceAvailableExtension -ExtensionName 'PaaSDiagnostics' -ProviderNamespace 'Microsoft.Azure.Diagnostics').PublicConfigurationSchema | Out-File -Encoding utf8 -FilePath 'WadConfig.xsd'
Agregue un archivo XML al proyecto WorkerRole1 haciendo clic con el botón derecho en el proyecto WorkerRole1 y seleccione Agregar>Nuevo elemento…>Elementos de Visual C#>Datos>Archivo XML. Asigne al archivo el nombre
WadExample.xml
.Asocie WadConfig.xsd al archivo de configuración. Asegúrese de que la ventana del editor de WadExample es la ventana activa. Presione F4 para abrir la ventana Propiedades. Seleccione la propiedad Esquemas en la ventana Propiedades. Seleccione … en la propiedad Esquemas. Seleccione el botón Agregar…, vaya a la ubicación en la que ha guardado el archivo .xsd y seleccione el archivo WadConfig.xsd. Seleccione Aceptar.
Reemplace el contenido del archivo de configuración WadExample.xml por el siguiente archivo XM y guarde el archivo. Este archivo de configuración define un par de contadores de rendimiento para recopilar: uno para la utilización de la CPU y el otro para la utilización de memoria. A continuación, la configuración define los cuatro eventos correspondientes a los métodos de la clase SampleEventSourceWriter.
<?xml version="1.0" encoding="utf-8"?>
<PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
<WadCfg>
<DiagnosticMonitorConfiguration overallQuotaInMB="25000">
<PerformanceCounters scheduledTransferPeriod="PT1M">
<PerformanceCounterConfiguration counterSpecifier="\Processor(_Total)\% Processor Time" sampleRate="PT1M" unit="percent" />
<PerformanceCounterConfiguration counterSpecifier="\Memory\Committed Bytes" sampleRate="PT1M" unit="bytes"/>
</PerformanceCounters>
<EtwProviders>
<EtwEventSourceProviderConfiguration provider="SampleEventSourceWriter" scheduledTransferPeriod="PT5M">
<Event id="1" eventDestination="EnumsTable"/>
<Event id="2" eventDestination="MessageTable"/>
<Event id="3" eventDestination="SetOtherTable"/>
<Event id="4" eventDestination="HighFreqTable"/>
<DefaultEvents eventDestination="DefaultTable" />
</EtwEventSourceProviderConfiguration>
</EtwProviders>
</DiagnosticMonitorConfiguration>
</WadCfg>
</PublicConfig>
Paso 5: instalar Diagnósticos en roles de trabajo
Los cmdlets de PowerShell para administrar Diagnósticos en un rol web o de trabajo son: Set-AzureServiceDiagnosticsExtension, Get-AzureServiceDiagnosticsExtension y Remove-AzureServiceDiagnosticsExtension.
- Abra Azure PowerShell.
- Ejecute el script para instalar Diagnostics en su rol de trabajo (reemplace StorageAccountKey por la clave de cuenta de almacenamiento para la clave de almacenamiento wadexample) y config_path por la ruta al archivo WadExample.xml:
$storage_name = "wadexample"
$key = "<StorageAccountKey>"
$config_path="c:\users\<user>\documents\visual studio 2013\Projects\WadExample\WorkerRole1\WadExample.xml"
$service_name="wadexample"
$storageContext = New-AzureStorageContext -StorageAccountName $storage_name -StorageAccountKey $key
Set-AzureServiceDiagnosticsExtension -StorageContext $storageContext -DiagnosticsConfigurationPath $config_path -ServiceName $service_name -Slot Staging -Role WorkerRole1
Paso 6: consultar los datos de telemetría
En el Explorador de servidores de Visual Studio, navegue hasta la cuenta de almacenamiento wadexample. Una vez que el servicio en la nube se haya ejecutado aproximadamente durante cinco (5) minutos, debería ver las tablas WADEnumsTable, WADHighFreqTable, WADMessageTable, WADPerformanceCountersTable y WADSetOtherTable. Haga doble clic en una de las tablas para ver la telemetría que se ha recopilado.
Esquema de los archivos de configuración
El archivo de configuración de Diagnósticos define valores que se usan para inicializar la configuración de diagnóstico al iniciar el agente de diagnóstico. Consulte en la referencia de esquema más reciente los valores válidos y ejemplos.
Solucionar problemas
Si tiene problemas, consulte Solución de problemas de Diagnósticos de Azure para obtener ayuda relacionada con problemas comunes.
Pasos siguientes
Vea una lista de artículos relacionados con el diagnóstico de máquinas virtuales de Azure para cambiar los datos que se recopilan, solucionar problemas u obtener más información sobre los diagnósticos en general.