Habilitando o Diagnóstico do Azure nos Serviços de Nuvem do Azure (clássico)

Importante

Os Serviços na Nuvem (clássicos) foram preteridos para todos os clientes a partir de 1º de setembro de 2024. Todas as implantações em execução existentes serão interrompidas e encerradas pela Microsoft e os dados serão perdidos permanentemente a partir de outubro de 2024. Novas implantações devem usar o novo modelo de implantação baseado no Azure Resource Manager Serviços de Nuvem do Azure (suporte estendido).

Consulte Visão geral do Diagnóstico do Azure para obter informações básicas sobre o Diagnóstico do Azure.

Como habilitar diagnósticos em uma função de trabalho

Este passo a passo descreve como implementar uma função de trabalho do Azure que emite dados de telemetria usando a classe .NET EventSource. O Diagnóstico do Azure é usado para coletar os dados de telemetria e armazená-los em uma conta de armazenamento do Azure. Quando você cria uma função de trabalho, o Visual Studio habilita automaticamente o Diagnóstico 1.0 como parte da solução nos SDKs (Software Development Kits) do Azure para .NET 2.4 e versões anteriores. As instruções a seguir descrevem o processo para criar a função de trabalho, desabilitar o Diagnóstico 1.0 da solução e implantar o Diagnóstico 1.2 ou 1.3 na sua função de trabalho.

Pré-requisitos

Este artigo pressupõe que você tenha uma assinatura do Azure e esteja usando o Visual Studio com o SDK do Azure. Se não tiver uma subscrição do Azure, pode inscrever-se na Avaliação Gratuita. Certifique-se de Instalar e configurar o Azure PowerShell versão 0.8.7 ou posterior.

Etapa 1: Criar uma função de trabalho

  1. Inicie o Visual Studio.
  2. Crie um projeto do Serviço de Nuvem do Azure a partir do modelo de Nuvem destinado ao .NET Framework 4.5. Nomeie o projeto como "WadExample" e selecione Ok.
  3. Selecione Função de trabalho e selecione Ok. O projeto foi criado!
  4. No Gerenciador de Soluções, clique duas vezes no arquivo de propriedades WorkerRole1 .
  5. Na guia Configuração, desmarque Habilitar Diagnóstico para desabilitar o Diagnóstico 1.0 (SDK do Azure 2.4 e anteriores).
  6. Crie sua solução para verificar se você não tem erros.

Passo 2: Instrumente o seu código

Substitua o conteúdo do WorkerRole.cs pelo código a seguir. A classe SampleEventSourceWriter, herdada da classe EventSource, implementa quatro métodos de log: SendEnums, MessageMethod, SetOther e HighFreq. O primeiro parâmetro para o método WriteEvent define a ID para o respetivo evento. O método Run implementa um loop infinito que chama cada um dos métodos de log implementados na classe SampleEventSourceWriter a 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();
        }
    }
}

Etapa 3: Implantar sua função de trabalho

Aviso

Quando você habilita o diagnóstico para uma função existente, todas as extensões que você já definiu são desabilitadas quando o pacote é implantado. Estes são, entre outros:

  • Diagnóstico do Microsoft Monitoring Agent
  • Monitoramento 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 de diagnóstico do Windows Azure
  • Extensão de Área de Trabalho Remota do Windows Azure
  • Coletor de Log do Windows Azure

Você pode redefinir suas extensões por meio do portal do Azure ou do PowerShell depois de implantar a função atualizada.

  1. Implante sua função de trabalho no Azure de dentro do Visual Studio selecionando o projeto WadExample no Gerenciador de Soluções e, em seguida, Publique no menu Compilar .
  2. Escolha a sua subscrição.
  3. Na caixa de diálogo Configurações de publicação do Microsoft Azure, selecione Criar novo....
  4. Na caixa de diálogo Criar Conta de Serviço e Armazenamento na Nuvem, insira um Nome (por exemplo, "WadExample") e selecione uma região ou grupo de afinidade.
  5. Defina o ambiente como Preparo.
  6. Modifique quaisquer outras configurações conforme apropriado e selecione Publicar.
  7. Após a conclusão da implantação, verifique no portal do Azure se seu serviço de nuvem está em um estado de execução .

Etapa 4: Crie o arquivo de configuração do Diagnostics e instale a extensão

  1. Baixe a definição de esquema do arquivo de configuração pública executando o seguinte comando do PowerShell:

    (Get-AzureServiceAvailableExtension -ExtensionName 'PaaSDiagnostics' -ProviderNamespace 'Microsoft.Azure.Diagnostics').PublicConfigurationSchema | Out-File -Encoding utf8 -FilePath 'WadConfig.xsd'
    
  2. Adicione um arquivo XML ao seu projeto WorkerRole1 clicando com o botão direito do mouse no projeto WorkerRole1 e selecione Add ->New Item... ->Visual C# items ->Data ->XML File. Dê o nome WadExample.xml ao ficheiro.

    CloudServices_diag_add_xml

  3. Associe o WadConfig.xsd ao arquivo de configuração. Verifique se a janela do editor de WadExample.xml é a janela ativa. Pressione F4 para abrir a janela Propriedades . Selecione a propriedade Schemas na janela Properties . Selecione o ... na propriedade Schemas . Selecione o botão Add... e navegue até o local onde você salvou o arquivo .xsd e selecione o arquivo WadConfig.xsd. Selecione OK.

  4. Substitua o conteúdo do arquivo de configuração WadExample.xml pelo XML a seguir e salve o arquivo. Este arquivo de configuração define alguns contadores de desempenho a serem coletados: um para utilização da CPU e outro para utilização da memória. Em seguida, a configuração define os quatro eventos correspondentes aos métodos na classe 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>

Etapa 5: Instalar o diagnóstico na sua função de trabalho

Os cmdlets do PowerShell para gerenciar Diagnósticos em uma função Web ou de trabalho são: Set-AzureServiceDiagnosticsExtension, Get-AzureServiceDiagnosticsExtension e Remove-AzureServiceDiagnosticsExtension.

  1. Abra o Azure PowerShell.
  2. Execute o script para instalar o Diagnostics em sua função de trabalho (substitua StorageAccountKey pela chave da conta de armazenamento para sua conta de armazenamento wadexample e config_path pelo caminho para o arquivo 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

Etapa 6: examinar seus dados de telemetria

No Visual Studio Server Explorer, navegue até a conta de armazenamento wadexample. Depois que o serviço de nuvem estiver sendo executado cerca de cinco (5) minutos, você verá as tabelas WADEnumsTable, WADHighFreqTable, WADMessageTable, WADPerformanceCountersTable e WADSetOtherTable. Clique duas vezes em uma das tabelas para exibir a telemetria coletada.

CloudServices_diag_tables

Esquema do arquivo de configuração

O arquivo de configuração de Diagnóstico define valores que são usados para inicializar definições de configuração de diagnóstico quando o agente de diagnóstico é iniciado. Consulte a referência de esquema mais recente para obter valores e exemplos válidos.

Resolução de Problemas

Se tiver problemas, consulte Resolução de problemas do Diagnóstico do Azure para obter ajuda com problemas comuns.

Passos Seguintes

Consulte uma lista de artigos relacionados de diagnóstico de máquina virtual do Azure para alterar os dados coletados, solucionar problemas ou saber mais sobre diagnósticos em geral.