Application Insights для приложений Worker Service (не HTTP)
Пакет SDK Application Insights для рабочей службы — это новый пакет SDK, который лучше всего подходит для рабочих нагрузок, отличных от HTTP, таких как обмен сообщениями, фоновые задачи и консольные приложения. Эти типы приложений не имеют представления о входящих HTTP-запросах, таких как традиционное веб-приложение ASP.NET/ASP.NET Core. По этой причине использование пакетов Application Insights для ASP.NET или ASP.NET основных приложений не поддерживается.
Примечание.
В следующей документации используется классический API Application Insights. Долгосрочный план Application Insights — сбор данных с помощью OpenTelemetry. Дополнительные сведения см. в статье "Включение Azure Monitor OpenTelemetry для .NET", Node.js, приложений Python и Java и нашей стратегии OpenTelemetry. Рекомендации по миграции доступны для .NET, Node.js и Python.
Новый пакет SDK сам не выполняет сбор данных телеметрии. Вместо этого он содержит другие известные автоматические сборщики Application Insights, такие как DependencyCollector, PerfCounterCollector и ApplicationInsightsLoggingProvider. Этот пакет SDK предоставляет методы расширения для IServiceCollection
включения и настройки коллекции телеметрии.
Поддерживаемые сценарии
Пакет SDK Application Insights для службы Worker Service лучше всего подходит для приложений, работающих не по протоколу HTTP, независимо от того, где или как они выполняются. Если приложение работает и имеет сетевое подключение к Azure, можно собирать данные телеметрии. Мониторинг Application Insights поддерживается везде, где поддерживается .NET Core. Этот пакет можно использовать в недавно появившейся рабочей службе .NET Core, фоновых задачах в ASP.NET Core и консольных приложениях, таких как .NET Core и платформа .NET Framework.
Необходимые компоненты
У вас должен быть действительный строка подключения Application Insights. Эта строка необходима для отправки любых данных телеметрии в Application Insights. Если необходимо создать новый ресурс Application Insights для получения строка подключения, см. статью "Строки подключения".
Примечание.
Поддержка приема ключей инструментирования будет завершена 31 марта 31, 2025 г. Прием ключей инструментирования будет и дальше осуществляться, но мы больше не будем предоставлять обновления или поддержку для этой функции. Перейдите на строки подключения, чтобы использовать новые возможности.
Использование пакета SDK Application Insights для рабочей службы
Установите в приложение пакет Microsoft.ApplicationInsights.WorkerService. В следующем фрагменте кода показаны изменения, которые необходимо добавить в файл проекта
.csproj
:<ItemGroup> <PackageReference Include="Microsoft.ApplicationInsights.WorkerService" Version="2.22.0" /> </ItemGroup>
Настройте строка подключения в переменной
APPLICATIONINSIGHTS_CONNECTION_STRING
среды или конфигурации (appsettings.json
).Получение экземпляра
ILogger
илиTelemetryClient
экземпляра из контейнера внедрения зависимостей (DI) путем вызоваserviceProvider.GetRequiredService<TelemetryClient>();
или использования внедрения конструктора. На этом шаге будет активирована настройкаTelemetryConfiguration
и автоматическое сбор модулей.
Конкретные инструкции для каждого типа приложений приведены в следующих разделах.
Приложение службы рабочей роли .NET Core
Полный пример предоставляется на веб-сайте NuGet.
Создайте проект рабочей службы с помощью нового шаблона проекта Visual Studio или командной строки
dotnet new worker
.Добавьте пакет Microsoft.ApplicationInsights.WorkerService в приложение.
Добавьте
services.AddApplicationInsightsTelemetryWorkerService();
в методCreateHostBuilder()
классаProgram.cs
, как показано в следующем примере.public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureServices((hostContext, services) => { services.AddHostedService<Worker>(); services.AddApplicationInsightsTelemetryWorkerService(); });
Измените значение
Worker.cs
в следующем примере:using Microsoft.ApplicationInsights; using Microsoft.ApplicationInsights.DataContracts; public class Worker : BackgroundService { private readonly ILogger<Worker> _logger; private TelemetryClient _telemetryClient; private static HttpClient _httpClient = new HttpClient(); public Worker(ILogger<Worker> logger, TelemetryClient tc) { _logger = logger; _telemetryClient = tc; } protected override async Task ExecuteAsync(CancellationToken stoppingToken) { while (!stoppingToken.IsCancellationRequested) { _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); using (_telemetryClient.StartOperation<RequestTelemetry>("operation")) { _logger.LogWarning("A sample warning message. By default, logs with severity Warning or higher is captured by Application Insights"); _logger.LogInformation("Calling bing.com"); var res = await _httpClient.GetAsync("https://bing.com"); _logger.LogInformation("Calling bing completed with status:" + res.StatusCode); _telemetryClient.TrackEvent("Bing call event completed"); } await Task.Delay(1000, stoppingToken); } } }
Задание строки подключения.
Примечание.
Рекомендуется указать строку подключения в конфигурации. В следующем примере кода показано, как указать строку подключения в
appsettings.json
. Обязательно скопируйтеappsettings.json
в корневую папку приложения во время публикации.{ "ApplicationInsights": { "ConnectionString" : "InstrumentationKey=00000000-0000-0000-0000-000000000000;" }, "Logging": { "LogLevel": { "Default": "Warning" } } }
Либо укажите строку подключения в переменной APPLICATIONINSIGHTS_CONNECTION_STRING
среды.
Как правило, задает строка подключения для приложений, APPLICATIONINSIGHTS_CONNECTION_STRING
развернутых в веб-приложениях в качестве веб-заданий.
Примечание.
Строка подключения, указанная в коде, имеет приоритет над переменной среды APPLICATIONINSIGHTS_CONNECTION_STRING
, которая имеет приоритет над другими параметрами.
Фоновые задачи ASP.NET Core с размещенными службами
В этом документе описывается создание фоновых задач в приложении ASP.NET Core.
Полный пример представлен на этой странице GitHub.
Установите в приложение пакет Microsoft.ApplicationInsights.WorkerService.
Добавьте
services.AddApplicationInsightsTelemetryWorkerService();
в методConfigureServices()
, как показано в следующем примере:public static async Task Main(string[] args) { var host = new HostBuilder() .ConfigureAppConfiguration((hostContext, config) => { config.AddJsonFile("appsettings.json", optional: true); }) .ConfigureServices((hostContext, services) => { services.AddLogging(); services.AddHostedService<TimedHostedService>(); // connection string is read automatically from appsettings.json services.AddApplicationInsightsTelemetryWorkerService(); }) .UseConsoleLifetime() .Build(); using (host) { // Start the host await host.StartAsync(); // Wait for the host to shutdown await host.WaitForShutdownAsync(); } }
Следующий код предназначен для
TimedHostedService
того, где находится логика фоновой задачи:using Microsoft.ApplicationInsights; using Microsoft.ApplicationInsights.DataContracts; public class TimedHostedService : IHostedService, IDisposable { private readonly ILogger _logger; private Timer _timer; private TelemetryClient _telemetryClient; private static HttpClient httpClient = new HttpClient(); public TimedHostedService(ILogger<TimedHostedService> logger, TelemetryClient tc) { _logger = logger; this._telemetryClient = tc; } public Task StartAsync(CancellationToken cancellationToken) { _logger.LogInformation("Timed Background Service is starting."); _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(1)); return Task.CompletedTask; } private void DoWork(object state) { _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); using (_telemetryClient.StartOperation<RequestTelemetry>("operation")) { _logger.LogWarning("A sample warning message. By default, logs with severity Warning or higher is captured by Application Insights"); _logger.LogInformation("Calling bing.com"); var res = httpClient.GetAsync("https://bing.com").GetAwaiter().GetResult(); _logger.LogInformation("Calling bing completed with status:" + res.StatusCode); _telemetryClient.TrackEvent("Bing call event completed"); } } }
Задание строки подключения. Используйте то же самое
appsettings.json
из предыдущего примера рабочей службы .NET .
Консольное приложение .NET Core/платформа .NET Framework
Как упоминалось в начале этой статьи, новый пакет можно использовать для включения телеметрии Application Insights даже из обычного консольного приложения. Этот пакет предназначен netstandard2.0
для консольных приложений в .NET Core или более поздней версии, а также платформа .NET Framework или более поздней версии.
Полный пример представлен на этой странице GitHub.
Установите в приложение пакет Microsoft.ApplicationInsights.WorkerService.
Измените Program.cs , как показано в следующем примере:
using Microsoft.ApplicationInsights; using Microsoft.ApplicationInsights.DataContracts; using Microsoft.ApplicationInsights.WorkerService; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using System; using System.Net.Http; using System.Threading.Tasks; namespace WorkerSDKOnConsole { class Program { static async Task Main(string[] args) { // Create the DI container. IServiceCollection services = new ServiceCollection(); // Being a regular console app, there is no appsettings.json or configuration providers enabled by default. // Hence instrumentation key/ connection string and any changes to default logging level must be specified here. services.AddLogging(loggingBuilder => loggingBuilder.AddFilter<Microsoft.Extensions.Logging.ApplicationInsights.ApplicationInsightsLoggerProvider>("Category", LogLevel.Information)); services.AddApplicationInsightsTelemetryWorkerService((ApplicationInsightsServiceOptions options) => options.ConnectionString = "InstrumentationKey=<instrumentation key here>"); // To pass a connection string // - aiserviceoptions must be created // - set connectionstring on it // - pass it to AddApplicationInsightsTelemetryWorkerService() // Build ServiceProvider. IServiceProvider serviceProvider = services.BuildServiceProvider(); // Obtain logger instance from DI. ILogger<Program> logger = serviceProvider.GetRequiredService<ILogger<Program>>(); // Obtain TelemetryClient instance from DI, for additional manual tracking or to flush. var telemetryClient = serviceProvider.GetRequiredService<TelemetryClient>(); var httpClient = new HttpClient(); while (true) // This app runs indefinitely. Replace with actual application termination logic. { logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); // Replace with a name which makes sense for this operation. using (telemetryClient.StartOperation<RequestTelemetry>("operation")) { logger.LogWarning("A sample warning message. By default, logs with severity Warning or higher is captured by Application Insights"); logger.LogInformation("Calling bing.com"); var res = await httpClient.GetAsync("https://bing.com"); logger.LogInformation("Calling bing completed with status:" + res.StatusCode); telemetryClient.TrackEvent("Bing call event completed"); } await Task.Delay(1000); } // Explicitly call Flush() followed by sleep is required in console apps. // This is to ensure that even if application terminates, telemetry is sent to the back-end. telemetryClient.Flush(); Task.Delay(5000).Wait(); } } }
Это консольное приложение также использует то же значение по умолчанию TelemetryConfiguration
. Его можно настроить так же, как и в примерах в предыдущих разделах.
Запуск приложения
Запустите приложение. Работники из всех предыдущих примеров делают http-вызов каждый секунду для bing.com, а также выдает несколько журналов с помощью ILogger
. Эти строки упаковываются внутри StartOperation
вызова TelemetryClient
, который используется для создания операции. В этом примере RequestTelemetry
называется "операция".
Application Insights собирает эти журналы ILogger с серьезностью предупреждения или выше по умолчанию и зависимостями. Они коррелируются RequestTelemetry
с отношением "родительский-дочерний". Корреляция также работает по границам процесса или сети. Например, если вызов был выполнен в другой отслеживаемый компонент, он также коррелируется с этим родительским элементом.
Эта настраиваемая операция RequestTelemetry
может рассматриваться как эквивалент входящего веб-запроса в типичном веб-приложении. Не обязательно использовать операцию, но она лучше всего подходит для модели данных корреляции Application Insights. RequestTelemetry
действует как родительская операция, и каждая телеметрия, созданная внутри итерации рабочей роли, рассматривается как логическая принадлежность к той же операции.
Этот подход также гарантирует, что все созданные данные телеметрии автоматически и вручную будут одинаковыми operation_id
. Так как выборка основана operation_id
на, алгоритм выборки либо сохраняет или удаляет все данные телеметрии из одной итерации.
В следующих разделах перечислены полные данные телеметрии, автоматически собранные Application Insights.
Динамические метрики
Динамические метрики можно использовать для быстрого проверки правильности настройки мониторинга приложений с помощью Application Insights. Данные телеметрии могут занять несколько минут, чтобы отображаться в портал Azure, но в области динамических метрик показано использование ЦП выполняющегося процесса практически в режиме реального времени. Она также может отображать другие данные телеметрии, такие как запросы, зависимости и трассировки.
Журналы ILogger
Журналы, создаваемые с помощью ILogger
предупреждения серьезности или большего уровня, автоматически записываются. Чтобы изменить это поведение, явно переопределите конфигурацию ведения журнала для поставщика ApplicationInsights
, как показано в следующем коде. Следующая конфигурация позволяет Application Insights собирать все журналы с уровнем серьезности Information
и выше.
{
"Logging": {
"LogLevel": {
"Default": "Warning"
},
"ApplicationInsights": {
"LogLevel": {
"Default": "Information"
}
}
}
}
Важно отметить, что в следующем примере поставщик Application Insights не будет собирать журналы Information
. Он не фиксирует его, поскольку пакет SDK добавляет фильтр ведения журнала по умолчанию, который дает указание ApplicationInsights
записывать только журналы с уровнем серьезности Warning
и выше. Для Application Insights требуется явное переопределение.
{
"Logging": {
"LogLevel": {
"Default": "Information"
}
}
}
Дополнительные сведения см . в документации ILogger, чтобы настроить уровни журналов, которые фиксируются Application Insights.
Зависимости
Сбор зависимостей по умолчанию включен. В статье по отслеживанию зависимостей в Application Insights описываются зависимости, которые автоматически собираются, а также содержатся шаги по отслеживанию вручную.
EventCounter
EventCounterCollectionModule
включен по умолчанию и собирает набор счетчиков по умолчанию из приложений .NET . Набор отслеживаемых счетчиков приведен в руководстве по EventCounter. Он также содержит инструкции по настройке списка.
Отслеживание других данных телеметрии вручную
Хотя пакет SDK автоматически собирает данные телеметрии, как описано, в большинстве случаев необходимо отправить другие данные телеметрии в Application Insights. Рекомендуемым способом отслеживания других данных телеметрии является получение экземпляра TelemetryClient
из внедрения зависимостей, а затем вызов одного из поддерживаемых TrackXXX()
методов API в нем. Еще одним типичным сценарием является настраиваемое отслеживание операций. Этот подход демонстрируется в предыдущих примерах рабочих ролей.
Настройка SDK Application Insights
Значение по умолчаниюTelemetryConfiguration
, используемое пакетом SDK для рабочей службы, аналогично автоматической конфигурации, используемой в приложении ASP.NET или ASP.NET Core, минус инициализаторы телеметрии, используемые для обогащения данных телеметрии.HttpContext
Вы можете настроить SDK Application Insights для Worker Service, изменив конфигурацию по умолчанию. Пользователи пакета SDK Application Insights для ASP.NET Core, вероятно, знакомы с процедурой изменения конфигурации с помощью встроенного метода внедрения зависимостей ASP.NET Core. Пакет SDK для рабочей службы также основан на аналогичных принципах. Внесите почти все изменения конфигурации в ConfigureServices()
разделе, вызвав соответствующие методы IServiceCollection
, как описано в следующем разделе.
Примечание.
При использовании этого пакета SDK изменение конфигурации путем изменения TelemetryConfiguration.Active
не поддерживается и изменения не будут отражены.
Использование ApplicationInsightsServiceOptions
Вы можете изменить несколько стандартных параметров, передавая ApplicationInsightsServiceOptions
в AddApplicationInsightsTelemetryWorkerService
, как в следующем примере.
using Microsoft.ApplicationInsights.WorkerService;
public void ConfigureServices(IServiceCollection services)
{
var aiOptions = new ApplicationInsightsServiceOptions();
// Disables adaptive sampling.
aiOptions.EnableAdaptiveSampling = false;
// Disables live metrics (also known as QuickPulse).
aiOptions.EnableQuickPulseMetricStream = false;
services.AddApplicationInsightsTelemetryWorkerService(aiOptions);
}
ApplicationInsightsServiceOptions
в этом пакете SDK находится в пространстве имен Microsoft.ApplicationInsights.WorkerService
, а не Microsoft.ApplicationInsights.AspNetCore.Extensions
, как в пакете SDK для ASP.NET Core.
В следующей таблице перечислены часто используемые параметры ApplicationInsightsServiceOptions
.
Параметр | Description | По умолч. |
---|---|---|
EnableQuickPulseMetricStream | Включение и отключение функции динамических метрик. | Истина |
EnableAdaptiveSampling | Включение и отключение адаптивной выборки. | Истина |
EnableHeartbeat | Включение и отключение функции Heartbeats, которая периодически (15 мин по умолчанию) отправляет пользовательскую метрику с именем HeartBeatState с информацией о среде выполнения, например версии .NET и среде Azure, если применимо. | Истина |
AddAutoCollectedMetricExtractor | Включение и отключение средства извлечения autoCollectedMetrics, который является обработчиком телеметрии, который отправляет предварительно подготовленные метрики о запросах и зависимостях перед выборкой. | Истина |
EnableDiagnosticsTelemetryModule | Включение и отключение DiagnosticsTelemetryModule . Отключение этого параметра приведет к пропускам следующих параметров: EnableHeartbeat , EnableAzureInstanceMetadataTelemetryModule и EnableAppServicesHeartbeatTelemetryModule . |
Истина |
Сведения о наиболее актуальном списке см . в ApplicationInsightsServiceOptions
разделе настраиваемых параметров.
Образец
Пакет SDK Application Insights для рабочей службы поддерживает выборку фиксированной частоты и адаптивную выборку. Адаптивная выборка включена по умолчанию. Выборка может быть отключена EnableAdaptiveSampling
с помощью параметра ApplicationInsightsServiceOptions.
Чтобы настроить другие параметры выборки, можно использовать следующий пример:
using Microsoft.ApplicationInsights.AspNetCore.Extensions;
using Microsoft.ApplicationInsights.Extensibility;
var builder = WebApplication.CreateBuilder(args);
builder.Services.Configure<TelemetryConfiguration>(telemetryConfiguration =>
{
var telemetryProcessorChainBuilder = telemetryConfiguration.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
// Using adaptive sampling
telemetryProcessorChainBuilder.UseAdaptiveSampling(maxTelemetryItemsPerSecond: 5);
// Alternately, the following configures adaptive sampling with 5 items per second, and also excludes DependencyTelemetry from being subject to sampling:
// telemetryProcessorChainBuilder.UseAdaptiveSampling(maxTelemetryItemsPerSecond:5, excludedTypes: "Dependency");
});
builder.Services.AddApplicationInsightsTelemetry(new ApplicationInsightsServiceOptions
{
EnableAdaptiveSampling = false,
});
var app = builder.Build();
Дополнительные сведения см. в документе выборки .
Добавление инициализаторов телеметрии
С помощью инициализаторов телеметрии можно задать свойства, которые отправляются со всеми данными телеметрии.
Добавьте в контейнер новый инициализатор DependencyInjection
телеметрии, а пакет SDK автоматически добавляет их TelemetryConfiguration
в .
using Microsoft.ApplicationInsights.Extensibility;
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<ITelemetryInitializer, MyCustomTelemetryInitializer>();
services.AddApplicationInsightsTelemetryWorkerService();
}
Удаление инициализаторов телеметрии
Инициализаторы телеметрии по умолчанию доступны. Чтобы удалить все или некоторые инициализаторы телеметрии, используйте следующий пример кода после вызова метода AddApplicationInsightsTelemetryWorkerService()
.
public void ConfigureServices(IServiceCollection services)
{
services.AddApplicationInsightsTelemetryWorkerService();
// Remove a specific built-in telemetry initializer.
var tiToRemove = services.FirstOrDefault<ServiceDescriptor>
(t => t.ImplementationType == typeof(AspNetCoreEnvironmentTelemetryInitializer));
if (tiToRemove != null)
{
services.Remove(tiToRemove);
}
// Remove all initializers.
// This requires importing namespace by using Microsoft.Extensions.DependencyInjection.Extensions;
services.RemoveAll(typeof(ITelemetryInitializer));
}
Добавление процессоров телеметрии
Вы можете добавить пользовательские обработчики данных телеметрии в TelemetryConfiguration
с помощью метода расширения AddApplicationInsightsTelemetryProcessor
в IServiceCollection
. Процессоры телеметрии используются в расширенных сценариях фильтрации, чтобы обеспечить более прямой контроль над включенными или исключенными из телеметрии, которую вы отправляете в Application Insights. Используйте следующий пример:
public void ConfigureServices(IServiceCollection services)
{
services.AddApplicationInsightsTelemetryWorkerService();
services.AddApplicationInsightsTelemetryProcessor<MyFirstCustomTelemetryProcessor>();
// If you have more processors:
services.AddApplicationInsightsTelemetryProcessor<MySecondCustomTelemetryProcessor>();
}
Настройка или удаление модулей телеметрии по умолчанию
Модули телеметрии в Application Insights используются для автоматического сбора данных телеметрии о конкретных рабочих нагрузках, не требуя ручного отслеживания.
Следующие модули автоматической коллекции включены по умолчанию. Эти модули отвечают за автоматический сбор данных телеметрии. Их можно отключать или настраивать для изменения поведения по умолчанию.
DependencyTrackingTelemetryModule
PerformanceCollectorModule
QuickPulseTelemetryModule
AppServicesHeartbeatTelemetryModule
(В настоящее время возникает проблема, связанная с этим модулем телеметрии. Временное решение см. в статье GitHub Issue 1689.)AzureInstanceMetadataTelemetryModule
Чтобы настроить любой модуль телеметрии по умолчанию, используйте метод ConfigureTelemetryModule<T>
IServiceCollection
расширения, как показано в следующем примере:
using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;
using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector;
public void ConfigureServices(IServiceCollection services)
{
services.AddApplicationInsightsTelemetryWorkerService();
// The following configures QuickPulseTelemetryModule.
// Similarly, any other default modules can be configured.
services.ConfigureTelemetryModule<QuickPulseTelemetryModule>((module, o) =>
{
module.AuthenticationApiKey = "keyhere";
});
// The following removes PerformanceCollectorModule to disable perf-counter collection.
// Similarly, any other default modules can be removed.
var performanceCounterService = services.FirstOrDefault<ServiceDescriptor>
(t => t.ImplementationType == typeof(PerformanceCollectorModule));
if (performanceCounterService != null)
{
services.Remove(performanceCounterService);
}
}
Настройка канала телеметрии
Каналом по умолчанию является ServerTelemetryChannel
. Его можно переопределить, как показано в следующем примере:
using Microsoft.ApplicationInsights.Channel;
public void ConfigureServices(IServiceCollection services)
{
// Use the following to replace the default channel with InMemoryChannel.
// This can also be applied to ServerTelemetryChannel.
services.AddSingleton(typeof(ITelemetryChannel), new InMemoryChannel() {MaxTelemetryBufferCapacity = 19898 });
services.AddApplicationInsightsTelemetryWorkerService();
}
Динамическое отключение телеметрии
Чтобы отключить данные телеметрии по условию и динамически, можно разрешить экземпляр TelemetryConfiguration
с контейнером внедрения зависимостей ASP.NET Core в любом месте кода и установить для него флаг DisableTelemetry
.
public void ConfigureServices(IServiceCollection services)
{
services.AddApplicationInsightsTelemetryWorkerService();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, TelemetryConfiguration configuration)
{
configuration.DisableTelemetry = true;
...
}
Часто задаваемые вопросы
В этом разделы приводятся ответы на часто задаваемые вопросы.
Какой пакет необходимо использовать?
Сценарий приложения .NET Core | Пакет |
---|---|
Без HostedServices | WorkerService |
С HostedServices | AspNetCore (не WorkerService) |
С HostedServices, мониторинг только HostedServices | WorkerService (редкий сценарий) |
Могут ли HostedServices внутри приложения .NET Core внедрить в него TelemetryClient с помощью пакета AspNetCore?
Да. Конфигурация будет предоставлена остальной части веб-приложения.
Как можно отследить данные телеметрии, сбор которых не происходит автоматически?
Получите экземпляр TelemetryClient
с помощью внедрения конструктора и вызовите необходимый TrackXXX()
метод на нем. Мы не рекомендуем создавать новые экземпляры TelemetryClient
. Одиночный экземпляр TelemetryClient
уже зарегистрирован в контейнере DependencyInjection
, который использует TelemetryConfiguration
остальные данные телеметрии. Создавать новые экземпляры TelemetryClient
рекомендуется только в том случае, если вам нужна конфигурация, отличная от настроек для основной части телеметрии.
Можно ли использовать интегрированную среду разработки Visual Studio для подключения Application Insights к проекту Worker Service?
Подключение интегрированной среды разработки Visual Studio в настоящее время поддерживается только для приложений ASP.NET/ASP.NET Core. Этот документ будет обновлен, когда Visual Studio поставляет поддержку для подключения приложений рабочей службы.
Можно ли включить мониторинг Application Insights с помощью таких средств, как агент Azure Monitor Application Insights (ранее монитор состояния версии 2)?
№ Azure Monitor Application Insights Agent в настоящее время поддерживает только .NET .
Если я запускаю приложение в Linux, все ли функции будут поддерживаться?
Да. Поддержка функций для пакета SDK одинакова на всех платформах, за исключением следующих моментов:
Счетчики производительности поддерживаются только в Windows, за исключением ЦП или памяти процесса, показанных в динамических метриках.
Несмотря на то что
ServerTelemetryChannel
включено по умолчанию, если приложение выполняется в Linux или macOS, канал автоматически не создает папку локального хранилища для временного хранения данных телеметрии в случае проблем с сетью. Из-за этого ограничения данные телеметрии теряются при наличии временных проблем с сетью или сервером. Чтобы устранить эту проблему, настройте локальную папку для канала:using Microsoft.ApplicationInsights.Channel; using Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel; public void ConfigureServices(IServiceCollection services) { // The following will configure the channel to use the given folder to temporarily // store telemetry items during network or Application Insights server issues. // User should ensure that the given folder already exists // and that the application has read/write permissions. services.AddSingleton(typeof(ITelemetryChannel), new ServerTelemetryChannel () {StorageFolder = "/tmp/myfolder"}); services.AddApplicationInsightsTelemetryWorkerService(); }
Примеры приложений
Консольное приложение .NET Core: используйте этот пример, если вы используете консольное приложение, написанное в .NET Core (2.0 или более поздней версии) или платформа .NET Framework (4.7.2 или более поздней версии).
ASP.NET фоновые задачи с HostedServices: используйте этот пример, если вы находитесь в ASP.NET Core и создаете фоновые задачи в соответствии с официальным руководством.
Служба рабочей роли .NET Core: используйте этот пример, если у вас есть приложение службы рабочей роли .NET в соответствии с официальным руководством.
Пакет SDK с открытым исходным кодом
Чтение кода и дополнительные наработки.
Последние обновления и исправления ошибок см. в заметках о выпуске.
Следующие шаги
- Для получения более четкого представления о производительности и использовании приложения используйте API для отправки собственных событий и метрик.
- Отслеживайте больше зависимостей, которые не отслеживаются автоматически.
- Обогащение или фильтрация автоматически собранных данных телеметрии.
- Использование внедрения зависимостей в ASP.NET Core.