Ativar Diagnóstico do Azure no Azure Serviços Cloud (clássico)

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).

Veja Descrição Geral do Diagnóstico do Azure para obter informações sobre Diagnóstico do Azure.

Como Ativar Diagnósticos numa Função de Trabalho

Estas instruções descrevem como implementar uma função de trabalho do Azure que emite dados telemétricos com a classe .NET EventSource. Diagnóstico do Azure é utilizado para recolher os dados telemétricos e armazená-lo numa conta de armazenamento do Azure. Ao criar uma função de trabalho, o Visual Studio ativa automaticamente o Diagnóstico 1.0 como parte da solução nos SDKs do Azure para .NET 2.4 e anterior. As seguintes instruções descrevem o processo para criar a função de trabalho, desativar o Diagnóstico 1.0 da solução e implementar o Diagnóstico 1.2 ou 1.3 na sua função de trabalho.

Pré-requisitos

Este artigo pressupõe que tem uma subscrição do Azure e está a utilizar 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 que instala e configura Azure PowerShell versão 0.8.7 ou posterior.

Passo 1: Criar uma Função de Trabalho

  1. Inicie o Visual Studio.
  2. Crie um projeto do Serviço Cloud do Azure a partir do modelo cloud que tenha como destino .NET Framework 4.5. Atribua o nome "WadExample" ao projeto e clique em OK.
  3. Selecione Função de Trabalho e clique em OK. O projeto será criado.
  4. No Explorador de Soluções, faça duplo clique no ficheiro de propriedades WorkerRole1.
  5. No separador Configuração , desmarque Ativar Diagnóstico para desativar o Diagnóstico 1.0 (SDK do Azure 2.4 e anterior).
  6. Crie a sua solução para verificar se não tem erros.

Passo 2: Instrumentar o código

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

Passo 3: Implementar a Função de Trabalho

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.

  1. Implemente a função de trabalho no Azure a partir do Visual Studio ao selecionar o projeto WadExample no Explorador de Soluções, em seguida, Publicar no menu Compilar.
  2. Escolha a sua subscrição.
  3. Na caixa de diálogo Definições de Publicação do Microsoft Azure , selecione Criar Novo....
  4. Na caixa de diálogo Criar Serviço Cloud e Conta de Armazenamento , introduza um Nome (por exemplo, "WadExample") e selecione uma região ou grupo de afinidades.
  5. Defina o Ambiente como Teste.
  6. Modifique quaisquer outras Definições conforme adequado e clique em Publicar.
  7. Após a conclusão da implementação, verifique no portal do Azure se o serviço cloud está num estado Em execução.

Passo 4: Criar o ficheiro de configuração de Diagnóstico e instalar a extensão

  1. Transfira a definição de esquema do ficheiro de configuração pública ao executar o seguinte comando do PowerShell:

    (Get-AzureServiceAvailableExtension -ExtensionName 'PaaSDiagnostics' -ProviderNamespace 'Microsoft.Azure.Diagnostics').PublicConfigurationSchema | Out-File -Encoding utf8 -FilePath 'WadConfig.xsd'
    
  2. Adicione um ficheiro XML ao projeto WorkerRole1 ao clicar com o botão direito do rato no projeto WorkerRole1 e selecione Adicionar ->Novo Item... ->Itens do Visual C# ->Data ->XML File. Dê ao ficheiro o nome "WadExample.xml".

    CloudServices_diag_add_xml

  3. Associe o WadConfig.xsd ao ficheiro de configuração. Certifique-se de que a janela WadExample.xml editor é a janela ativa. Prima F4 para abrir a janela Propriedades . Clique na propriedade Esquemas na janela Propriedades . Clique no ... na propriedade Esquemas . Clique no botão Adicionar... e navegue para a localização onde guardou o ficheiro XSD e selecione o ficheiro WadConfig.xsd. Clique em OK.

  4. Substitua o conteúdo do ficheiro de configuração WadExample.xml pelo seguinte XML e guarde o ficheiro. Este ficheiro de configuração define alguns contadores de desempenho a recolher: 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>

Passo 5: Instalar o Diagnóstico na Função de Trabalho

Os cmdlets do PowerShell para gerir Diagnósticos numa função web ou de trabalho são: Set-AzureServiceDiagnosticsExtension, Get-AzureServiceDiagnosticsExtension e Remove-AzureServiceDiagnosticsExtension.

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

Passo 6: ver os seus dados telemétricos

No Explorador do Visual Studio Server, navegue para a conta de armazenamento wadexample. Após a execução do serviço cloud de cerca de cinco (5) minutos, deverá ver as tabelas WADEnumsTable, WADHighFreqTable, WADMessageTable, WADPerformanceCountersTable e WADSetOtherTable. Faça duplo clique numa das tabelas para ver a telemetria que foi recolhida.

CloudServices_diag_tables

Esquema de Ficheiro de Configuração

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

Resolução de problemas

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

Passos Seguintes

Veja uma lista de artigos de diagnóstico relacionados da máquina virtual do Azure para alterar os dados que está a recolher, resolver problemas ou saber mais sobre os diagnósticos em geral.