Resolução de problemas do Diagnóstico do Azure

Este artigo descreve as informações de resolução de problemas relevantes para a utilização de Diagnóstico do Azure. Para obter mais informações sobre Diagnósticos, veja descrição geral do Diagnóstico do Azure.

Componentes lógicos

Os componentes são:

  • Iniciador de Plug-in de Diagnóstico (DiagnosticsPluginLauncher.exe): inicia a extensão diagnóstico. Funciona como o processo de ponto de entrada.
  • Plug-in de Diagnóstico (DiagnosticsPlugin.exe): configura, inicia e gere a duração do agente de monitorização. É o processo principal que é iniciado pelo iniciador.
  • Agente de Monitorização (MonAgent*.exe processos): monitoriza, recolhe e transfere os dados de diagnóstico.

Caminhos de registo/artefacto

Os seguintes caminhos levam a alguns registos e artefactos importantes. Referimo-nos a estas informações ao longo deste artigo.

Cloud Services do Azure

Artefacto Caminho
Diagnóstico do Azure ficheiro de configuração %SystemDrive%\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics<version>\Config.txt
Ficheiros de registo C:\Logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics<version>\
Arquivo local para dados de diagnóstico C:\Resources\Directory<CloudServiceDeploymentID>.< RoleName>. DiagnosticStore\WAD0107\Tables
Ficheiro de configuração do agente de monitorização C:\Resources\Directory<CloudServiceDeploymentID>.< RoleName>.DiagnosticStore\WAD0107\Configuration\MaConfig.xml
Diagnóstico do Azure pacote de extensão %SystemDrive%\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics<version>
Caminho do utilitário de recolha de registos %SystemDrive%\Packages\GuestAgent\
Ficheiro de registo do MonAgentHost C:\Resources\Directory<CloudServiceDeploymentID>.< RoleName>. DiagnosticStore\WAD0107\Configuration\MonAgentHost.<>seq_num.log

Máquinas virtuais

Artefacto Caminho
Diagnóstico do Azure ficheiro de configuração C:\Packages\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<version>\RuntimeSettings
Ficheiros de registo C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics DiagnosticsVersion<>\
Arquivo local para dados de diagnóstico C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics DiagnosticsVersion<>\WAD0107\Tables
Ficheiro de configuração do agente de monitorização C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics DiagnosticsVersion<>\WAD0107\Configuration\MaConfig.xml
Ficheiro de estado C:\Packages\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<version>\Status
Diagnóstico do Azure pacote de extensão C:\Packages\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics DiagnosticsVersion<>
Caminho do utilitário de recolha de registos C:\WindowsAzure\Logs\WaAppAgent.log
Ficheiro de registo do MonAgentHost C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics DiagnosticsVersion<>\WAD0107\Configuration\MonAgentHost.<>seq_num.log

Os dados métricos não aparecem no portal do Azure

O diagnóstico fornece dados de métricas que podem ser apresentados no portal do Azure. Se tiver problemas ao ver os dados no portal, verifique a WADMetrics\* tabela na conta de Armazenamento de diagnósticos para ver se existem registos de métricas correspondentes e certifique-se de que o fornecedor de recursos Microsoft.Insights está registado.

Aqui, a PartitionKey tabela é o ID de recurso, a máquina virtual ou o conjunto de dimensionamento de máquinas virtuais. RowKey é o nome da métrica. Também é conhecido como o nome do contador de desempenho.

Se o ID do recurso estiver incorreto, verifique oResourceId dasMétricas> de Configuração> de Diagnóstico para ver se o ID do recurso está definido corretamente.

Se não existirem dados para a métrica específica, verifiquePerformanceCounter da Configuração> do Diagnóstico para ver se a métrica (contador de desempenho) está incluída. Ativamos os seguintes contadores por predefinição:

  • \Processor(_Total)% Tempo do Processador
  • \Memory\Available Bytes
  • \ASP.NET Aplicações(Total)\Pedidos/Seg
  • \ASP.NET Aplicações(Total)\Total de Erros/Seg
  • \ASP.NET\Pedidos em Fila
  • \ASP.NET\Pedidos Rejeitados
  • \Processor(w3wp)% Tempo do Processador
  • \Process(w3wp)\Private Bytes
  • \Process(WaIISHost)% Tempo do Processador
  • \Process(WaIISHost)\Bytes Privados
  • \Process(WaWorkerHost)% Tempo do Processador
  • \Process(WaWorkerHost)\Bytes Privados
  • \Memória\Falhas de Página/seg
  • .NET CLR Memory(Global)% Time in GC
  • \LogicalDisk(C:)\Bytes de Escrita do Disco/seg
  • \LogicalDisk(C:)\Bytes de Leitura do Disco/seg
  • \LogicalDisk(D:)\Bytes de Escrita do Disco/seg
  • \LogicalDisk(D:)\Bytes de Leitura do Disco/seg

Se a configuração estiver definida corretamente, mas ainda não conseguir ver os dados das métricas, utilize as seguintes diretrizes para o ajudar a resolver problemas.

Diagnóstico do Azure não inicia

Para obter informações sobre o motivo pelo qual o Diagnóstico não foi iniciado, consulte os ficheiros DiagnosticsPluginLauncher.log e DiagnosticsPlugin.log na localização dos ficheiros de registo que foi fornecida anteriormente.

Se estes registos indicarem Monitoring Agent not reporting success after launch, significa que ocorreu uma falha ao iniciar MonAgentHost.exe. Observe os registos na localização indicada para o MonAgentHost ficheiro de registo na secção anterior "Máquinas virtuais".

A última linha dos ficheiros de registo contém o código de saída.

DiagnosticsPluginLauncher.exe Information: 0 : [4/16/2016 6:24:15 AM] DiagnosticPlugin exited with code 0

Se encontrar um código de saída negativo , consulte a tabela de código de saída na secção Referências.

Os dados de diagnóstico não são registados no Armazenamento do Azure

Determine se nenhum dos dados aparece ou se alguns dos dados são apresentados.

Registos da infraestrutura de diagnóstico

O diagnóstico regista todos os erros nos registos da infraestrutura de Diagnóstico. Certifique-se de que ativou a captura de registos da infraestrutura de Diagnósticos na configuração. Em seguida, pode procurar rapidamente quaisquer erros relevantes que apareçam na DiagnosticInfrastructureLogsTable tabela na sua conta de armazenamento configurada.

Não são apresentados dados

A razão mais comum para os dados de eventos não aparecerem é que as informações da conta de armazenamento são definidas incorretamente.

Solução: Corrija a configuração do Diagnóstico e reinstale o Diagnóstico.

Se a conta de armazenamento estiver configurada corretamente, aceda remotamente ao computador e verifique se DiagnosticsPlugin.exe e MonAgentCore.exe estão em execução. Se não estiverem em execução, siga os passos em Diagnóstico do Azure não é iniciado.

Se os processos estiverem em execução, aceda a Os dados estão a ser capturados localmente? e siga as instruções apresentadas.

Se ainda existir um problema, tente:

  1. Desinstale o agente.
  2. Remova o diretório C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics.
  3. Instale o agente novamente.

Parte dos dados está em falta

Se estiver a obter alguns dados, mas não todos, significa que o pipeline de recolha/transferência de dados está definido corretamente. Siga as subsecções aqui para restringir o problema.

A coleção está configurada?

A configuração de Diagnóstico contém instruções para que um determinado tipo de dados seja recolhido. Reveja a configuração para verificar se está apenas à procura de dados que configurou para a coleção.

O anfitrião está a gerar dados?

  • Contadores de desempenho: abra perfmon e verifique o contador.
  • Registos de rastreio: acesso remoto à VM e adicionar um TextWriterTraceListener ao ficheiro de configuração da aplicação. Para configurar o serviço de escuta de texto, consulte Criar e inicializar serviços de escuta de rastreio. Certifique-se de que o <trace> elemento tem <trace autoflush="true">. Se não vir registos de rastreio a serem gerados, consulte a secção "Mais informações sobre registos de rastreio em falta".
  • Rastreios de Rastreio de Eventos para Windows (ETW): acesso remoto à VM e instalação da ferramenta PerfView. No PerfView, execute Comandode Utilizador de Ficheiros>>Escutar etwprovder1>etwprovider2, etc. O comando Ouvir é sensível a maiúsculas e minúsculas e não podem existir espaços entre a lista separada por vírgulas de fornecedores etw. Se o comando não for executado, selecione Registar na parte inferior direita da ferramenta PerfView para ver o que tentou executar e qual foi o resultado. Partindo do princípio de que a entrada está correta, é aberta uma nova janela. Dentro de alguns segundos, verá rastreios ETW.
  • Registos de eventos: acesso remoto à VM. Abra Visualizador de Eventos e certifique-se de que os eventos existem.

Os dados estão a ser capturados localmente?

Em seguida, certifique-se de que os dados estão a ser capturados localmente. Os dados são armazenados localmente em ficheiros *.tsf no arquivo local para dados de diagnóstico. Os diferentes tipos de registos são recolhidos em ficheiros .tsf diferentes. Os nomes são semelhantes aos nomes das tabelas no Armazenamento do Azure.

Por exemplo, os contadores de desempenho são recolhidos em PerformanceCountersTable.tsf. Os registos de eventos são recolhidos em WindowsEventLogsTable.tsf. Utilize as instruções na secção Extração de registos locais para abrir os ficheiros da coleção local e verificar se os vê a serem recolhidos no disco.

Se não vir registos a serem recolhidos localmente e já tiver verificado que o anfitrião está a gerar dados, é provável que tenha um problema de configuração. Reveja cuidadosamente a configuração.

Além disso, reveja a configuração que foi gerada para MonitoringAgent MaConfig.xml. Verifique se existe uma secção que descreve a origem de registo relevante. Em seguida, verifique se não se perde na tradução entre a configuração do Diagnóstico e a configuração do agente de monitorização.

Os dados estão a ser transferidos?

Se tiver verificado que os dados estão a ser capturados localmente, mas ainda não os vê na sua conta de armazenamento, siga estes passos:

  • Verifique se forneceu uma conta de armazenamento correta e se ainda não implementou as chaves para a conta de armazenamento especificada. Para o Azure Serviços Cloud, por vezes os utilizadores não atualizam useDevelopmentStorage=true.
  • Verifique se a conta de armazenamento fornecida está correta. Certifique-se de que não tem restrições de rede que impeçam que os componentes cheguem aos pontos finais de armazenamento público. Uma forma de o fazer é ao aceder remotamente ao computador e tentar escrever algo na mesma conta de armazenamento.
  • Por fim, pode ver que falhas estão a ser comunicadas pelo agente de monitorização. O agente de monitorização escreve os registos em maeventtable.tsf, que está localizado no arquivo local para dados de diagnóstico. Siga as instruções na secção Extração de registos locais para abrir este ficheiro. Em seguida, tente determinar se existem errors falhas na leitura de ficheiros locais escritos no armazenamento.

Capturar e arquivar registos

Se estiver a pensar em contactar o suporte, a primeira coisa que lhe podem pedir é que recolha registos do seu computador. Pode poupar tempo fazendo isso sozinho. Execute o CollectGuestLogs.exe utilitário no caminho do utilitário Coleção de registos. Gera um ficheiro .zip com todos os registos do Azure relevantes na mesma pasta.

Tabelas de dados de diagnóstico não encontradas

As tabelas no Armazenamento do Azure que contêm eventos ETW são nomeadas com o seguinte código:

        if (String.IsNullOrEmpty(eventDestination)) {
            if (e == "DefaultEvents")
                tableName = "WADDefault" + MD5(provider);
            else
                tableName = "WADEvent" + MD5(provider) + eventId;
        }
        else
            tableName = "WAD" + eventDestination;

Eis um exemplo:

        <EtwEventSourceProviderConfiguration provider="prov1">
          <Event id="1" />
          <Event id="2" eventDestination="dest1" />
          <DefaultEvents />
        </EtwEventSourceProviderConfiguration>
        <EtwEventSourceProviderConfiguration provider="prov2">
          <DefaultEvents eventDestination="dest2" />
        </EtwEventSourceProviderConfiguration>
"EtwEventSourceProviderConfiguration": [
    {
        "provider": "prov1",
        "Event": [
            {
                "id": 1
            },
            {
                "id": 2,
                "eventDestination": "dest1"
            }
        ],
        "DefaultEvents": {
            "eventDestination": "DefaultEventDestination",
            "sinks": ""
        }
    },
    {
        "provider": "prov2",
        "DefaultEvents": {
            "eventDestination": "dest2"
        }
    }
]

Este código gera quatro tabelas:

Evento Nome da tabela
provider="prov1" <ID do evento="1" /> WADEvent+MD5("prov1")+"1"
provider="prov1" <Event id="2" eventDestination="dest1" /> WADdest1
provider="prov1" <DefaultEvents /> WADDefault+MD5("prov1")
provider="prov2" <DefaultEvents eventDestination="dest2" /> WADdest2

Referências

Veja as seguintes referências

Verificar a configuração da extensão de Diagnóstico

A forma mais fácil de verificar a configuração da extensão é aceder ao Explorador de Recursos do Azure. Em seguida, aceda à máquina virtual ou serviço cloud onde está a extensão de Diagnóstico (IaaSDiagnostics/PaaDiagnostics).

Em alternativa, aceda ao ambiente de trabalho remoto no computador e observe o ficheiro de configuração diagnósticos descrito na secção Caminho dos artefactos de registo.

Em ambos os casos, procure Microsoft.Azure.Diagnostics e o campo xmlCfg ou WadCfg .

Se estiver a procurar numa máquina virtual e o campo WadCfg estiver presente, significa que a configuração está no formato JSON. Se o campo xmlCfg estiver presente, significa que a configuração está em XML e está codificada em base64. Tem de o descodificar para ver o XML que foi carregado pelo Diagnóstico.

Para a função de serviço cloud, se escolher a configuração do disco, os dados são codificados em base64. Terá de descodificá-lo para ver o XML que foi carregado pelo Diagnóstico.

Diagnóstico do Azure códigos de saída do plug-in

O plug-in devolve os seguintes códigos de saída:

Código de saída Descrição
0 Com êxito.
-1 Erro genérico.
-2 Não é possível carregar o ficheiro rcf.

Este erro interno só deverá ocorrer se o iniciador de plug-in do agente convidado for invocado manualmente incorretamente na VM.

-3 Não é possível carregar o ficheiro de configuração diagnóstico.

Solução: causada por um ficheiro de configuração que não transmite a validação do esquema. A solução é fornecer um ficheiro de configuração que esteja em conformidade com o esquema.

-4 Outra instância do agente de monitorização Diagnóstico já está a utilizar o diretório de recursos local.

Solução: especifique um valor diferente para LocalResourceDirectory.

-6 O iniciador de plug-ins do agente convidado tentou iniciar o Diagnóstico com uma linha de comandos inválida.

Este erro interno só deverá ocorrer se o iniciador de plug-in do agente convidado for invocado manualmente incorretamente na VM.

-10 O plug-in Diagnóstico foi fechado com uma exceção não processada.
-11 O agente convidado não conseguiu criar o processo responsável por iniciar e monitorizar o agente de monitorização.

Solução: verifique se existem recursos de sistema suficientes disponíveis para iniciar novos processos.

-101 Argumentos inválidos ao chamar o plug-in Diagnóstico.

Este erro interno só deverá ocorrer se o iniciador de plug-in do agente convidado for invocado manualmente incorretamente na VM.

-102 O processo de plug-in não consegue inicializar-se a si próprio.

Solução: verifique se existem recursos de sistema suficientes disponíveis para iniciar novos processos.

-103 O processo de plug-in não consegue inicializar-se a si próprio. Especificamente, não é possível criar o objeto logger.

Solução: verifique se existem recursos de sistema suficientes disponíveis para iniciar novos processos.

-104 Não é possível carregar o ficheiro rcf fornecido pelo agente convidado.

Este erro interno só deverá ocorrer se o iniciador de plug-in do agente convidado for invocado manualmente incorretamente na VM.

-105 O plug-in Diagnóstico não consegue abrir o ficheiro de configuração diagnóstico.

Este erro interno só deverá ocorrer se o plug-in Diagnóstico for invocado manualmente incorretamente na VM.

-106 Não é possível ler o ficheiro de configuração diagnóstico.

Causado por um ficheiro de configuração que não transmite a validação do esquema.

Solução: forneça um ficheiro de configuração que esteja em conformidade com o esquema. Para obter mais informações, veja Verificar a configuração da extensão de Diagnóstico.

-107 A passagem do diretório de recursos para o agente de monitorização é inválida.

Este erro interno só deverá ocorrer se o agente de monitorização for invocado manualmente incorretamente na VM.

-108 Não é possível converter o ficheiro de configuração de Diagnóstico no ficheiro de configuração do agente de monitorização.

Este erro interno só deverá ocorrer se o plug-in diagnóstico for invocado manualmente com um ficheiro de configuração inválido.

-110 Erro de configuração do Diagnóstico Geral.

Este erro interno só deverá ocorrer se o plug-in diagnóstico for invocado manualmente com um ficheiro de configuração inválido.

-111 Não é possível iniciar o agente de monitorização.

Solução: verifique se existem recursos de sistema suficientes disponíveis.

-112 Erro geral.

Extração de registos locais

O agente de monitorização recolhe registos e artefactos como .tsf ficheiros. O .tsf ficheiro não é legível, mas pode convertê-lo da .csv seguinte forma:

<Azure diagnostics extension package>\Monitor\x64\table2csv.exe <relevantLogFile>.tsf

Um novo ficheiro chamado <relevantLogFile>.csv é criado no mesmo caminho que o ficheiro correspondente .tsf .

Nota

Só precisa de executar este utilitário no ficheiro principal .tsf (por exemplo, PerformanceCountersTable.tsf). Os ficheiros que o acompanham (por exemplo, PerformanceCountersTables_\*\*001.tsf, PerformanceCountersTables_\*\*002.tsf) são processados automaticamente.

Mais informações sobre registos de rastreio em falta

Nota

As seguintes informações aplicam-se principalmente ao Azure Serviços Cloud, a menos que tenha configurado a numa aplicação DiagnosticsMonitorTraceListener em execução na sua VM de infraestrutura como serviço (IaaS).

  • Certifique-se de que DiagnosticMonitorTraceListener está configurado no web.config ou app.config. Está configurado por predefinição em projetos de serviço cloud. No entanto, alguns clientes comentam-no, o que faz com que as instruções de rastreio não sejam recolhidas pelo Diagnóstico.
  • Se os registos não estiverem a ser escritos a partir do método OnStart ou Run , certifique-se de que DiagnosticMonitorTraceListener está no app.config. Por predefinição, está no web.config, mas isso aplica-se apenas ao código em execução no w3wp.exe. Por isso, precisa dele no app.config para capturar os rastreios que estão a ser executados no WaIISHost.exe.
  • Certifique-se de que está a utilizar Diagnostics.Trace.TraceXXX em vez de Diagnostics.Debug.WriteXXX. As instruções de Depuração são removidas de uma compilação de versão.
  • Certifique-se de que o código compilado tem as linhas Diagnostics.Trace. Utilize Reflector, ildasm ou ILSpy para verificar. Os comandos Diagnostics.Trace são removidos do binário compilado, a menos que utilize o símbolo de compilação condicional TRACE. Este problema comum ocorre quando está a utilizar o MSBuild para criar um projeto.

Problemas conhecidos e mitigações

Os seguintes problemas conhecidos têm mitigações.

Dependência .NET 4.5

A extensão Diagnóstico do Azure para Windows tem uma dependência de runtime no .NET Framework 4.5 ou posterior. No momento da escrita, todos os computadores aprovisionados para o Azure Serviços Cloud e todas as imagens oficiais baseadas em VMs do Azure têm o .NET 4.5 ou posterior instalado.

Ainda é possível encontrar uma situação em que tenta executar a extensão Diagnóstico do Azure para Windows num computador que não tenha o .NET 4.5 ou posterior. Esta situação ocorre quando cria o computador a partir de uma imagem ou instantâneo antigo ou quando traz o seu próprio disco personalizado.

Geralmente, este problema manifesta-se como um código de saída 255 quando executa DiagnosticsPluginLauncher.exe. A falha ocorre devido à seguinte exceção não processada:

System.IO.FileLoadException: Could not load file or assembly 'System.Threading.Tasks, Version=1.5.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies

Mitigação: Instale o .NET 4.5 ou posterior no seu computador.

Os dados dos contadores de desempenho estão disponíveis no armazenamento, mas não são apresentados no portal

A experiência do portal nas VMs mostra determinados contadores de desempenho por predefinição. Se não vir os contadores de desempenho e souber que os dados estão a ser gerados porque estão disponíveis no armazenamento, certifique-se de que verifica:

  • Se os dados no armazenamento têm nomes de contadores em inglês. Se os nomes dos contadores não estiverem em inglês, o gráfico de métricas do portal não o reconhecerá.

    • Mitigação: altere o idioma do computador para inglês para contas de sistema. Para tal, selecione Painel de Controlo>Definições> de CópiaAdministrativa>. Em seguida, limpe o ecrã de boas-vindas e as contas do sistema para que o idioma personalizado não seja aplicado à conta do sistema.
  • Se estiver a utilizar carateres universais (*) nos nomes dos contadores de desempenho, o portal não consegue correlacionar o contador configurado e recolhido quando os contadores de desempenho são enviados para o sink do Armazenamento do Azure.

    • Mitigação: para se certificar de que pode utilizar carateres universais e fazer com que o portal expanda o (*), encaminhe os contadores de desempenho para o sink do Azure Monitor.