Esquema de extensão de diagnóstico do Windows

A extensão de diagnóstico do Azure é um agente no Azure Monitor que coleta dados de monitoramento do sistema operacional convidado e cargas de trabalho dos recursos de computação do Azure. Este artigo detalha o esquema usado para a configuração da extensão da extensão de diagnóstico em máquinas virtuais Windows e outros recursos de computação.

Observação

O esquema nesta página é válido para as versões 1.3 e mais recentes (SDK 2.4 e mais recente do Azure). As seções de configuração mais recentes são comentadas para mostrar em qual versão eles foram adicionados. A versão 1.0 e 1.2 do esquema foram arquivadas e não estão mais disponíveis.

Esquema do arquivo público de configuração

Baixe a definição do esquema do arquivo de configuração pública ao executar o seguinte comando PowerShell:

(Get-AzureServiceAvailableExtension -ExtensionName 'PaaSDiagnostics' -ProviderNamespace 'Microsoft.Azure.Diagnostics').PublicConfigurationSchema | Out-File –Encoding utf8 -FilePath 'C:\temp\WadConfig.xsd'  

Tipos comuns de atributo

O atributo scheduledTransferPeriod aparece em vários elementos. É o intervalo entre transferências agendadas para armazenamento arredondado para o minuto mais próximo. O valor é um XML "Tipo de Dados de Duração".

Elemento DiagnosticsConfiguration

Árvore: Raiz - DiagnosticsConfiguration

Adicionado na versão 1.3.

O elemento de nível superior do arquivo de configuração de diagnóstico.

Atributo xmlns - O namespace XML para o arquivo de configuração de diagnóstico é:
http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration

Elementos filho Descrição
PublicConfig Obrigatórios. Veja a descrição em outro lugar nesta página.
PrivateConfig Opcional. Veja a descrição em outro lugar nesta página.
IsEnabled Booliano. Veja a descrição em outro lugar nesta página.

Elemento PublicConfig

Árvore: Raiz - DiagnosticsConfiguration - PublicConfig

Descreve a configuração de diagnóstico pública.

Elementos filho Descrição
WadCfg Obrigatórios. Veja a descrição em outro lugar nesta página.
StorageAccount O nome da conta do Armazenamento do Azure para armazenar os dados. Pode ser especificado como um parâmetro ao executar o cmdlet Set-AzureServiceDiagnosticsExtension.
StorageType Pode ser Table, Blob ou TableAndBlob. Tabela é o padrão. Quando TableAndBlob for escolhido, os dados de diagnóstico serão gravados duas vezes, uma vez para cada tipo.
LocalResourceDirectory O diretório na máquina virtual em que o Agente de Monitoramento armazena dados de evento. Caso contrário, o diretório padrão definido será usado:

Para uma função de Trabalho/da Web: C:\Resources\<guid>\directory\<guid>.<RoleName.DiagnosticStore\

Para uma Máquina Virtual: C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\<WADVersion>\WAD<WADVersion>

Os atributos obrigatórios são:

- path - o diretório no sistema a ser usado pelo Diagnóstico do Azure.

- expandEnvironment - controla se as variáveis de ambiente estão expandidas ou não no nome do caminho.

Elemento WadCFG

Árvore: Raiz - DiagnosticsConfiguration - PublicConfig - WadCFG

Identifica e configura os dados de telemetria a serem coletados.

Elemento DiagnosticMonitorConfiguration

Árvore: Raiz - DiagnosticsConfiguration - PublicConfig - WadCFG - DiagnosticMonitorConfiguration

Obrigatório

Atributos Descrição
overallQuotaInMB A quantidade máxima de espaço em disco local que pode ser consumido pelos diversos tipos de dados de diagnóstico coletados pelo Diagnóstico do Azure. A configuração padrão é 4096 MB.
useProxyServer Configure o Diagnóstico do Azure para usar as configurações de servidor proxy como definido nas configurações do IE.
coletores Adicionado em 1.5. Opcional. Aponta para um local do coletor para também enviar dados de diagnóstico para todos os elementos filho que são suporte a coletores. Exemplo de coletor é Application Insights ou Hubs de Eventos. Observe que você precisa adicionar a propriedade resourceid sob o elemento Métricas se quiser que os eventos carregados nos Hubs de Eventos tenham uma ID do recurso.



Elementos filho Descrição
CrashDumps Veja a descrição em outro lugar nesta página.
DiagnosticInfrastructureLogs Habilite a coleta de logs gerados pelo Diagnóstico do Azure. Os logs de infraestrutura de diagnóstico são úteis para solucionar problemas de sistema de diagnóstico. Os atributos opcionais são:

- scheduledTransferLogLevelFilter - configura o nível de severidade mínimo dos logs coletados.

- scheduledTransferPeriod - o intervalo entre transferências agendadas para o Armazenamento do Azure arredondado para o minuto mais próximo. O valor é um XML "Tipo de Dados de Duração".
Diretórios Veja a descrição em outro lugar nesta página.
EtwProviders Veja a descrição em outro lugar nesta página.
Métricas Veja a descrição em outro lugar nesta página.
PerformanceCounters Veja a descrição em outro lugar nesta página.
WindowsEventLog Veja a descrição em outro lugar nesta página.
DockerSources Veja a descrição em outro lugar nesta página.

Elemento CrashDumps

Árvore: Raiz - DiagnosticsConfiguration - PublicConfig - WadCFG - DiagnosticMonitorConfiguration - CrashDumps

Habilite a coleção de despejos de memória.

Atributos Descrição
containerName Opcional. O nome do contêiner de blobs em sua conta do Armazenamento do Azure para ser usado para armazenar despejos de memória.
crashDumpType Opcional. Configura o Diagnóstico do Azure para coletar minidespejos de memória ou despejos de memória completos.
directoryQuotaPercentage Opcional. Configura o percentual de overallQuotaInMB a ser reservado para despejos de memória na VM.
Elementos filho Descrição
CrashDumpConfiguration Obrigatórios. Define os valores de configuração para cada processo.

O atributo a seguir também é obrigatório:

processName - o nome do processo para o qual você deseja que o Diagnóstico do Azure colete um despejo de memória.

Elemento Directories

Árvore: Raiz - DiagnosticsConfiguration - PublicConfig - WadCFG - DiagnosticMonitorConfiguration - Directories

Habilita a coleta do conteúdo de um diretório, logs de solicitação de acesso com falha do IIS e/ou logs do IIS.

Atributo scheduledTransferPeriod opcional. Veja a explicação anterior.

Elementos filho Descrição
IISLogs A inclusão deste elemento na configuração habilita a coleta de logs do IIS:

containerName - o nome do contêiner de blobs na sua conta do Armazenamento do Azure a ser usado para armazenar os logs do IIS.
FailedRequestLogs A inclusão desse elemento na configuração habilita a coleta de logs sobre solicitações com falha para um site ou aplicativo do IIS. Você também deve habilitar as opções de rastreamento em system.WebServer em Web.config.
DataSources Uma lista de diretórios para monitorar.

Elemento DataSources

Árvore: Raiz - DiagnosticsConfiguration - PublicConfig - WadCFG - DiagnosticMonitorConfiguration - Directories - DataSources

Uma lista de diretórios para monitorar.

Elementos filho Descrição
DirectoryConfiguration Obrigatórios. Atributo obrigatório:

containerName - o nome do contêiner de blob no armazenamento do Azure na conta a ser usada para armazenar os arquivos de log.

Elemento DirectoryConfiguration

Árvore: Raiz - DiagnosticsConfiguration - PublicConfig - WadCFG - DiagnosticMonitorConfiguration - Directories - DataSources - DirectoryConfiguration

Pode incluir o elemento Absolute ou LocalResource, mas não ambos.

Elementos filho Descrição
Absolute O caminho absoluto para o diretório a ser monitorado. Os atributos a seguir são obrigatórios:

- Path - o caminho absoluto para o diretório a ser monitorado.

- expandEnvironment - configura se as variáveis de ambiente em Path são expandidas ou não.
LocalResource O caminho relativo a um recurso local a ser monitorado. Os atributos obrigatórios são:

- Name - o recurso local que contém o diretório a ser monitorado

- relativePath - o caminho relativo a Name que contém o diretório a ser monitorado

Elemento EtwProviders

Árvore: Raiz - DiagnosticsConfiguration - PublicConfig - WadCFG - DiagnosticMonitorConfiguration - EtwProviders

Configura a coleta de eventos ETW do EventSource e/ou os provedores baseados no Manifesto ETW.

Elementos filho Descrição
EtwEventSourceProviderConfiguration Configura a coleta de eventos gerados desde a classe EventSource. Atributo obrigatório:

provider - o nome da classe do evento EventSource.

Os atributos opcionais são:

- scheduledTransferLogLevelFilter - o nível mínimo de severidade a transferir para sua conta de armazenamento.

- scheduledTransferPeriod - o intervalo entre transferências agendadas para o Armazenamento do Azure arredondado para o minuto mais próximo. O valor é um XML "Tipo de Dados de Duração".
EtwManifestProviderConfiguration Atributo obrigatório:

provider - o GUID do provedor de eventos

Os atributos opcionais são:

- scheduledTransferLogLevelFilter - o nível mínimo de severidade a transferir para sua conta de armazenamento.

- scheduledTransferPeriod - o intervalo entre transferências agendadas para o Armazenamento do Azure arredondado para o minuto mais próximo. O valor é um XML "Tipo de Dados de Duração".

Elemento EtwEventSourceProviderConfiguration

Árvore: Raiz - DiagnosticsConfiguration - PublicConfig - WadCFG - DiagnosticMonitorConfiguration - EtwProviders- EtwEventSourceProviderConfiguration

Configura a coleta de eventos gerados desde a classe EventSource.

Elementos filho Descrição
DefaultEvents Atributo opcional:

eventDestination - o nome da tabela para armazenar os eventos
Evento Atributo obrigatório:

id - a id do evento.

Atributo opcional:

eventDestination - o nome da tabela para armazenar os eventos

Elemento EtwManifestProviderConfiguration

Árvore: Raiz - DiagnosticsConfiguration - PublicConfig - WadCFG - DiagnosticMonitorConfiguration - EtwProviders - EtwManifestProviderConfiguration

Elementos filho Descrição
DefaultEvents Atributo opcional:

eventDestination - o nome da tabela para armazenar os eventos
Evento Atributo obrigatório:

id - a id do evento.

Atributo opcional:

eventDestination - o nome da tabela para armazenar os eventos

Elemento Metrics

Árvore: Raiz - DiagnosticsConfiguration - PublicConfig - WadCFG - DiagnosticMonitorConfiguration - Metrics

Permite gerar uma tabela de contador de desempenho otimizada para consultas rápidas. Cada contador de desempenho definido no elemento PerformanceCounters é armazenado na tabela Métricas, além de na tabela Contador de Desempenho.

O atributo resourceId é necessário. A ID de recurso da Máquina Virtual ou Conjunto de Dimensionamento de Máquinas Virtuais na qual o Diagnóstico do Azure está sendo implantado. Obtenha o resourceID do portal do Azure. Selecione Procurar ->Grupos de Recursos -><Nome>. Clique no bloco Propriedades e copie o valor do campo ID. Essa propriedade “resourceID” é usada para enviar métricas personalizadas e para adicionar uma propriedade resourceID aos dados enviados aos Hubs de Eventos. Observe que você precisa adicionar a propriedade resourceid sob o elemento Métricas se quiser que os eventos carregados nos Hubs de Eventos tenham uma ID do recurso.

Elementos filho Descrição
MetricAggregation Atributo obrigatório:

scheduledTransferPeriod - o intervalo entre transferências agendadas para o armazenamento, arredondado para o minuto mais próximo. O valor é um XML "Tipo de Dados de Duração".

Elemento PerformanceCounters

Árvore: Raiz - DiagnosticsConfiguration - PublicConfig - WadCFG - DiagnosticMonitorConfiguration - PerformanceCounters

Habilita a coleta de contadores de desempenho.

Atributo opcional:

Atributo scheduledTransferPeriod opcional. Veja a explicação anterior.

Elemento filho Descrição
PerformanceCounterConfiguration Os atributos a seguir são obrigatórios:

- counterSpecifier - o nome do contador de desempenho. Por exemplo, \Processor(_Total)\% Processor Time. Para obter uma lista de contadores de desempenho no seu host, execute o comando typeperf.

- sampleRate - Com que frequência o contador deve ser testado.

Atributo opcional:

unidade - a unidade de medida do contador. Os valores estão disponíveis na Classe UnitType
coletores Adicionado em 1.5. Opcional. Aponta para um local de coletor para também enviar dados de diagnóstico. Por exemplo, o Azure Monitor ou o os Hubs de Eventos. Observe que você precisa adicionar a propriedade resourceid sob o elemento Métricas se quiser que os eventos carregados nos Hubs de Eventos tenham uma ID do recurso.

Elemento WindowsEventLog

Árvore: Raiz - DiagnosticsConfiguration - PublicConfig - WadCFG - DiagnosticMonitorConfiguration - WindowsEventLog

Habilita a coleta de Logs de Eventos do Windows.

Atributo scheduledTransferPeriod opcional. Veja a explicação anterior.

Elemento filho Descrição
DataSource Os logs de Eventos do Windows a serem coletados. Atributo obrigatório:

name - a consulta XPath que descreve os eventos do Windows a serem coletados. Por exemplo:

Application!*[System[(Level <=3)]], System!*[System[(Level <=3)]], System!*[System[Provider[@Name='Microsoft Antimalware']]], Security!*[System[(Level <= 3)]

Para coletar todos os eventos, especifique "*"
coletores Adicionado em 1.5. Opcional. Aponta para um local do coletor para também enviar dados de diagnóstico para todos os elementos filho que são suporte a coletores. Exemplo de coletor é Application Insights ou Hubs de Eventos.

Elemento Logs

Árvore: Raiz - DiagnosticsConfiguration - PublicConfig - WadCFG - DiagnosticMonitorConfiguration - Logs

Presente na versão 1.0 e 1.1. Ausente na 1.2. Adicionado novamente na versão 1.3.

Define a configuração de buffer para logs básicos do Azure.

Atributo Type Descrição
bufferQuotaInMB unsignedInt Opcional. Especifica a quantidade máxima de armazenamento do sistema de arquivos disponível para os dados especificados.

O padrão é 0.
scheduledTransferLogLevelFilter cadeia de caracteres Opcional. Especifica o nível de severidade mínimo para as entradas de log transferidas. O valor padrão é Indefinido, que transfere todos os logs. Outros possíveis valores (na ordem de mais informações para menos) são Detalhado, Informações, Aviso, Erro, e Crítico.
scheduledTransferPeriod duration Opcional. Especifica o intervalo entre as transferências agendadas de dados, arredondado para o minuto mais próximo.

O padrão é PT0S.
coletores cadeia de caracteres Adicionado em 1.5. Opcional. Aponta para um local de coletor para também enviar dados de diagnóstico. Por exemplo, Application Insights ou Hubs de Eventos. Observe que você precisa adicionar a propriedade resourceid sob o elemento Métricas se quiser que os eventos carregados nos Hubs de Eventos tenham uma ID do recurso.

DockerSources

Árvore: Raiz - DiagnosticsConfiguration - PublicConfig - WadCFG - DiagnosticMonitorConfiguration - DockerSources

Adicionado na versão 1.9.

Nome do elemento Descrição
Stats Informa ao sistema para coletar estatísticas para contêineres do Docker

Elemento SinksConfig

Árvore: Raiz - DiagnosticsConfiguration - PublicConfig - WadCFG - SinksConfig

Uma lista de locais para enviar dados de diagnóstico e a configuração associada a esses locais.

Nome do elemento Descrição
Coletor Veja a descrição em outro lugar nesta página.

Elemento Sink

Árvore: Raiz - DiagnosticsConfiguration - PublicConfig - WadCFG - SinksConfig - Sink

Adicionado na versão 1.5.

Define os locais para os quais os dados de diagnóstico devem ser enviados. Por exemplo, o serviço Application Insights.

Atributo Type Descrição
name string Uma cadeia de caracteres que identifica o nome do coletor.
Elemento Type Descrição
Application Insights string Usado somente durante o envio de dados para o Application Insights. Contém a Chave de Instrumentação para uma conta ativa do Application Insights a que você tem acesso.
Canais string Uma para cada filtragem adicional que o fluxo que você

Elemento Channels

Árvore: Raiz - DiagnosticsConfiguration - PublicConfig - WadCFG - SinksConfig - Sink - Channels

Adicionado na versão 1.5.

Define filtros para fluxos de dados de log que passam por um coletor.

Elemento Type Descrição
Channel string Veja a descrição em outro lugar nesta página.

Elemento Channel

Árvore: Raiz - DiagnosticsConfiguration - PublicConfig - WadCFG - SinksConfig - Sink - Channels - Channel

Adicionado na versão 1.5.

Define os locais para os quais os dados de diagnóstico devem ser enviados. Por exemplo, o serviço Application Insights.

Atributos Tipo Descrição
logLevel cadeia de caracteres Especifica o nível de severidade mínimo para as entradas de log transferidas. O valor padrão é Indefinido, que transfere todos os logs. Outros possíveis valores (na ordem de mais informações para menos) são Detalhado, Informações, Aviso, Erro, e Crítico.
name cadeia de caracteres Um nome exclusivo do canal que será mencionado

Elemento PrivateConfig

Árvore: Raiz - DiagnosticsConfiguration - PrivateConfig

Adicionado na versão 1.3.

Opcional

Armazena os detalhes privados da conta de armazenamento (nome, chave e ponto de extremidade). Essa informação é enviada para a máquina virtual, mas não pode ser recuperada dela.

Elementos filho Descrição
StorageAccount A conta de armazenamento a ser usada. Os atributos a seguir são necessários

- name - o nome da conta de armazenamento.

- chave - a chave para a conta de armazenamento.

- ponto de extremidade - o ponto de extremidade para acessar a conta de armazenamento.

-sasToken (adicionado 1.8.1) – é possível especificar um token SAS em vez de uma chave de conta de armazenamento na configuração particular. Se ele for fornecido, a chave de conta de armazenamento será ignorada.
Requisitos para o Token SAS:
– Oferece suporte apenas ao token SAS da conta
Os tipos de serviço - b, t são obrigatórios.
As permissões - a, c, u, w são obrigatórias.
Os tipos de recurso - c, o são obrigatórios.
– Oferece suporte somente ao protocolo HTTPS
– A hora de início e de expiração deve ser válida.

Elemento IsEnabled

Árvore: Raiz - DiagnosticsConfiguration - IsEnabled

Booliano. Use true para habilitar o diagnóstico ou false para desabilitar o diagnóstico.

Configuração de exemplo

A seguir está uma configuração de exemplo completa para a extensão de diagnóstico do Windows mostrada em JSON e XML.

JSON

O PublicConfig e o PrivateConfig são separados, pois na maioria dos casos de uso de JSON, eles são passados como variáveis diferentes. Esses casos incluem modelos do Resource Manager, PowerShell e Visual Studio.

Observação

A definição de coletor do Azure Monitor de configuração pública tem duas propriedades: resourceId e region. Só são necessárias para os serviços de nuvem clássico e VMs clássicas. A propriedade region não deve ser usada para outros recursos; a propriedade resourceId é usada em VMs ARM para preencher o campo resourceId em logs carregados nos de Hubs de Eventos.

"PublicConfig" {
    "WadCfg": {
        "DiagnosticMonitorConfiguration": {
            "overallQuotaInMB": 10000,
            "DiagnosticInfrastructureLogs": {
                "scheduledTransferLogLevelFilter": "Error"
            },
            "PerformanceCounters": {
                "scheduledTransferPeriod": "PT1M",
                "sinks": "AzureMonitorSink",
                "PerformanceCounterConfiguration": [
                    {
                        "counterSpecifier": "\\Processor(_Total)\\% Processor Time",
                        "sampleRate": "PT1M",
                        "unit": "percent"
                    }
                ]
            },
            "Directories": {
                "scheduledTransferPeriod": "PT5M",
                "IISLogs": {
                    "containerName": "iislogs"
                },
                "FailedRequestLogs": {
                    "containerName": "iisfailed"
                },
                "DataSources": [
                    {
                        "containerName": "mynewprocess",
                        "Absolute": {
                            "path": "C:\\MyNewProcess",
                            "expandEnvironment": false
                        }
                    },
                    {
                        "containerName": "badapp",
                        "Absolute": {
                            "path": "%SYSTEMDRIVE%\\BadApp",
                            "expandEnvironment": true
                        }
                    },
                    {
                        "containerName": "goodapp",
                        "LocalResource": {
                            "relativePath": "..\\PeanutButter",
                            "name": "Skippy"
                        }
                    }
                ]
            },
            "EtwProviders": {
                "sinks": "",
                "EtwEventSourceProviderConfiguration": [
                    {
                        "scheduledTransferPeriod": "PT5M",
                        "provider": "MyProviderClass",
                        "Event": [
                            {
                                "id": 0
                            },
                            {
                                "id": 1,
                                "eventDestination": "errorTable"
                            }
                        ],
                        "DefaultEvents": {
                        }
                    }
                ],
                "EtwManifestProviderConfiguration": [
                    {
                        "scheduledTransferPeriod": "PT2M",
                        "scheduledTransferLogLevelFilter": "Information",
                        "provider": "5974b00b-84c2-44bc-9e58-3a2451b4e3ad",
                        "Event": [
                            {
                                "id": 0
                            }
                        ],
                        "DefaultEvents": {
                        }
                    }
                ]
            },
            "WindowsEventLog": {
                "scheduledTransferPeriod": "PT5M",
                "DataSource": [
                    {
                        "name": "System!*[System[Provider[@Name='Microsoft Antimalware']]]"
                    },
                    {
                        "name": "System!*[System[Provider[@Name='NTFS'] and (EventID=55)]]"
                    },
                    {
                        "name": "System!*[System[Provider[@Name='disk'] and (EventID=7 or EventID=52 or EventID=55)]]"
                    }
                ]
            },
            "Logs": {
                "scheduledTransferPeriod": "PT1M",
                "scheduledTransferLogLevelFilter": "Verbose",
                "sinks": "ApplicationInsights.AppLogs"
            },
            "CrashDumps": {
                "directoryQuotaPercentage": 30,
                "dumpType": "Mini",
                "containerName": "wad-crashdumps",
                "CrashDumpConfiguration": [
                    {
                        "processName": "mynewprocess.exe"
                    },
                    {
                        "processName": "badapp.exe"
                    }
                ]
            }
        },
        "SinksConfig": {
            "Sink": [
                {
                    "name": "AzureMonitorSink",
                    "AzureMonitor":
                    {
                        "ResourceId": "{insert resourceId if a classic VM or cloud service, else property not needed}",
                        "Region": "{insert Azure region of resource if a classic VM or cloud service, else property not needed}"
                    }
                },
                {
                    "name": "ApplicationInsights",
                    "ApplicationInsights": "{Insert InstrumentationKey}",
                    "Channels": {
                        "Channel": [
                            {
                                "logLevel": "Error",
                                "name": "Errors"
                            },
                            {
                                "logLevel": "Verbose",
                                "name": "AppLogs"
                            }
                        ]
                    }
                },
                {
                    "name": "EventHub",
                    "EventHub": {
                        "Url": "https://myeventhub-ns.servicebus.windows.net/diageventhub",
                        "SharedAccessKeyName": "SendRule",
                        "usePublisherId": false
                    }
                },
                {
                    "name": "secondaryEventHub",
                    "EventHub": {
                        "Url": "https://myeventhub-ns.servicebus.windows.net/secondarydiageventhub",
                        "SharedAccessKeyName": "SendRule",
                        "usePublisherId": false
                    }
                },
                {
                    "name": "secondaryStorageAccount",
                    "StorageAccount": {
                        "name": "secondarydiagstorageaccount",
                        "endpoint": "https://core.windows.net"
                    }
                }
            ]
        }
    },
    "StorageAccount": "diagstorageaccount",
    "StorageType": "TableAndBlob"
}

Observação

A definição de coletor do Azure Monitor de configuração privada tem duas propriedades: PrincipalId e Secret. Só são necessárias para os serviços de nuvem clássico e VMs clássicas. Essas propriedades não devem ser usadas para outros recursos.

"PrivateConfig" {
    "storageAccountName": "diagstorageaccount",
    "storageAccountKey": "{base64 encoded key}",
    "storageAccountEndPoint": "https://core.windows.net",
    "storageAccountSasToken": "{sas token}",
    "EventHub": {
        "Url": "https://myeventhub-ns.servicebus.windows.net/diageventhub",
        "SharedAccessKeyName": "SendRule",
        "SharedAccessKey": "{base64 encoded key}"
    },
    "AzureMonitorAccount": {
        "ServicePrincipalMeta": {
            "PrincipalId": "{Insert service principal client Id}",
            "Secret": "{Insert service principal client secret}"
        }
    },
    "SecondaryStorageAccounts": {
        "StorageAccount": [
            {
                "name": "secondarydiagstorageaccount",
                "key": "{base64 encoded key}",
                "endpoint": "https://core.windows.net",
                "sasToken": "{sas token}"
            }
        ]
    },
    "SecondaryEventHubs": {
        "EventHub": [
            {
                "Url": "https://myeventhub-ns.servicebus.windows.net/secondarydiageventhub",
                "SharedAccessKeyName": "SendRule",
                "SharedAccessKey": "{base64 encoded key}"
            }
        ]
    }
}

XML

<?xml version="1.0" encoding="utf-8"?>  
<DiagnosticsConfiguration  xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">   
  <PublicConfig>  
    <WadCfg>  
      <DiagnosticMonitorConfiguration overallQuotaInMB="10000">  

        <PerformanceCounters scheduledTransferPeriod="PT1M" sinks="AzureMonitorSink">  
          <PerformanceCounterConfiguration counterSpecifier="\Processor(_Total)\% Processor Time" sampleRate="PT1M" unit="percent" />  
        </PerformanceCounters>  

        <Directories scheduledTransferPeriod="PT5M">  
          <IISLogs containerName="iislogs" />  
          <FailedRequestLogs containerName="iisfailed" />  

          <DataSources>  
            <DirectoryConfiguration containerName="mynewprocess">  
              <Absolute path="C:\MyNewProcess" expandEnvironment="false" />  
            </DirectoryConfiguration>  
            <DirectoryConfiguration containerName="badapp">  
              <Absolute path="%SYSTEMDRIVE%\BadApp" expandEnvironment="true" />  
            </DirectoryConfiguration>  
            <DirectoryConfiguration containerName="goodapp">  
              <LocalResource name="Skippy" relativePath="..\PeanutButter"/>  
            </DirectoryConfiguration>  
          </DataSources>  

        </Directories>  

        <EtwProviders>  
          <EtwEventSourceProviderConfiguration   
                       provider="MyProviderClass"   
                       scheduledTransferPeriod="PT5M">  
            <Event id="0"/>  
            <Event id="1" eventDestination="errorTable"/>  
            <DefaultEvents />  
          </EtwEventSourceProviderConfiguration>  
          <EtwManifestProviderConfiguration provider="5974b00b-84c2-44bc-9e58-3a2451b4e3ad" scheduledTransferLogLevelFilter="Information" scheduledTransferPeriod="PT2M">  
            <Event id="0"/>  
            <DefaultEvents eventDestination="defaultTable"/>  
          </EtwManifestProviderConfiguration>  
        </EtwProviders>  

        <WindowsEventLog scheduledTransferPeriod="PT5M">  
          <DataSource name="System!*[System[Provider[@Name='Microsoft Antimalware']]]"/>  
          <DataSource name="System!*[System[Provider[@Name='NTFS'] and (EventID=55)]]" />  
          <DataSource name="System!*[System[Provider[@Name='disk'] and (EventID=7 or EventID=52 or EventID=55)]]" />  
        </WindowsEventLog>  

        <Logs  bufferQuotaInMB="1024"   
             scheduledTransferPeriod="PT1M"   
             scheduledTransferLogLevelFilter="Verbose"   
             sinks="ApplicationInsights.AppLogs"/>  <!-- sinks attribute added in 1.5 -->  

        <CrashDumps containerName="wad-crashdumps" directoryQuotaPercentage="30" dumpType="Mini">  
          <CrashDumpConfiguration processName="mynewprocess.exe" />  
          <CrashDumpConfiguration processName="badapp.exe"/>  
        </CrashDumps>  

        <DockerSources> <!-- Added in 1.9 -->
          <Stats enabled="true" sampleRate="PT1M" scheduledTransferPeriod="PT1M" />
        </DockerSources>

      </DiagnosticMonitorConfiguration>  

      <SinksConfig>   <!-- Added in 1.5 -->  
        <Sink name="AzureMonitorSink">
            <AzureMonitor> <!-- Added in 1.11 -->
                <resourceId>{insert resourceId}</ResourceId> <!-- Parameter only needed for classic VMs and Classic Cloud Services, exclude VMSS and Resource Manager VMs-->
                <Region>{insert Azure region of resource}</Region> <!-- Parameter only needed for classic VMs and Classic Cloud Services, exclude VMSS and Resource Manager VMs -->
            </AzureMonitor>
        </Sink>
        <Sink name="ApplicationInsights">   
          <ApplicationInsights>{Insert InstrumentationKey}</ApplicationInsights>   
          <Channels>   
            <Channel logLevel="Error" name="Errors"  />   
            <Channel logLevel="Verbose" name="AppLogs"  />   
          </Channels>   
        </Sink>   
        <Sink name="EventHub"> <!-- Added in 1.7 -->
          <EventHub Url="https://myeventhub-ns.servicebus.windows.net/diageventhub" SharedAccessKeyName="SendRule" usePublisherId="false" />
        </Sink>
        <Sink name="secondaryEventHub"> <!-- Added in 1.7 -->
          <EventHub Url="https://myeventhub-ns.servicebus.windows.net/secondarydiageventhub" SharedAccessKeyName="SendRule" usePublisherId="false" />
        </Sink>
        <Sink name="secondaryStorageAccount"> <!-- Added in 1.7 -->
          <StorageAccount name="secondarydiagstorageaccount" endpoint="https://core.windows.net" />
        </Sink>
   </SinksConfig>

  </WadCfg>  

  <StorageAccount>diagstorageaccount</StorageAccount>
  <StorageType>TableAndBlob</StorageType> <!-- Added in 1.8 -->  
  </PublicConfig>  

  <PrivateConfig>  <!-- Added in 1.3 -->  
    <StorageAccount name="" key="" endpoint="" sasToken="{sas token}"  />  <!-- sasToken in Private config added in 1.8.1 -->  
    <EventHub Url="https://myeventhub-ns.servicebus.windows.net/diageventhub" SharedAccessKeyName="SendRule" SharedAccessKey="{base64 encoded key}" />

    <AzureMonitorAccount>
        <ServicePrincipalMeta> <!-- Added in 1.11; only needed for classic VMs and Classic cloud services -->
            <PrincipalId>{Insert service principal clientId}</PrincipalId>
            <Secret>{Insert service principal client secret}</Secret>
        </ServicePrincipalMeta>
    </AzureMonitorAccount>

    <SecondaryStorageAccounts>
       <StorageAccount name="secondarydiagstorageaccount" key="{base64 encoded key}" endpoint="https://core.windows.net" sasToken="{sas token}" />
    </SecondaryStorageAccounts>

    <SecondaryEventHubs>
       <EventHub Url="https://myeventhub-ns.servicebus.windows.net/secondarydiageventhub" SharedAccessKeyName="SendRule" SharedAccessKey="{base64 encoded key}" />
    </SecondaryEventHubs>

  </PrivateConfig>  
  <IsEnabled>true</IsEnabled>  
</DiagnosticsConfiguration>  

Observação

A definição de coletor do Azure Monitor de configuração pública tem duas propriedades: resourceId e region. Só são necessárias para os serviços de nuvem clássico e VMs clássicas. Essas propriedades não devem ser usadas para máquinas virtuais do Resource Manager ou conjuntos de dimensionamento de máquinas virtuais. Há também um elemento de configuração privada adicional para o coletor do Azure Monitor, que passa uma ID de entidade de segurança e um segredo. Só é necessário para os serviços de nuvem clássico e VMs clássicas. Para VMs e VMSS do Resource Manager, a definição do Azure Monitor no elemento de configuração privada pode ser excluída.