Enviar dados de diagnóstico do Serviço de Nuvem, Máquina Virtual ou Service Fabric para o Application Insights
Serviços de nuvem, máquinas virtuais, conjuntos de dimensionamento de máquinas virtuais e Service Fabric usam a extensão de Diagnóstico do Azure para coletar dados. O diagnóstico do Azure envia dados para tabelas de Armazenamento do Azure. No entanto, você também pode canalizar todos ou um subconjunto dos dados para outros locais usando a extensão de Diagnóstico do Azure 1.5 ou posterior.
Este artigo descreve como enviar dados da extensão de Diagnóstico do Azure para o Application Insights.
Explicação da configuração do diagnóstico
A extensão de diagnóstico do Azure 1.5 introduziu coletores, que são locais extras para onde você pode enviar dados de diagnóstico.
Exemplo de configuração de um coletor para o Application Insights:
<SinksConfig>
<Sink name="ApplicationInsights">
<ApplicationInsights>{Insert InstrumentationKey}</ApplicationInsights>
<Channels>
<Channel logLevel="Error" name="MyTopDiagData" />
<Channel logLevel="Verbose" name="MyLogData" />
</Channels>
</Sink>
</SinksConfig>
"SinksConfig": {
"Sink": [
{
"name": "ApplicationInsights",
"ApplicationInsights": "{Insert InstrumentationKey}",
"Channels": {
"Channel": [
{
"logLevel": "Error",
"name": "MyTopDiagData"
},
{
"logLevel": "Error",
"name": "MyLogData"
}
]
}
}
]
}
O atributo Nome do coletor é um valor de cadeia de caracteres que identifica exclusivamente o coletor.
O elemento ApplicationInsights especifica a chave de instrumentação do recurso Application Insights para onde os dados de diagnóstico do Azure são enviados.
- Se você não tiver um recurso existente do Application Insights, consulte Criar um novo recurso do Application Insights.
- Se você estiver desenvolvendo um Serviço de Nuvem com o SDK do Azure 2.8 e posterior, essa chave de instrumentação será preenchida automaticamente. O valor é baseado na definição de configuração do serviço APPINSIGHTS_INSTRUMENTATIONKEY ao empacotar o projeto do Serviço de Nuvem, consulte Usar o Application Insights com Serviços de Nuvem.
O elemento Channels contém um ou mais elementos Channel.
- O atributo name refere-se exclusivamente a esse canal.
- O atributo loglevel permite especificar o nível de log permitido pelo canal. Os níveis de log disponíveis na ordem da maioria para o mínimo de informações são:
- Verboso
- Informações
- Aviso
- Erro
- Crítico
Um canal age como um filtro e permite que você selecione níveis de log específicos para enviar ao coletor de destino. Por exemplo, você pode coletar logs detalhados e enviá-los para o armazenamento, mas enviar apenas Erros para o coletor.
O gráfico a seguir mostra essa relação.
O gráfico a seguir resume os valores de configuração e como eles funcionam. Você pode incluir vários coletores na configuração em diferentes níveis na hierarquia. O coletor no nível superior atua como uma configuração global e o especificado no elemento individual age como uma substituição para essa configuração global.
Exemplo completo de configuração do coletor
Aqui está um exemplo completo do arquivo de configuração pública que:
- Envia todos os erros para o Application Insights (especificado no nó DiagnosticMonitorConfiguration ).
- Também envia logs de nível detalhado para os logs de aplicativos (especificados no nó Logs ).
<WadCfg>
<DiagnosticMonitorConfiguration overallQuotaInMB="4096"
sinks="ApplicationInsights.MyTopDiagData"> <!-- All info below sent to this channel -->
<DiagnosticInfrastructureLogs />
<PerformanceCounters>
<PerformanceCounterConfiguration counterSpecifier="\Processor(_Total)\% Processor Time" sampleRate="PT3M" />
<PerformanceCounterConfiguration counterSpecifier="\Memory\Available MBytes" sampleRate="PT3M" />
</PerformanceCounters>
<WindowsEventLog scheduledTransferPeriod="PT1M">
<DataSource name="Application!*" />
</WindowsEventLog>
<Logs scheduledTransferPeriod="PT1M" scheduledTransferLogLevelFilter="Verbose"
sinks="ApplicationInsights.MyLogData"/> <!-- This specific info sent to this channel -->
</DiagnosticMonitorConfiguration>
<SinksConfig>
<Sink name="ApplicationInsights">
<ApplicationInsights>{Insert InstrumentationKey}</ApplicationInsights>
<Channels>
<Channel logLevel="Error" name="MyTopDiagData" />
<Channel logLevel="Verbose" name="MyLogData" />
</Channels>
</Sink>
</SinksConfig>
</WadCfg>
"WadCfg": {
"DiagnosticMonitorConfiguration": {
"overallQuotaInMB": 4096,
"sinks": "ApplicationInsights.MyTopDiagData", "_comment": "All info below sent to this channel",
"DiagnosticInfrastructureLogs": {
},
"PerformanceCounters": {
"PerformanceCounterConfiguration": [
{
"counterSpecifier": "\\Processor(_Total)\\% Processor Time",
"sampleRate": "PT3M"
},
{
"counterSpecifier": "\\Memory\\Available MBytes",
"sampleRate": "PT3M"
}
]
},
"WindowsEventLog": {
"scheduledTransferPeriod": "PT1M",
"DataSource": [
{
"name": "Application!*"
}
]
},
"Logs": {
"scheduledTransferPeriod": "PT1M",
"scheduledTransferLogLevelFilter": "Verbose",
"sinks": "ApplicationInsights.MyLogData", "_comment": "This specific info sent to this channel"
}
},
"SinksConfig": {
"Sink": [
{
"name": "ApplicationInsights",
"ApplicationInsights": "{Insert InstrumentationKey}",
"Channels": {
"Channel": [
{
"logLevel": "Error",
"name": "MyTopDiagData"
},
{
"logLevel": "Verbose",
"name": "MyLogData"
}
]
}
}
]
}
}
Na configuração anterior, as seguintes linhas têm os seguintes significados:
Enviar todos os dados que o diagnóstico do Azure coleta
<DiagnosticMonitorConfiguration overallQuotaInMB="4096" sinks="ApplicationInsights">
"DiagnosticMonitorConfiguration": {
"overallQuotaInMB": 4096,
"sinks": "ApplicationInsights",
}
Enviar apenas logs de erro para o coletor do Application Insights
<DiagnosticMonitorConfiguration overallQuotaInMB="4096" sinks="ApplicationInsights.MyTopDiagdata">
"DiagnosticMonitorConfiguration": {
"overallQuotaInMB": 4096,
"sinks": "ApplicationInsights.MyTopDiagData",
}
Enviar logs detalhados de aplicativos para o Application Insights
<Logs scheduledTransferPeriod="PT1M" scheduledTransferLogLevelFilter="Verbose" sinks="ApplicationInsights.MyLogData"/>
"DiagnosticMonitorConfiguration": {
"overallQuotaInMB": 4096,
"sinks": "ApplicationInsights.MyLogData",
}
Limitações
- Canais apenas tipo de log e não contadores de desempenho. Se você especificar um canal com um elemento de contador de desempenho, ele será ignorado.
- O nível de log de um canal não pode exceder o nível de log do que está sendo coletado pelo diagnóstico do Azure. Por exemplo, você não pode coletar erros de log do aplicativo no elemento Logs e tentar enviar logs detalhados para o coletor do Application Insight. O atributo scheduledTransferLogLevelFilter sempre deve coletar logs iguais ou mais do que os logs que você está tentando enviar para um coletor.
- Não é possível enviar dados de blob coletados pela extensão de diagnóstico do Azure para o Application Insights. Por exemplo, qualquer coisa especificada no nó Diretórios . Para Crash Dumps, o despejo de memória real é enviado para o armazenamento de blob e apenas uma notificação de que o despejo de memória foi gerado é enviada para o Application Insights.
Passos Seguintes
- Saiba como exibir suas informações de diagnóstico do Azure no Application Insights.
- Use o PowerShell para habilitar a extensão de diagnóstico do Azure para seu aplicativo.
- Use o Visual Studio para habilitar a extensão de diagnóstico do Azure para seu aplicativo.