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

Este artigo descreve informações de resolução de problemas que são relevantes para o uso de Diagnóstico do Azure. Para obter mais informações sobre os diagnósticos Azure, consulte Diagnóstico do Azure visão geral.

Componentes lógicos

Diagnostics Plugin Launcher (DiagnosticsPluginLauncher.exe): Lança a extensão Diagnóstico do Azure. Serve como o processo de ponto de entrada.

Diagnósticos Plugin (DiagnosticsPlugin.exe): Configura, lança e gere a vida útil do agente de monitorização. É o principal processo que é lançado pelo lançador.

Monitoring Agent (MonAgent*.exe processos): Monitores, recolhes e transfere os dados de diagnóstico.

Caminhos de log/artefacto

Seguem-se os caminhos para alguns importantes troncos e artefactos. Referimo-nos a esta informação ao longo do resto do documento.

Cloud Services do Azure

Artefacto Caminho
Diagnóstico do Azure ficheiro de configuração %SystemDrive%\Pacotes\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnosticsversion<>\Config.txt
Registar ficheiros C:\Logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnosticsversion<>\
Loja local para dados de diagnóstico C:\Resources\DirectoryCloudServiceDeploymentID<>.< Nome de papel>. Loja de Diagnóstico\WAD0107\Tabelas
Ficheiro de configuração do agente de monitorização C:\Resources\DirectoryCloudServiceDeploymentID<>.< RoleName>.DiagnosticStore\WAD0107\Configuration\MaConfig.xml
pacote de extensão Diagnóstico do Azure %SystemDrive%\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnosticsversion<>
Caminho de utilidade de recolha de registos %SystemDrive%\Packages\GuestAgent\
Ficheiro de log monAgentHost C:\Resources\DirectoryCloudServiceDeploymentID<>.< Nome de papel>. Loja de Diagnóstico\WAD0107\Configuração\MonagentHost.<>seq_num.log

Máquinas virtuais

Artefacto Caminho
Diagnóstico do Azure ficheiro de configuração C:\Pacotes\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnosticsversion<>\RuntimeSettings
Registar ficheiros C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnosticsDiagnosticsDiagnosticsVersion<>\
Loja local para dados de diagnóstico C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnosticsDiagnosticsVersion<>\WAD0107\Tables
Ficheiro de configuração do agente de monitorização C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnosticsDiagnosticsVersion<>\WAD0107\Configuration\MaConfig.xml
Ficheiro de estado C:\Pacotes\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnosticsversion<>\Status\Status
pacote de extensão Diagnóstico do Azure C:\Pacotes\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnosticsDiagnosticsDiagnosticsVersion<>
Caminho de utilidade de recolha de registos C:\WindowsAzure\Logs\WaAppAgent.log
Ficheiro de log monAgentHost C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnosticsDiagnosticsVersion<>\WAD0107\Configuration\MonAgentHost.<>seq_num.log

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

Diagnóstico do Azure fornece dados métricos que podem ser exibidos no portal do Azure. Se tiver problemas em ver os dados em portal, verifique a tabela WADMetrics* na conta de armazenamento Diagnóstico do Azure para ver se existem registos métricos correspondentes e certifique-se de que o fornecedor de recursos Microsoft.Informações está registado.

Aqui, a PartitionKey da tabela é o ID de recursos, máquina virtual ou conjunto de escala de máquina virtual. RowKey é o nome métrico (também conhecido como o nome do contador de desempenho).

Se o ID do recurso estiver incorreto, verifique DiagnósticosConfigurationMetricsResourceId>> para ver se o ID do recurso está corretamente definido.

Se não houver dados para a métrica específica, verifique o DiagnosticsConfigurationPerformanceCounter> para ver se a métrica (contador de desempenho) está incluída. Ativamos os seguintes contadores por defeito:

  • \Tempo do processador (_Total)%
  • \Memory\Available Bytes
  • \ASP.NET Candidaturas (Total)\Pedidos/Sec
  • \ASP.NET Aplicações (Total)\Erros Total/Seg
  • \ASP.NET\Pedidos em fila
  • \ASP.NET\Pedidos rejeitados
  • \Tempo do processador(w3wp)%
  • \Processo(w3wp)\Bytes privados
  • \Processo (WaIISHost)% Tempo do processador
  • \Processo(WaIISHost)\Bytes privados
  • \Processo (WaWorkerHost)% Tempo de processador
  • \Processo(WaWorkerHost)\Bytes privados
  • \Memória\Falhas de página/seg
  • .NET CLR Memory(Global)% Tempo em GC
  • \LogicalDisk(C:)\Disk Write Bytes/sec
  • \LogicalDisk(C:)\Disk Read Bytes/sec
  • \LogicalDisk(D:)\Disk Write Bytes/sec
  • \LogicalDisk(D:)\Disk Read Bytes/sec

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

O Diagnóstico do Azure não está a iniciar

Para obter informações sobre o motivo pelo qual Diagnóstico do Azure não começar, consulte os ficheiros DiagnosticsPluginLauncher.log e DiagnosticsPlugin.log ficheiros no local dos ficheiros de registo que foram fornecidos anteriormente.

Se estes registos indicarem Monitoring Agent not reporting success after launch, significa que houve uma falha no lançamento MonAgentHost.exe. Veja os registos no local indicado MonAgentHost log file na secção anterior.

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ódigos de saída na secção Referências.

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

Determine se nenhum dos dados está a aparecer ou se alguns dos dados estão a aparecer.

Registos de infraestruturas de diagnóstico

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

Não aparecem dados

A razão mais comum para que os dados do evento não apareçam é que a informação da conta de armazenamento é definida incorretamente.

Solução: Corrija a configuração de Diagnóstico e reinstale diagnósticos.

Se a conta de armazenamento estiver configurada corretamente, o acesso remoto à máquina e verifique se DiagnosticsPlugin.exe e MonAgentCore.exe estão a funcionar. Se não estiverem a correr, siga os passos em Diagnóstico do Azure não está a começar.

Se os processos estiverem a decorrer, vá ao Is que está a ser capturado localmente?

Se isto não resolver o problema, tente:

  1. Desinstalar o agente
  2. Remover diretório C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics
  3. Volte a instalar o agente

Falta parte dos dados.

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 reduzir a questão.

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 sua configuração para verificar se está apenas à procura de dados que configura para a recolha.

O hospedeiro está a gerar dados?

  • Contadores de desempenho: Abra o perfmon e verifique o balcão.

  • Registos de rastreios: Acesso remoto ao VM e adicionar um TextWriterTraceListener ao ficheiro config da aplicação. Veja https://msdn.microsoft.com/library/sk36c28t.aspx a configuração do ouvinte de texto. Certifique-se de que o <trace> elemento tem <trace autoflush="true">.
    Se não vir vestígios de registos a serem gerados, consulte mais sobre registos de vestígios em falta.

  • Vestígios da ETW: Acesso remoto ao VM e instalação perfView. Em PerfView, executar FileUser> CommandListen >etwprovder1etwprovider2>, e assim por diante. O comando Listen é sensível a casos, e não pode haver espaços entre a lista separada por vírgula de fornecedores ETW. Se o comando não funcionar, pode selecionar o botão Registar no canto inferior direito da ferramenta Perfview para ver o que tentou executar e qual foi o resultado. Assumindo que a entrada está correta, aparece uma nova janela. Em poucos segundos, começas a ver vestígios da ETW.

  • Registos de eventos: Acesso remoto ao VM. Abra Event Viewer, e depois 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 *.tsf ficheiros na loja local para dados de diagnóstico. Diferentes tipos de registos são recolhidos em diferentes .tsf ficheiros. Os nomes são semelhantes aos nomes de mesa em Azure Armazenamento.

Por exemplo, Performance Counters recolha-se em PerformanceCountersTable.tsf. Os registos de eventos são recolhidos em WindowsEventLogsTable.tsf. Utilize as instruções na secção local de extração de registos para abrir os ficheiros de recolha 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 sua configuração.

Reveja também a configuração gerada para monitoraragente MaConfig.xml. Verifique se existe uma secção que descreve a fonte de registo relevante. Verifique então se não se perde na tradução entre a configuração de Diagnóstico e a configuração do agente de monitorização.

Os dados estão a ser transferidos?

Se verificou que os dados estão a ser capturados localmente, mas ainda não os vê na sua conta de armazenamento, tome os seguintes passos:

  • Verifique se forneceu uma conta de armazenamento correta e que não rolou as chaves para a conta de armazenamento dada. Para Azure Serviços Cloud, às vezes vemos que as pessoas não atualizamuseDevelopmentStorage=true.

  • Verifique se a conta de armazenamento fornecida está correta. Certifique-se de que não tem restrições de rede que impeçam os componentes de chegar aos pontos finais de armazenamento público. Uma maneira de fazer isso é aceder remotamente à máquina, e depois tentar escrever algo para a mesma conta de armazenamento.

  • Finalmente, pode ver que falhas estão a ser reportadas pelo agente de monitorização. O agente de monitorização escreve os seus logins maeventtable.tsf, que está localizado na loja local para dados de diagnóstico. Siga as instruções na secção local de extração de registos para a abertura deste ficheiro. Em seguida, tente determinar se existem errors falhas de leitura para ficheiros locais que escrevem para armazenamento.

Captação e arquivo de troncos

Se estiver a pensar em contactar o suporte, a primeira coisa que lhe podem pedir é que recolha registos da sua máquina. Podes poupar tempo fazendo isso sozinho. Executar o CollectGuestLogs.exe utilitário no caminho de utilidade de recolha de log. Gera um ficheiro .zip com todos os registos Azure relevantes na mesma pasta.

Tabelas de dados de diagnóstico não encontradas

As tabelas de armazenamento Azure que detêm eventos ETW são nomeadas utilizando 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;

Segue-se 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
fornecedor="prov1" <Evento id="1" /> WADEvent+MD5 ("prov1")+"1"
fornecedor="prov1" <Evento id="2" eventDestination="dest1" /> WADdest1
fornecedor="prov1" <DefaultEvents /> WADDefault+MD5 ("prov1")
fornecedor="prov2" <DefaultEvents eventDestination="dest2" /> WADdest2

Referências

Como verificar a configuração da extensão de Diagnóstico

A maneira mais fácil de verificar a configuração da extensão é ir ao Azure Resource Explorer e, em seguida, ir para o serviço de máquina virtual ou cloud onde é a extensão Diagnóstico do Azure (IaaSDiagnostics / PaaDiagnostics).

Em alternativa, o ambiente de trabalho remoto na máquina e olhamos para o ficheiro de configuração Diagnóstico do Azure descrito na secção de trajetória de artefactos de registo.

Em qualquer dos casos, procure por Microsoft.Azure.Diagnostics e, em seguida, para o campo xmlCfg ou WadCfg .

Se estiver a pesquisar numa máquina virtual e o campo WadCfg estiver presente, significa que o config está no formato JSON. Se o campo xmlCfg estiver presente, significa que o config está em XML e está codificado com base64. É preciso descodificá-lo para ver o XML que foi carregado por Diagnósticos.

Para a função de serviço de nuvem, se escolher a configuração do disco, os dados estão codificados com base64, pelo que é necessário descodificá-lo para ver o XML que foi carregado por Diagnósticos.

Diagnóstico do Azure códigos de saída plugin

O plugin devolve os seguintes códigos de saída:

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

Este erro interno só deve ocorrer se o lançador de plugin do agente convidado for invocado manualmente incorretamente no VM.

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

Solução: Causada por um ficheiro de configuração que não passa na validação do esquema. A solução é fornecer um ficheiro de configuração que cumpra o esquema.

-4 Outro caso do agente de monitorização Diagnostics já está a utilizar o diretório de recursos local.

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

-6 O lançador de plugin do agente convidado tentou lançar Diagnósticos com uma linha de comando inválida.

Este erro interno só deve ocorrer se o lançador de plugin do agente convidado for invocado manualmente incorretamente no VM.

-10 O plugin de Diagnóstico sai com uma exceção não manipulada.
-11 O agente convidado não foi capaz de criar o processo responsável pelo lançamento e monitorização do agente de monitorização.

Solução: Verifique se existem recursos suficientes do sistema para lançar novos processos.

-101 Argumentos inválidos ao chamar o plugin de Diagnóstico.

Este erro interno só deve ocorrer se o lançador de plugin do agente convidado for invocado manualmente incorretamente no VM.

-102 O processo plugin é incapaz de se inicializar.

Solução: Verifique se existem recursos suficientes do sistema para lançar novos processos.

-103 O processo plugin é incapaz de se inicializar. Especificamente, é incapaz de criar o objeto do madeireiro.

Solução: Verifique se existem recursos suficientes do sistema para lançar novos processos.

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

Este erro interno só deve ocorrer se o lançador de plugin do agente convidado for invocado manualmente incorretamente no VM.

-105 O plugin de Diagnóstico não pode abrir o ficheiro de configuração de Diagnóstico.

Este erro interno só deverá ocorrer se o plugin de Diagnóstico for invocado manualmente incorretamente no VM.

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

Causado por um ficheiro de configuração que não passa na validação do esquema.

Solução: Forneça um ficheiro de configuração que cumpra o esquema. Para obter mais informações, consulte Como verificar a configuração da extensão de diagnóstico.

-107 O bilhete de utilização para o agente de monitorização é inválido.

Este erro interno só deve ocorrer se o agente de monitorização for invocado manualmente incorretamente no 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 plugin de Diagnóstico for invocado manualmente com um ficheiro de configuração inválido.

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

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

-111 Incapaz de ligar o agente de monitorização.

Solução: Verifique se existem recursos suficientes do sistema.

-112 Erro geral

Extração de registo local

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

<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

Basta executar este utilitário com o ficheiro principal .tsf (por exemplo, PerformanceCountersTable.tsf). Os ficheiros que acompanham (por exemplo, PerformanceCountersTables_**001.tsf, PerformanceCountersTables_**002.tsf, e assim por diante) são processados automaticamente.

Mais sobre registos de vestígios em falta

Nota

As seguintes informações aplicam-se principalmente ao Azure Serviços Cloud a menos que tenha configurado o DiagnosticsMonitorTraceListener numa aplicação que está a ser executada no seu IaaS VM.

  • Certifique-se de que o DiagnosticMonitorTraceListener está configurado no web.config ou app.config. Isto é configurado por padrão em projetos de serviço em nuvem. No entanto, alguns clientes comentam-no, o que faz com que as declarações de traços não sejam recolhidas através de diagnósticos.

  • Se os registos não estiverem a ser escritos a partir do método OnStart ou Run , certifique-se de que o DiagnosticMonitorTraceListener está na app.config. Por padrão está na web.config, mas isso só se aplica ao código que está a ser aplicado dentro de w3wp.exe. Por isso, precisas dele em app.config para capturar vestígios que estão a correr em WaIISHost.exe.

  • Certifique-se de que está a utilizar Diagnósticos.TraceXXX em vez de Diagnostics.Debug.WriteXXX. As declarações de Debug são removidas de uma construção de libertação.

  • Certifique-se de que o código compilado tem efetivamente as linhas Diagnostics.Trace (utilize refletor, ildasm ou ILSpy para verificar). Os comandos de rastreio.Trace são removidos do binário compilado, a menos que utilize o símbolo de compilação condicional TRACE. Este é um problema comum que ocorre quando se está a usar a msbuild para construir um projeto.

Questões e mitigações conhecidas

Aqui está uma lista de questões conhecidas com mitigações conhecidas:

1. .NET 4.5 dependência

Windows Diagnóstico do Azure Extensão tem uma dependência de tempo de funcionamento no quadro .NET 4.5 ou posterior. No momento da escrita, todas as máquinas que estão previstas para o Azure Serviços Cloud, bem como todas as imagens oficiais baseadas em máquinas virtuais Azure, têm .NET 4.5 ou posteriormente instaladas.

Ainda é possível encontrar uma situação em que se tente executar Windows Diagnóstico do Azure Extensão numa máquina que não tenha .NET 4.5 ou posterior. Isto acontece quando cria a sua máquina a partir de uma imagem ou instantâneo antigo, ou quando traz o seu próprio disco personalizado.

Isto geralmente manifesta-se como um código de saída 255 quando funciona DiagnosticsPluginLauncher.exe. A falha ocorre devido à seguinte exceção não manipulada:

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 .NET 4.5 ou posteriormente na sua máquina.

2. Os dados dos contadores de desempenho estão disponíveis no armazenamento, mas não aparecem no portal

A experiência do portal nas máquinas virtuais mostra determinados contadores de desempenho por padrã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, verifique o seguinte:

  • Se os dados no armazenamento têm nomes de contadores em inglês. Se os nomes de contadores não estiverem em inglês, o gráfico métrico do portal não será capaz de reconhecê-lo. Mitigação: Mude a língua da máquina para inglês para as contas do sistema. Para isso, selecione Painel de Controlo>RegionAdministrativeCopy>>Definições. Em seguida, deseslecte Contas de Welcome screen e sistema para que o idioma personalizado não seja aplicado na conta do sistema.

  • Se estiver a utilizar wildcards (*) nos nomes dos contadores de desempenho, o portal não poderá correlacionar o contador configurado e recolhido quando os contadores de desempenho forem enviados para o Azure Armazenamento pia. Mitigação: Para se certificar de que pode utilizar wildcards e fazer com que o portal expanda o (*), encaminhe os seus contadores de desempenho para a pia do Azure Monitor.