Отправка в Application Insights диагностических данных облачной службы, виртуальной машины или Service Fabric
Облачные службы, виртуальные машины, масштабируемые наборы виртуальных машин и Service Fabric используют расширение системы диагностики Azure для сбора данных. Система диагностики Azure отправляет данные в таблицы службы хранилища Azure. Тем не менее эти данные можно также полностью или частично передавать в другие расположения, используя расширение системы диагностики Azure 1.5 или более поздней версии.
В этой статье описывается, как отправлять данные из расширения системы диагностики Azure в Application Insights.
Описание конфигурации системы диагностики
В расширении Azure диагностика 1.5 появились приемники, которые являются дополнительными расположениями, где можно отправлять диагностические данные.
Ниже приведен пример конфигурации приемника для 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"
}
]
}
}
]
}
Атрибут имени приемника — это строковое значение, однозначно определяющее приемник.
Элемент ApplicationInsights указывает ключ инструментирования ресурса Application Insights, в который отправляется Диагностика Azure.
- Если у вас нет существующего ресурса Application Insights, см. статью "Создание ресурса Application Insights".
- Если вы разрабатываете облачную службу с помощью azure SDK 2.8 и более поздних версий, этот ключ инструментирования автоматически заполняется. Значение основано на параметре конфигурации службы APPINSIGHTS_INSTRUMENTATIONKEY при упаковке проекта облачной службы, см. статью "Использование Application Insights с Облачные службы".
Элемент Channels содержит один или несколько элементов Channel.
- Атрибут name однозначно ссылается на этот канал.
- Атрибут Loglevel позволяет указать уровень ведения журнала для канала. Доступные уровни журнала в порядке наименьшей информации:
- Подробный
- Информация
- Предупреждение
- Ошибка
- Критически важно
Канал действует как фильтр и позволяет выбрать конкретные уровни ведения журнала для отправки в приемник. Например, можно собирать подробные журналы и отправлять их в хранилище, а в приемник отправлять только журнал ошибок.
Эта взаимосвязь показана на следующем рисунке.
На следующем рисунке показаны значения конфигурации и как они работают. В конфигурацию можно включить несколько приемников на разных уровнях иерархии. Приемник, указанный на верхнем уровне, действует как глобальный параметр, а приемник, указанный на уровне отдельного элемента, действует как переопределение для этого глобального параметра.
Полный пример конфигурации приемника
Ниже приведен полный пример общедоступного файла конфигурации, который:
- Отправляет все ошибки в Application Insights (указан на узле DiagnosticMonitorConfiguration ).
- Также отправляет подробные журналы уровня для журналов приложений (указанных на узле 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"
}
]
}
}
]
}
}
В предыдущей конфигурации приведенные ниже строки имеют следующий смысл.
Отправка всех данных Azure диагностика собирает
<DiagnosticMonitorConfiguration overallQuotaInMB="4096" sinks="ApplicationInsights">
"DiagnosticMonitorConfiguration": {
"overallQuotaInMB": 4096,
"sinks": "ApplicationInsights",
}
Отправка в приемник Application Insights только журналов ошибок
<DiagnosticMonitorConfiguration overallQuotaInMB="4096" sinks="ApplicationInsights.MyTopDiagdata">
"DiagnosticMonitorConfiguration": {
"overallQuotaInMB": 4096,
"sinks": "ApplicationInsights.MyTopDiagData",
}
Отправка подробных журналов приложений в Application Insights
<Logs scheduledTransferPeriod="PT1M" scheduledTransferLogLevelFilter="Verbose" sinks="ApplicationInsights.MyLogData"/>
"DiagnosticMonitorConfiguration": {
"overallQuotaInMB": 4096,
"sinks": "ApplicationInsights.MyLogData",
}
Ограничения
- Каналы могут вести журнал типов, но не счетчиков производительности. Если указать канал с элементом счетчика производительности, он игнорируется.
- Уровень журнала для канала не может превышать уровень журнала для того, что собирает azure диагностика. Например, вы не можете собирать ошибки журнала приложений в элементе Logs и пытаться отправить подробные журналы в приемник Application Insights. Атрибут scheduledTransferLogLevelFilter всегда должен собирать равные или более журналы, чем журналы, которые вы пытаетесь отправить в приемник.
- Невозможно отправлять данные BLOB-объектов, собранные расширением Azure диагностика в Application Insights. Например, данные, указанные в узле Directories. Для аварийных дампов фактический дамп аварийного сбоя отправляется в хранилище BLOB-объектов и отправляется только уведомление о том, что аварийный дамп был создан в Application Insights.
Next Steps
- Узнайте, как просматривать данные диагностики Azure в Application Insights.
- Используйте PowerShell, чтобы включить расширение диагностики Azure для вашего приложения.
- Используйте Visual Studio, чтобы включить расширение Azure диагностика для приложения.