Partilhar via


Esquema de extensão de diagnóstico do Windows

Diagnóstico do Azure extensão é um agente no Azure Monitor que recolhe dados de monitorização do sistema operativo convidado e cargas de trabalho de recursos de computação do Azure. Este artigo detalha o esquema utilizado para a configuração da extensão de diagnóstico em máquinas virtuais do Windows e outros recursos de computação.

Nota

O esquema neste artigo é válido para as versões 1.3 e mais recentes (Azure SDK 2.4 e mais recente). As secções de configuração mais recentes são comentadas para mostrar em que versão foram adicionadas. A versão 1.0 e 1.2 do esquema foi arquivada e já não está disponível.

Esquema de ficheiro de configuração pública

Transfira a definição de esquema de 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 'C:\temp\WadConfig.xsd'  

Tipos de Atributo Comuns

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

DiagnosticsConfiguration Element

Árvore: Raiz - DiagnosticsConfiguration

Adicionado na versão 1.3.

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

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

Elementos Subordinados Descrição
PublicConfig Obrigatório. Veja a descrição noutro local nesta página.
PrivateConfig Opcional. Veja a descrição noutro local nesta página.
IsEnabled Booleano. Veja a descrição noutro local nesta página.

Elemento PublicConfig

Árvore: Raiz – DiagnosticsConfiguration – PublicConfig

Descreve a configuração do diagnóstico público.

Elementos Subordinados Descrição
WadCfg Obrigatório. Veja a descrição noutro local nesta página.
StorageAccount O nome da conta de Armazenamento do Azure para armazenar os dados. Também pode ser especificado como um parâmetro ao executar o cmdlet Set-AzureServiceDiagnosticsExtension.
StorageType Pode ser Tabela, Blob ou TableAndBlob. A tabela é predefinida. Quando TableAndBlob é escolhido, os dados de diagnóstico são escritos duas vezes - uma vez para cada tipo.
LocalResourceDirectory O diretório na máquina virtual onde o Agente de Monitorização armazena dados de eventos. Caso contrário, defina, é utilizado o diretório predefinido:

Para uma função De Trabalho/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 necessários são:

- path - O diretório no sistema a ser utilizado por Diagnóstico do Azure.

- expandEnvironment – controla se as variáveis de ambiente são expandidas no nome do caminho.

Elemento WadCFG

Árvore: Raiz – DiagnosticsConfiguration – PublicConfig – WadCFG

Identifica e configura os dados telemétricos a recolher.

DiagnosticMonitorConfiguration Element

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

Necessário

Atributos Descrição
overallQuotaInMB A quantidade máxima de espaço em disco local que pode ser consumida pelos vários tipos de dados de diagnóstico recolhidos pelo Diagnóstico do Azure. A predefinição é 4096 MB.
useProxyServer Configure Diagnóstico do Azure para utilizar as definições do servidor proxy, conforme definido nas definições do IE.
sinks Adicionado em 1,5. Opcional. Aponta para uma localização de sink para também enviar dados de diagnóstico para todos os elementos subordinados que suportam sinks. O exemplo de sink é Application Insights ou Hubs de Eventos. Tenha em atenção que tem de adicionar a propriedade resourceId no elemento Métricas se pretender que os eventos carregados para os Hubs de Eventos tenham um ID de recurso.



Elementos Subordinados Descrição
CrashDumps Veja a descrição noutro local nesta página.
DiagnosticInfrastructureLogs Ative a recolha de registos gerados por Diagnóstico do Azure. Os registos da infraestrutura de diagnóstico são úteis para resolver problemas do próprio sistema de diagnósticos. Os atributos opcionais são:

- scheduledTransferLogLevelFilter - Configura o nível mínimo de gravidade dos registos recolhidos.

- scheduledTransferPeriod - O intervalo entre as transferências agendadas para o armazenamento arredondado até ao minuto mais próximo. O valor é um XML "Tipo de Dados de Duração".
Diretórios Veja a descrição noutro local nesta página.
EtwProviders Veja a descrição noutro local nesta página.
Métricas Veja a descrição noutro local nesta página.
PerformanceCounters Veja a descrição noutro local nesta página.
WindowsEventLog Veja a descrição noutro local nesta página.
DockerSources Veja a descrição noutro local nesta página.

Elemento CrashDumps

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

Ative a coleção de informações de falha de sistema.

Atributos Descrição
containerName Opcional. O nome do contentor de blobs na sua conta de Armazenamento do Azure a ser utilizado para armazenar informações de falha de sistema.
crashDumpType Opcional. Configura Diagnóstico do Azure para recolher informações de falha de sistema mini ou completas.
directoryQuotaPercentage Opcional. Configura a percentagem de globalQuotaInMB a ser reservada para informações de falha de sistema na VM.
Elementos Subordinados Descrição
CrashDumpConfiguration Obrigatório. Define valores de configuração para cada processo.

O atributo seguinte também é necessário:

processName – o nome do processo para o qual pretende Diagnóstico do Azure recolher uma informação de falha de sistema.

Elemento diretórios

Árvore: Raiz – DiagnosticsConfiguration – PublicConfig – WadCFG – DiagnosticMonitorConfiguration – Diretórios

Ativa a coleção dos conteúdos de um diretório, registos de pedidos de acesso falhados do IIS e/ou registos do IIS.

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

Elementos Subordinados Descrição
IISLogs A inclusão deste elemento na configuração permite a coleção de registos do IIS:

containerName - o nome do contentor de blobs na sua conta de Armazenamento do Azure a ser utilizado para armazenar os registos do IIS.
FailedRequestLogs A inclusão deste elemento na configuração permite a recolha de registos sobre pedidos falhados a um site ou aplicação do IIS. Também tem de ativar as opções de rastreio no sistema. WebServer no Web.config.
DataSources Uma lista de diretórios a monitorizar.

Elemento DataSources

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

Uma lista de diretórios a monitorizar.

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

containerName - o nome do contentor de blobs na sua conta de Armazenamento do Azure que deve ser utilizado para armazenar os ficheiros de registo.

Elemento DirectoryConfiguration

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

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

Elementos Subordinados Descrição
Absoluto O caminho absoluto para o diretório a monitorizar. São necessários os seguintes atributos:

- Caminho – o caminho absoluto para o diretório a monitorizar.

- expandEnvironment – configura se as variáveis de ambiente no Caminho são expandidas.
LocalResource O caminho relativo a um recurso local a monitorizar. Os atributos necessários são:

- Nome – o recurso local que contém o diretório a monitorizar

- relativePath – o caminho relativo ao Nome que contém o diretório a monitorizar

Elemento EtwProviders

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

Configura a coleção de eventos ETW a partir de fornecedores baseados em EventSource e/ou ETW Manifest.

Elementos Subordinados Descrição
EtwEventSourceProviderConfiguration Configura a coleção de eventos gerados a partir da Classe EventSource. Atributo obrigatório:

provider - O nome da classe do evento EventSource.

Os atributos opcionais são:

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

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

fornecedor – o GUID do fornecedor de eventos

Os atributos opcionais são:

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

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

EtwEventSourceProviderConfiguration Element

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

Configura a coleção de eventos gerados a partir da Classe EventSource.

Elementos Subordinados Descrição
DefaultEvents Atributo opcional:

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

ID – o ID do evento.

Atributo opcional:

eventDestination - O nome da tabela para armazenar os eventos em

EtwManifestProviderConfiguration Element

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

Elementos Subordinados Descrição
DefaultEvents Atributo opcional:

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

ID – o ID do evento.

Atributo opcional:

eventDestination - O nome da tabela para armazenar os eventos em

Elemento de Métricas

Árvore: Raiz – DiagnosticsConfiguration – PublicConfig – WadCFG – DiagnosticMonitorConfiguration – Métricas

Permite-lhe 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 da tabela Contador de Desempenho.

É necessário o atributo resourceId . O ID de recurso da Máquina Virtual ou do Conjunto de Dimensionamento de Máquinas Virtuais no qual está a implementar Diagnóstico do Azure. Obtenha o resourceID do portal do Azure. Selecione Procurar ->Grupos de Recursos -><Nome>. Clique no mosaico Propriedades e copie o valor do campo ID . Esta propriedade resourceID é utilizada para enviar métricas personalizadas e para adicionar uma propriedade resourceID aos dados enviados para os Hubs de Eventos. Tenha em atenção que tem de adicionar a propriedade resourceId no elemento Métricas se pretender que os eventos carregados para os Hubs de Eventos tenham um ID de recurso.

Elementos Subordinados Descrição
Agregação de Métricas Atributo obrigatório:

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

Elemento PerformanceCounters

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

Ativa a coleção de contadores de desempenho.

Atributo opcional:

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

Elemento Subordinado Descrição
PerformanceCounterConfiguration São necessários os seguintes atributos:

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

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

Atributo opcional:

unit - A unidade de medida do contador. Os valores estão disponíveis na Classe UnitType
sinks Adicionado em 1,5. Opcional. Aponta para uma localização de sink para também enviar dados de diagnóstico. Por exemplo, Azure Monitor ou Hubs de Eventos. Tenha em atenção que tem de adicionar a propriedade resourceId no elemento Métricas se pretender que os eventos carregados para os Hubs de Eventos tenham um ID de recurso.

Elemento WindowsEventLog

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

Ativa a coleção de Registos de Eventos do Windows.

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

Elemento Subordinado Descrição
DataSource Os registos de Eventos do Windows a recolher. Atributo obrigatório:

name - A consulta XPath que descreve os eventos do Windows a recolher. Por exemplo:

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

Para recolher todos os eventos, especifique "*"
sinks Adicionado em 1,5. Opcional. Aponta para uma localização de sink para também enviar dados de diagnóstico para todos os elementos subordinados que suportam sinks. O exemplo de sink é Application Insights ou Hubs de Eventos.

Elemento Registos

Árvore: Raiz – DiagnosticsConfiguration – PublicConfig – WadCFG – DiagnosticMonitorConfiguration – Registos

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

Define a configuração da memória intermédia para os registos básicos do Azure.

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

A predefinição é 0.
scheduledTransferLogLevelFilter string Opcional. Especifica o nível mínimo de gravidade das entradas de registo que são transferidas. O valor predefinido é Indefinido, que transfere todos os registos. Outros valores possíveis (por ordem da maioria das informações) são Verboso, Informações, Aviso, Erro e Crítico.
scheduledTransferPeriod duração Opcional. Especifica o intervalo entre as transferências agendadas de dados, arredondadas até ao minuto mais próximo.

A predefinição é PT0S.
sinks string Adicionado em 1,5. Opcional. Aponta para uma localização de sink para também enviar dados de diagnóstico. Por exemplo, Application Insights ou Hubs de Eventos. Tenha em atenção que tem de adicionar a propriedade resourceId no elemento Métricas se pretender que os eventos carregados para os Hubs de Eventos tenham um ID de recurso.

DockerSources

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

Adicionado em 1,9.

Nome do Elemento Descrição
Estatísticas Indica ao sistema para recolher estatísticas para contentores do Docker

SinksConfig Element

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

Uma lista de localizações para onde enviar dados de diagnóstico e a configuração associada a essas localizações.

Nome do Elemento Descrição
Sink Veja a descrição noutro local nesta página.

Elemento Sink

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

Adicionado na versão 1.5.

Define localizações para onde enviar dados de diagnóstico. Por exemplo, o serviço Application Insights.

Atributo Tipo Descrição
name string Uma cadeia que identifica o nome do sinkname.
Elemento Tipo Descrição
Application Insights string Utilizado apenas ao enviar dados para o Application Insights. Contenha a Chave de Instrumentação para uma conta ativa do Application Insights à qual tem acesso.
Channels (Canais) string Uma para cada filtragem adicional que transmite

Elemento Canais

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

Adicionado na versão 1.5.

Define filtros para fluxos de dados de registo que passam por um sink.

Elemento Tipo Descrição
Canal string Veja a descrição noutro local nesta página.

Elemento de Canal

Tree: Root - DiagnosticsConfiguration - PublicConfig - WadCFG - SinksConfig - Sink - Channels - Channel

Adicionado na versão 1.5.

Define localizações para onde enviar dados de diagnóstico. Por exemplo, o serviço Application Insights.

Atributos Tipo Descrição
logLevel string Especifica o nível mínimo de gravidade das entradas de registo que são transferidas. O valor predefinido é Indefinido, que transfere todos os registos. Outros valores possíveis (por ordem da maioria das informações) são Verboso, Informações, Aviso, Erro e Crítico.
nome string Um nome exclusivo do canal para se referir a

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 final). Estas informações são enviadas para a máquina virtual, mas não podem ser obtidas da mesma.

Elementos Subordinados Descrição
StorageAccount A conta de armazenamento a utilizar. São necessários os seguintes atributos

- name - O nome da conta de armazenamento.

- key - A chave para a conta de armazenamento.

- ponto final – o ponto final para aceder à conta de armazenamento.

-sasToken (adicionado 1.8.1)- Pode especificar um token SAS em vez de uma chave de conta de armazenamento na configuração privada. Se for fornecida, a chave da conta de armazenamento é ignorada.
Requisitos para o Token de SAS:
- Suporta apenas o token DE SAS da conta
- b, são necessários tipos de serviço t .
- a, c, u, w permissões são necessárias.
- c, os tipos de recursos o são necessários.
- Suporta apenas o protocolo HTTPS
- A hora de início e de expiração tem de ser válida.

Elemento IsEnabled

Árvore: Raiz – DiagnosticsConfiguration – IsEnabled

Booleano. Utilize true para ativar o diagnóstico ou false para desativar os diagnósticos.

Configuração de exemplo

Segue-se uma configuração de exemplo completa para a extensão de diagnóstico do Windows apresentada tanto no JSON como no XML.

JSON

O PublicConfig e o PrivateConfig estão separados porque, na maioria dos casos de utilização JSON, são transmitidos como variáveis diferentes. Estes casos incluem Resource Manager modelos, o PowerShell e o Visual Studio.

Nota

A definição de sink do Azure Monitor de configuração pública tem duas propriedades, resourceId e região. Estas apenas são necessárias para VMs Clássicas e serviços Cloud Clássicos. A propriedade região não deve ser utilizada para outros recursos, a propriedade resourceId é utilizada em VMs do ARM para preencher o campo resourceID nos registos carregados para os 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"
}

Nota

A definição de sink do Azure Monitor de configuração privada tem duas propriedades, PrincipalId e Secret. Estas apenas são necessárias para VMs Clássicas e serviços Cloud Clássicos. Estas propriedades não devem ser utilizadas 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>  

Nota

A definição de sink do Azure Monitor de configuração pública tem duas propriedades, resourceId e região. Estas apenas são necessárias para VMs Clássicas e serviços Cloud Clássicos. Estas propriedades não devem ser utilizadas para Resource Manager Máquinas Virtuais ou conjuntos de Dimensionamento de Máquinas Virtuais. Existe também um elemento de Configuração Privada adicional para o sink do Azure Monitor, que passa num ID principal e segredo. Isto só é necessário para VMs Clássicas e Serviços Cloud Clássicas. Para Resource Manager VMs e VMSS, a definição do Azure Monitor no elemento de configuração privada pode ser excluída.