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).
Consulte Introducción a Azure Diagnostics para obtener información general 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.
Prerrequisitos
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 la evaluación gratuita. Asegúrese de instalar y configurar la versión 0.8.7 o posterior de Azure PowerShell.
Paso 1: crear roles de trabajo
- Inicie Visual Studio.
- Cree un proyecto de Servicio en la nube de Azure a partir de la plantilla de nube que tenga como destino .NET Framework 4.5. Asigne el nombre "WadExample" al proyecto y seleccione Aceptar.
- Seleccione Rol de trabajo y seleccione 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 Habilitar diagnósticos para deshabilitar Diagnostics 1.0 (Azure SDK 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 del 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. 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.
- Implemente el rol de trabajo en Azure desde Visual Studio seleccionando el proyecto WadExample en el Explorador de soluciones y, a continuación, 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 Staging.
- Modifique cualquier otra configuración según corresponda y seleccione Publicar.
- Una vez completada la implementación, compruebe en Azure Portal que el servicio en la nube está en 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# ->Data ->XML File. Asigna 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 Schemas en la ventana Propiedades . Seleccione el … en la propiedad Schemas. Seleccione el botón Agregar... y vaya a la ubicación donde guardó 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 diagnósticos en su rol de trabajo (reemplace StorageAccountKey por la clave de cuenta de almacenamiento de su cuenta de almacenamiento wadexample y config_path por la ruta de acceso 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, vaya a la cuenta de almacenamiento wadexample. Una vez que el servicio en la nube se haya ejecutado aproximadamente 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 la referencia de esquema más reciente para ver los valores y ejemplos válidos.
Solución de problemas
Si tiene problemas, consulte Solución de problemas de Diagnósticos de Azure para obtener ayuda con problemas comunes.
Pasos siguientes
Consulte una lista de artículos de diagnóstico de máquinas virtuales de Azure relacionados para cambiar los datos que recopila, solucionar problemas o obtener más información sobre los diagnósticos en general.