Application Insights для приложений ASP.NET Core
В этой статье описано, как включить и настроить Application Insights для приложения ASP.NET Core.
Примечание.
В следующей документации используется классический API Application Insights. Долгосрочный план Application Insights — сбор данных с помощью OpenTelemetry. Дополнительные сведения см. в статье "Включение Azure Monitor OpenTelemetry для .NET", Node.js, приложений Python и Java и нашей стратегии OpenTelemetry. Рекомендации по миграции доступны для .NET, Node.js и Python.
Application Insights может собирать из приложения ASP.NET Core следующие данные телеметрии:
- Запросы
- Зависимости
- Исключения
- Счетчики производительности
- Пакеты пульса
- Журналы
Мы используем пример приложения MVC. Если вы используете рабочую службу, используйте инструкции в Application Insights для приложений службы рабочей роли.
Доступно предложение .NET на основе OpenTelemetry. Дополнительные сведения см. в обзоре OpenTelemetry.
Примечание.
Поддержка приема ключей инструментирования будет завершена 31 марта 31, 2025 г. Прием ключей инструментирования будет и дальше осуществляться, но мы больше не будем предоставлять обновления или поддержку для этой функции. Перейдите на строки подключения, чтобы использовать новые возможности.
Примечание.
Если вы хотите использовать автономный поставщик ILogger, используйте Microsoft.Extensions.Logging.ApplicationInsight.
Поддерживаемые сценарии
Пакет SDK Application Insights для ASP.NET Core может отслеживать приложения независимо от того, где или как они выполняются. Если приложение работает и имеет сетевое подключение к Azure, можно собирать данные телеметрии. Мониторинг Application Insights поддерживается везде, где поддерживается .NET Core, и охватывает следующие сценарии:
- Операционная система: Windows, Linux или Mac.
- Метод размещения: внутри или вне процесса.
- Метод развертывания: зависит от платформы либо автономный.
- Веб-сервер: IIS или Kestrel
- Платформа размещения: функция веб-приложения службы приложение Azure, Azure Виртуальные машины, Docker и Служба Azure Kubernetes (AKS)
- Версия .NET: все официально поддерживаемые версии .NET, которые не доступны в предварительной версии
- Интегрированная среда разработки: Visual Studio, Visual Studio Code или командная строка
Необходимые компоненты
Необходимые компоненты:
- Работающее приложение ASP.NET Core. Если необходимо создать приложение ASP.NET Core, следуйте указаниям в руководстве по ASP.NET Core.
- Ссылка на поддерживаемую версию пакета NuGet Application Insights .
- Допустимая строка подключения Application Insights. Эта строка необходима для отправки любых данных телеметрии в Application Insights. Если необходимо создать новый ресурс Application Insights для получения строки подключения, см. статью Создание ресурса Application Insights.
Включение телеметрии на стороне сервера Application Insights (Visual Studio)
В случае Visual Studio для Mac используйте инструкции, указанные в руководстве. Эта процедура поддерживается только в версии Windows Visual Studio.
Откройте проект в Visual Studio.
Перейдите в раздел Проект>Добавить телеметрию Application Insights.
Нажмите кнопку приложение Azure Insights>Далее.
Выберите подписку и экземпляр Application Insights. Вы также можете создать новый экземпляр с помощью create new. Выберите Далее.
Добавьте или подтвердите строка подключения Application Insights. Он должен быть предварительно заполнен на основе выбранного на предыдущем шаге. Выберите Готово.
После добавления Application Insights в проект проверьте, чтобы использовался последний стабильный выпуск пакета SDK. Перейдите по пунктам Проект>Управление пакетами NuGet>Microsoft.ApplicationInsights.AspNetCore. При необходимости выберите Обновить.
Включение телеметрии на стороне сервера Application Insights (без Visual Studio)
Установите пакет NuGet для Application Insights SDK для ASP.NET Core.
Рекомендуется всегда использовать последнюю версию PowerShell. Ознакомьтесь с полными сведениями о выпуске пакета SDK в репозитории GitHub с открытым исходным кодом.
В следующем примере кода показаны изменения для добавления в файл проекта
.csproj
:<ItemGroup> <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.21.0" /> </ItemGroup>
Добавьте
AddApplicationInsightsTelemetry()
к классу илиprogram.cs
вашемуstartup.cs
классу. Выбор зависит от версии .NET Core.Добавьте
builder.Services.AddApplicationInsightsTelemetry();
после методаWebApplication.CreateBuilder()
классаProgram
, как показано в следующем примере:// This method gets called by the runtime. Use this method to add services to the container. var builder = WebApplication.CreateBuilder(args); // The following line enables Application Insights telemetry collection. builder.Services.AddApplicationInsightsTelemetry(); // This code adds other services for your application. builder.Services.AddMvc(); var app = builder.Build();
Задание строки подключения.
Хотя в аргументе
AddApplicationInsightsTelemetry
можно указать строка подключенияApplicationInsightsServiceOptions
, рекомендуется указать строка подключения в конфигурации. В следующем примере кода показано, как указать строку подключения вappsettings.json
. Обязательно скопируйтеappsettings.json
в корневую папку приложения во время публикации.{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", "ApplicationInsights": { "ConnectionString": "Copy connection string from Application Insights Resource Overview" } }
Кроме того, укажите строка подключения в переменной
APPLICATIONINSIGHTS_CONNECTION_STRING
среды илиApplicationInsights:ConnectionString
в файле конфигурации JSON.Например:
SET ApplicationInsights:ConnectionString = <Copy connection string from Application Insights Resource Overview>
SET APPLICATIONINSIGHTS_CONNECTION_STRING = <Copy connection string from Application Insights Resource Overview>
- Как правило,
APPLICATIONINSIGHTS_CONNECTION_STRING
используется в веб-приложения. Его также можно использовать во всех местах, где поддерживается этот пакет SDK.
Примечание.
Строка подключения, указанный в коде, выигрывает переменную
APPLICATIONINSIGHTS_CONNECTION_STRING
среды, которая выигрывает над другими параметрами.
Секреты пользователей и другие поставщики конфигурации
Если решено сохранить строку соединения в секретах пользователя ASP.NET Core или получить его от другого поставщика конфигурации, можно использовать перегрузку с параметром Microsoft.Extensions.Configuration.IConfiguration
. Примером параметра является services.AddApplicationInsightsTelemetry(Configuration);
.
В Microsoft.ApplicationInsights.AspNetCore
версии 2.15.0 и более поздних версий вызов services.AddApplicationInsightsTelemetry()
автоматически считывает строка подключения из Microsoft.Extensions.Configuration.IConfiguration
приложения. Явным образом не требуется предоставлять IConfiguration
.
Если в IConfiguration
конфигурация загружена из нескольких поставщиков, services.AddApplicationInsightsTelemetry
отдает предпочтение конфигурации от appsettings.json
независимо от порядка добавления поставщиков. services.AddApplicationInsightsTelemetry(IConfiguration)
Используйте метод для чтения конфигурации без IConfiguration
этого льготного обращенияappsettings.json
.
Запуск приложения
Запустите приложение и выполните запросы к нему. Теперь данные телеметрии должны передаваться в Application Insights. Пакет SDK для Application Insights автоматически собирает входящие веб-запросы в приложение, а также следующие данные телеметрии.
Динамические метрики
Динамические метрики можно использовать для быстрого проверки правильности настройки мониторинга приложений с помощью Application Insights. Данные телеметрии могут занять несколько минут, чтобы отображаться в портал Azure, но в области динамических метрик показано использование ЦП выполняющегося процесса практически в режиме реального времени. Она также может отображать другие данные телеметрии, такие как запросы, зависимости и трассировки.
Включение динамических метрик с помощью кода для любого приложения .NET
Примечание.
Динамические метрики включены по умолчанию при его подключении с помощью рекомендуемых инструкций для приложений .NET.
Чтобы настроить динамические метрики вручную, выполните приведенные действия.
- Установите пакет NuGet Microsoft.ApplicationInsights.PerfCounterCollector.
- В следующем примере кода консольного приложения показана настройка динамических метрик:
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;
// Create a TelemetryConfiguration instance.
TelemetryConfiguration config = TelemetryConfiguration.CreateDefault();
config.InstrumentationKey = "INSTRUMENTATION-KEY-HERE";
QuickPulseTelemetryProcessor quickPulseProcessor = null;
config.DefaultTelemetrySink.TelemetryProcessorChainBuilder
.Use((next) =>
{
quickPulseProcessor = new QuickPulseTelemetryProcessor(next);
return quickPulseProcessor;
})
.Build();
var quickPulseModule = new QuickPulseTelemetryModule();
// Secure the control channel.
// This is optional, but recommended.
quickPulseModule.AuthenticationApiKey = "YOUR-API-KEY-HERE";
quickPulseModule.Initialize(config);
quickPulseModule.RegisterTelemetryProcessor(quickPulseProcessor);
// Create a TelemetryClient instance. It is important
// to use the same TelemetryConfiguration here as the one
// used to set up live metrics.
TelemetryClient client = new TelemetryClient(config);
// This sample runs indefinitely. Replace with actual application logic.
while (true)
{
// Send dependency and request telemetry.
// These will be shown in live metrics.
// CPU/Memory Performance counter is also shown
// automatically without any additional steps.
client.TrackDependency("My dependency", "target", "http://sample",
DateTimeOffset.Now, TimeSpan.FromMilliseconds(300), true);
client.TrackRequest("My Request", DateTimeOffset.Now,
TimeSpan.FromMilliseconds(230), "200", true);
Task.Delay(1000).Wait();
}
Предыдущий пример предназначен для консольного приложения, но тот же код можно использовать в любых приложениях .NET. Если для автоматического сбора данных включены другие модули телеметрии телеметрии, важно убедиться, что та же конфигурация, используемая для инициализации этих модулей, используется для модуля динамических метрик.
Журналы ILogger
Конфигурация по умолчанию собирает журналы ILogger
Warning
и журналы с более важными сведениями. Дополнительные сведения см. в разделе Разделы справки настройка коллекции журналов ILogger?.
Зависимости
Сбор зависимостей по умолчанию включен. Отслеживание зависимостей в Application Insights объясняет зависимости, которые собираются автоматически, а также содержат шаги по отслеживанию вручную.
Счетчики производительности
Поддержка счетчиков производительности в приложениях ASP.NET Core ограниченна.
- Пакеты SDK версии 2.4.1 и более поздних версий собирают счетчики производительности, если приложение работает в веб-приложения (Windows).
- Пакеты SDK версии 2.7.1 и более поздних собирают счетчики производительности, если приложение выполняется в Windows и предназначено для
netstandard2.0
или более поздних версий. - Для приложений, предназначенных для платформа .NET Framework, все версии пакета SDK поддерживают счетчики производительности.
- Пакет SDK версии 2.8.0 и более поздних версий поддерживает счетчик ЦП и памяти в Linux. В Linux не поддерживаются никакие другие счетчики. Чтобы получить системные счетчики в Linux и других средах, отличных от Windows, используйте EventCounters.
EventCounter
По умолчанию EventCounterCollectionModule
включен. Сведения о том, как настроить список собираемых счетчиков, см. в разделе Знакомство с объектами EventCounter.
Обогащение данных по протоколу HTTP
HttpContext.Features.Get<RequestTelemetry>().Properties["myProp"] = someData
Включение телеметрии на стороне клиента для веб-приложений
Предыдущих шагов достаточно, чтобы помочь начать сбор данных телеметрии на стороне сервера. Если у приложения есть клиентские компоненты, выполните следующие действия, чтобы начать сбор данных телеметрии использования с помощью внедрения скрипта загрузчика пакета SDK JavaScript (Web) по конфигурации.
В
_ViewImports.cshtml
добавьте внедрение.@inject Microsoft.ApplicationInsights.AspNetCore.JavaScriptSnippet JavaScriptSnippet
В
_Layout.cshtml
вставьтеHtmlHelper
в конец раздела<head>
, но перед всеми другими сценариями. Если требуется выдавать отчет обо всех пользовательских данных телеметрии JavaScript со страницы, вставьте ее после этого фрагмента кода:@Html.Raw(JavaScriptSnippet.FullScript) </head>
В качестве альтернативы использованию FullScript
ScriptBody
доступен пакет SDK Application Insights для ASP.NET Core версии 2.14. Используйте параметр ScriptBody
, если необходимо управлять тегом <script>
для задания политики безопасности содержимого:
<script> // apply custom changes to this script tag.
@Html.Raw(JavaScriptSnippet.ScriptBody)
</script>
Ранее упомянутые имена файлов .cshtml
относятся к шаблону приложения MVC по умолчанию. В конечном счете, если вы хотите правильно включить мониторинг на стороне клиента для приложения, скрипт загрузчика пакета SDK JavaScript JavaScript (Web) должен отображаться в <head>
разделе каждой страницы приложения, которую вы хотите отслеживать. Добавьте скрипт _Layout.cshtml
загрузчика пакета SDK JavaScript (Web) JavaScript в шаблон приложения, чтобы включить мониторинг на стороне клиента.
Если проект не включает в себя _Layout.cshtml
, вы по-прежнему можете добавить клиентский мониторинг , добавив скрипт загрузчика пакета SDK JavaScript (Web) JavaScript в эквивалентный файл, который управляет <head>
всеми страницами в приложении. Кроме того, можно добавить скрипт загрузчика пакета SDK JavaScript (Web) на несколько страниц, но не рекомендуется.
Примечание.
Внедрение JavaScript открывает возможности для настройки по умолчанию. Если для настройки строка подключения требуется настройка, необходимо удалить автоматическое внедрение, как описано и вручную добавить пакет SDK JavaScript.
Настройка SDK Application Insights
Можно настроить SDK Application Insights для ASP.NET Core, чтобы изменить конфигурацию по умолчанию. Пользователи Application Insights ASP.NET SDK могут быть знакомы с изменением конфигурации с помощью ApplicationInsights.config
или путем изменения TelemetryConfiguration.Active
. Для ASP.NET Core почти все изменения конфигурации выполняются в методе ConfigureServices()
класса Startup.cs
, если не указано иное. Дополнительные сведения см. в следующих разделах.
Примечание.
В приложениях ASP.NET Core изменение конфигурации путем модификации TelemetryConfiguration.Active
не поддерживается.
Использование ApplicationInsightsServiceOptions
Вы можете изменить несколько стандартных параметров, передавая ApplicationInsightsServiceOptions
в AddApplicationInsightsTelemetry
, как в следующем примере.
var builder = WebApplication.CreateBuilder(args);
var aiOptions = new Microsoft.ApplicationInsights.AspNetCore.Extensions.ApplicationInsightsServiceOptions();
// Disables adaptive sampling.
aiOptions.EnableAdaptiveSampling = false;
// Disables live metrics (also known as QuickPulse).
aiOptions.EnableQuickPulseMetricStream = false;
builder.Services.AddApplicationInsightsTelemetry(aiOptions);
var app = builder.Build();
В этой таблице содержится полный список параметров ApplicationInsightsServiceOptions
.
Параметр | Description | По умолч. |
---|---|---|
EnablePerformanceCounterCollectionModule | Включение и отключение PerformanceCounterCollectionModule . |
Истина |
EnableRequestTrackingTelemetryModule | Включение и отключение RequestTrackingTelemetryModule . |
Истина |
EnableEventCounterCollectionModule | Включение и отключение EventCounterCollectionModule . |
Истина |
EnableDependencyTrackingTelemetryModule | Включение и отключение DependencyTrackingTelemetryModule . |
Истина |
EnableAppServicesHeartbeatTelemetryModule | Включение и отключение AppServicesHeartbeatTelemetryModule . |
Истина |
EnableAzureInstanceMetadataTelemetryModule | Включение и отключение AzureInstanceMetadataTelemetryModule . |
Истина |
EnableQuickPulseMetricStream | Включение и отключение функции LiveMetrics. | Истина |
EnableAdaptiveSampling | Включение и отключение адаптивной выборки. | Истина |
EnableHeartbeat | Включение и отключение функции пульса. Он периодически (15-мин по умолчанию) отправляет пользовательскую метрику HeartbeatState с информацией о среде выполнения, такой как версия .NET и сведения о среде Azure, если это применимо. |
Истина |
AddAutoCollectedMetricExtractor | Включение и отключение AutoCollectedMetrics extractor . Этот обработчик телеметрии отправляет предварительно подготовленные метрики о запросах и зависимостях перед началом выборки. |
Истина |
RequestCollectionOptions.TrackExceptions | Включение и отключение отчетов об необработанных отслеживания исключений модулем сбора запросов. | False в netstandard2.0 (так как исключения отслеживаются с ApplicationInsightsLoggerProvider ). Значение True в противном случае. |
EnableDiagnosticsTelemetryModule | Включение и отключение DiagnosticsTelemetryModule . Отключение приводит к пропускам следующих параметров: EnableHeartbeat , EnableAzureInstanceMetadataTelemetryModule и EnableAppServicesHeartbeatTelemetryModule . |
Истина |
Наиболее актуальный список см. в разделе Настраиваемые параметры в ApplicationInsightsServiceOptions
.
Рекомендация по настройке пакета SDK для Microsoft.ApplicationInsights.AspNetCore 2.15.0 и выше
В пакете SDK Microsoft.ApplicationInsights.AspNetCore версии 2.15.0 и более поздних версий настройте все параметры, доступные в ApplicationInsightsServiceOptions
, в том числе ConnectionString
. Используйте экземпляр приложения IConfiguration
. Параметры должны находиться в разделе ApplicationInsights
, как показано в следующем примере. Следующий раздел из appsettings.json настраивает строка подключения и отключает адаптивную выборку и коллекцию счетчиков производительности.
{
"ApplicationInsights": {
"ConnectionString": "Copy connection string from Application Insights Resource Overview",
"EnableAdaptiveSampling": false,
"EnablePerformanceCounterCollectionModule": false
}
}
Если используется builder.Services.AddApplicationInsightsTelemetry(aiOptions)
для ASP.NET Core 6.0 или services.AddApplicationInsightsTelemetry(aiOptions)
для ASP.NET Core 3.1 и более ранних версий, он переопределяет параметры из Microsoft.Extensions.Configuration.IConfiguration
.
Образец
Пакет SDK Application Insights для ASP.NET Core поддерживает как фиксированную, так и адаптивную выборку. Адаптивная выборка включена по умолчанию.
Дополнительные сведения см. в статье Настройка адаптивной выборки для приложений ASP.NET Core.
Добавление telemetryInitializers
Чтобы расширить данные телеметрии с дополнительными сведениями, используйте инициализаторы телеметрии.
Добавьте новые TelemetryInitializer
в контейнер DependencyInjection
, как показано в следующем коде. Пакет SDK автоматически принимает все TelemetryInitializer
, добавляемые в контейнер DependencyInjection
.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();
var app = builder.Build();
Примечание.
builder.Services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();
работает с простыми инициализаторами. Для других builder.Services.AddSingleton(new MyCustomTelemetryInitializer() { fieldName = "myfieldName" });
требуется.
Удаление телеметрииInitializers
Инициализаторы телеметрии представлены по умолчанию. Чтобы удалить все или некоторые инициализаторы телеметрии, используйте следующий пример кода после вызова метода AddApplicationInsightsTelemetry()
.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddApplicationInsightsTelemetry();
// Remove a specific built-in telemetry initializer
var tiToRemove = builder.Services.FirstOrDefault<ServiceDescriptor>
(t => t.ImplementationType == typeof(AspNetCoreEnvironmentTelemetryInitializer));
if (tiToRemove != null)
{
builder.Services.Remove(tiToRemove);
}
// Remove all initializers
// This requires importing namespace by using Microsoft.Extensions.DependencyInjection.Extensions;
builder.Services.RemoveAll(typeof(ITelemetryInitializer));
var app = builder.Build();
Добавление процессоров телеметрии
Вы можете добавить пользовательские обработчики данных телеметрии в TelemetryConfiguration
с помощью метода расширения AddApplicationInsightsTelemetryProcessor
в IServiceCollection
. Обработчики данных телеметрии используются в сценариях расширенной фильтрации. Используйте следующий пример:
var builder = WebApplication.CreateBuilder(args);
// ...
builder.Services.AddApplicationInsightsTelemetry();
builder.Services.AddApplicationInsightsTelemetryProcessor<MyFirstCustomTelemetryProcessor>();
// If you have more processors:
builder.Services.AddApplicationInsightsTelemetryProcessor<MySecondCustomTelemetryProcessor>();
var app = builder.Build();
Настройка или удаление по умолчанию TelemetryModules
Application Insights автоматически собирает данные телеметрии о конкретных рабочих нагрузках, не требуя ручного отслеживания пользователем.
Следующие модули автоматического сбора данных включены по умолчанию. Эти модули отвечают за автоматический сбор данных телеметрии. Их можно отключать или настраивать для изменения поведения по умолчанию.
RequestTrackingTelemetryModule
: собирает requestTelemetry из входящих веб-запросов.DependencyTrackingTelemetryModule
: собирает значение DependencyTelemetry из исходящих HTTP-вызовов и вызовов SQL.PerformanceCollectorModule
: собирает средства производительности Windows PerformanceCounters.QuickPulseTelemetryModule
: собирает данные телеметрии для отображения в области динамических метрик.AppServicesHeartbeatTelemetryModule
: собирает пульс (которые отправляются как пользовательские метрики), о среде Служба приложений, в которой размещено приложение.AzureInstanceMetadataTelemetryModule
: собирает пульса (которые отправляются как пользовательские метрики), о среде виртуальной машины Azure, в которой размещено приложение.EventCounterCollectionModule
: собирает eventCounters. Этот модуль является новой функцией и доступен в пакете SDK версии 2.8.0 и более поздних версий.
Чтобы настроить любой параметр по умолчанию TelemetryModule
, используйте метод ConfigureTelemetryModule<T>
IServiceCollection
расширения, как показано в следующем примере:
using Microsoft.ApplicationInsights.DependencyCollector;
using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddApplicationInsightsTelemetry();
// The following configures DependencyTrackingTelemetryModule.
// Similarly, any other default modules can be configured.
builder.Services.ConfigureTelemetryModule<DependencyTrackingTelemetryModule>((module, o) =>
{
module.EnableW3CHeadersInjection = true;
});
// The following removes all default counters from EventCounterCollectionModule, and adds a single one.
builder.Services.ConfigureTelemetryModule<EventCounterCollectionModule>((module, o) =>
{
module.Counters.Add(new EventCounterCollectionRequest("System.Runtime", "gen-0-size"));
});
// The following removes PerformanceCollectorModule to disable perf-counter collection.
// Similarly, any other default modules can be removed.
var performanceCounterService = builder.Services.FirstOrDefault<ServiceDescriptor>(t => t.ImplementationType == typeof(PerformanceCollectorModule));
if (performanceCounterService != null)
{
builder.Services.Remove(performanceCounterService);
}
var app = builder.Build();
В версии 2.12.2 и более поздних ApplicationInsightsServiceOptions
содержит простой способ отключения всех модулей по умолчанию.
Настройка канала телеметрии
Каналом телеметрии по умолчанию является ServerTelemetryChannel
. В следующем примере показано, как перегрузить его.
using Microsoft.ApplicationInsights.Channel;
var builder = WebApplication.CreateBuilder(args);
// Use the following to replace the default channel with InMemoryChannel.
// This can also be applied to ServerTelemetryChannel.
builder.Services.AddSingleton(typeof(ITelemetryChannel), new InMemoryChannel() {MaxTelemetryBufferCapacity = 19898 });
builder.Services.AddApplicationInsightsTelemetry();
var app = builder.Build();
Примечание.
Если вы хотите очистить буфер, см. раздел "Очистка данных". Например, может потребоваться очистить буфер, если вы используете пакет SDK в приложении, которое завершает работу.
Динамическое отключение телеметрии
Чтобы отключить данные телеметрии по условию и динамически, можно разрешить экземпляр TelemetryConfiguration
с контейнером внедрения зависимостей ASP.NET Core в любом месте кода и установить для него флаг DisableTelemetry
.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddApplicationInsightsTelemetry();
// any custom configuration can be done here:
builder.Services.Configure<TelemetryConfiguration>(x => x.DisableTelemetry = true);
var app = builder.Build();
Предыдущий пример кода предотвращает отправку данных телеметрии в Application Insights. Указанные выше действия не препятствуют работе любых модулей автоматического сбора данных по сбору данных телеметрии. Если вы хотите удалить определенный модуль автоколлекции, см. раздел "Удалить модуль телеметрии".
Часто задаваемые вопросы
В этом разделы приводятся ответы на часто задаваемые вопросы.
Поддерживает ли Application Insights ASP.NET Core 3.1?
ASP.NET Core 3.1 больше не поддерживается корпорацией Майкрософт.
Пакет SDK Application Insights для ASP.NET Core версии 2.8.0 и Visual Studio 2019 или более поздней версии можно использовать с приложениями ASP.NET Core 3.1.
Как можно отследить данные телеметрии, сбор которых не происходит автоматически?
Получите экземпляр TelemetryClient
с помощью внедрения конструктора и вызовите необходимый TrackXXX()
метод на нем. Не рекомендуется создавать новые экземпляры TelemetryClient
или TelemetryConfiguration
в приложении ASP.NET Core. Одиночный экземпляр TelemetryClient
уже зарегистрирован в контейнере DependencyInjection
, который использует TelemetryConfiguration
остальные данные телеметрии. Создайте новый TelemetryClient
экземпляр только в том случае, если он нуждается в конфигурации, отдельной от остальной части телеметрии.
В следующем примере показано, как отслеживать дополнительные данные телеметрии из контроллера.
using Microsoft.ApplicationInsights;
public class HomeController : Controller
{
private TelemetryClient telemetry;
// Use constructor injection to get a TelemetryClient instance.
public HomeController(TelemetryClient telemetry)
{
this.telemetry = telemetry;
}
public IActionResult Index()
{
// Call the required TrackXXX method.
this.telemetry.TrackEvent("HomePageRequested");
return View();
}
Дополнительные сведения о настраиваемых отчетах данных в Application Insights см. в разделе Справочник по API настраиваемых метрик Application Insights. Аналогичный подход можно использовать для отправки пользовательских метрик в Application Insights с помощью API GetMetric.
Разделы справки записи текста запроса и ответа в телеметрии?
ASP.NET Core поддерживает встроенную поддержку ведения журнала сведений о HTTP-запросе и ответе (включая текст) через ILogger
. Рекомендуется использовать это. Это может привести к значительному увеличению затрат (затрат на производительность и выставление счетов Application Insights), поэтому тщательно оцените риски перед использованием этой функции.
Как настроить сбор журналов ILogger?
По умолчанию для Application Insights используется только запись предупреждений и более серьезных журналов.
Захват сведений и менее серьезных журналов путем изменения конфигурации ведения журнала для поставщика Application Insights следующим образом.
{
"Logging": {
"LogLevel": {
"Default": "Information"
},
"ApplicationInsights": {
"LogLevel": {
"Default": "Information"
}
}
},
"ApplicationInsights": {
"ConnectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000"
}
}
Важно отметить, что в следующем примере поставщик Application Insights не будет собирать журналы Information
. Он не фиксирует его, поскольку пакет SDK добавляет фильтр ведения журнала по умолчанию, который дает указание ApplicationInsights
записывать только журналы с уровнем серьезности Warning
и выше. Для Application Insights требуется явное переопределение.
{
"Logging": {
"LogLevel": {
"Default": "Information"
}
}
}
Дополнительные сведения см. в статье, посвященной конфигурации ILogger.
Некоторые шаблоны Visual Studio использовали метод расширения UseApplicationInsights() в IWebHostBuilder для включения Application Insights. Является ли этот способ использования по-прежнему допустимым?
Метод расширения UseApplicationInsights()
по-прежнему поддерживается, однако он отмечен как устаревший в пакете SDK для Application Insights версии 2.8.0 и последующих. Он удален в следующей основной версии пакета SDK. Чтобы включить телеметрию Application Insights, используйте AddApplicationInsightsTelemetry()
ее, так как она предоставляет перегрузки для управления какой-то конфигурацией. Кроме того, в приложениях ASP.NET Core 3.X services.AddApplicationInsightsTelemetry()
— единственный способ включить Application Insights.
Я развертываю приложение ASP.NET Core в веб-приложениях. Следует ли мне по-прежнему включать расширение Application Insights из веб-приложений?
Если пакет SDK устанавливается во время сборки, как показано в этой статье, то не нужно включать расширение Application Insights на портале Службы приложений. Если расширение установлено, оно отключается при обнаружении уже добавленного пакета SDK. Если включить Application Insights из расширения, то не потребуется устанавливать и обновлять пакет SDK. Но если вы включили Application Insights, следуя инструкциям в этой статье, то достигнете большей гибкости, поскольку:
- Данные телеметрии Application Insights продолжают работать в:
- со всеми операционными системами, включая Windows, Linux и Mac;
- во всех режимах публикации, включая автономные или зависящие от платформы;
- со всеми целевыми платформами, включая полную платформу .NET Framework;
- Все варианты размещения, включая веб-приложения, виртуальные машины, Linux, контейнеры, AKS и размещение, отличные от Azure.
- Все версии .NET Core, включая предварительные версии.
- Можно просматривать данные телеметрии локально при отладке из Visual Studio.
- Можно отслеживать дополнительные пользовательские данные телеметрии с помощью API
TrackXXX()
. - Вы полностью контролируете конфигурацию.
Можно ли включить мониторинг Application Insights с помощью таких средств, как агент Azure Monitor Application Insights (ранее монитор состояния версии 2)?
Да. В Application Insights Agent 2.0.0-beta1 и более поздних версиях поддерживаются приложения ASP.NET Core, размещенные в IIS.
Если я запускаю приложение в Linux, все ли функции будут поддерживаться?
Да. Поддержка функций для пакета SDK одинакова на всех платформах, за исключением следующих:
- Пакет SDK собирает счетчики событий в Linux, поскольку счетчики производительности поддерживаются только в Windows. Большинство метрик одинаковы.
Поддерживается ли этот пакет SDK для рабочих служб?
№ Для рабочих служб используйте Application Insights для рабочих служб (не HTTP-приложения ).
Как удалить пакет SDK?
Чтобы удалить Application Insights, необходимо удалить пакеты NuGet и ссылки из API в приложении. Пакеты NuGet можно удалить с помощью диспетчер пакетов NuGet в Visual Studio.
Примечание.
Эти инструкции предназначены для удаления пакета SDK для ASP.NET Core. Если вам нужно удалить пакет SDK ASP.NET, см. статью "Как удалить пакет SDK для ASP.NET?".
- Удалите пакет Microsoft.ApplicationInsights.AspNetCore с помощью диспетчер пакетов NuGet.
- Чтобы полностью удалить Application Insights, проверьте и вручную удалите добавленный код или файлы вместе с любыми вызовами API, добавленными в проект. Дополнительные сведения см. в статье "Что создается при добавлении пакета SDK Application Insights?".
Что создается при добавлении пакета SDK Application Insights?
При добавлении Application Insights в проект создаются файлы и добавляется код в некоторые файлы. Удаление пакетов NuGet не всегда удаляет файлы и код. Чтобы полностью удалить Application Insights, необходимо проверить и вручную удалить добавленный код или файлы вместе с любыми вызовами API, добавленными в проект.
При добавлении телеметрии Application Insights в шаблон проекта Visual Studio ASP.NET Core добавляется следующий код:
[Имя вашего проекта].csproj
<PropertyGroup> <TargetFramework>netcoreapp3.1</TargetFramework> <ApplicationInsightsResourceId>/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Default-ApplicationInsights-EastUS/providers/microsoft.insights/components/WebApplication4core</ApplicationInsightsResourceId> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.12.0" /> </ItemGroup> <ItemGroup> <WCFMetadata Include="Connected Services" /> </ItemGroup>
Appsettings.json:
"ApplicationInsights": { "InstrumentationKey": "00000000-0000-0000-0000-000000000000"
ConnectedService.json
{ "ProviderId": "Microsoft.ApplicationInsights.ConnectedService.ConnectedServiceProvider", "Version": "16.0.0.0", "GettingStartedDocument": { "Uri": "https://go.microsoft.com/fwlink/?LinkID=798432" } }
Startup.cs
public void ConfigureServices(IServiceCollection services) { services.AddRazorPages(); services.AddApplicationInsightsTelemetry(); // This is added }
Как отключить корреляцию телеметрии?
Чтобы отключить корреляцию телеметрии в коде, см <ExcludeComponentCorrelationHttpHeadersOnDomains>
. в application Insights для консольных приложений.
Устранение неполадок
См. специальные инструкции по устранению неполадок.
Тестирование подключения между узлом приложения и службой приема
Пакеты SDK и агенты Application Insights отправляют данные телеметрии для приема в качестве вызовов REST к конечным точкам приема. Вы можете проверить подключение с веб-сервера или хост-компьютера приложения к конечным точкам службы приема с помощью необработанных клиентов REST из Команд PowerShell или curl. Сведения об устранении неполадок с отсутствующими данными телеметрии приложений в Azure Monitor Application Insights.
Пакет SDK с открытым исходным кодом
Чтение кода и дополнительные наработки.
Последние обновления и исправления ошибок см. в заметках о выпуске.
Заметки о выпуске
Для версии 2.12 и более поздних: пакеты SDK для .NET (включая ASP.NET, ASP.NET Core и адаптеры ведения журнала).
Обновления службы также обобщают основные улучшения Application Insights.
Следующие шаги
- Изучите потоки пользователей, чтобы понять, как пользователи перемещаются через приложение.
- Настройте коллекцию моментальных снимков для отображения состояния исходного кода и переменных в момент создания исключения.
- Для получения более четкого представления о производительности и использовании приложения используйте API для отправки собственных событий и метрик.
- Используйте тесты доступности, чтобы постоянно проверять работу приложения из всех точек мира.
- Узнайте о внедрении зависимостей в ASP.NET Core.