Просмотр журналов трассировки Python, .NET или .NET Core в Application Insights
Отправьте диагностические журналы трассировки для приложения ASP.NET или ASP.NET Core из ILogger, NLog, log4Net или System.Diagnostics.Trace в Azure Application Insights. Для приложений Python отправьте журналы трассировки диагностики с помощью AzureLogHandler в OpenCensus Python для Azure Monitor. После этого их можно просматривать и выполнять их поиск. Эти журналы объединяются с файлами других журналов из вашего приложения. С их помощью можно выявлять трассировки, которые связаны с каждым запросом пользователя, и сопоставлять их с другими событиями и отчетами об исключениях.
Примечание.
Требуется модуль записи журнала? Это полезный адаптер для средств ведения журнала сторонних поставщиков, но если вы еще не используете NLog, log4Net или System.Diagnostics.Trace, рекомендуем вызвать метод TrackTrace() компонента Application Insights напрямую.
Примечание.
Поддержка приема ключей инструментирования будет завершена 31 марта 31, 2025 г. Прием ключей инструментирования будет и дальше осуществляться, но мы больше не будем предоставлять обновления или поддержку для этой функции. Перейдите на строки подключения, чтобы использовать новые возможности.
Установка ведения журнала в приложении
Установите выбранную платформу ведения журналов в проект, что должно привести к созданию записи в файле app.config или web.config.
<configuration>
<system.diagnostics>
<trace>
<listeners>
<add name="myAppInsightsListener" type="Microsoft.ApplicationInsights.TraceListener.ApplicationInsightsTraceListener, Microsoft.ApplicationInsights.TraceListener" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
Настройка Application Insights для сбора журналов
Добавьте Application Insights в проект , если вы еще этого не сделали, и есть возможность включить сборщик журналов.
Или в Обозревателе решений щелкните проект правой кнопкой мыши и выберите Настроить Application Insights. Выберите параметр Настроить сбор трассировок.
Примечание.
Вы не видите меню Application Insights или параметр для включения сборщика журналируемых данных? Попробуйте выполнить Устранение неполадок.
Установка вручную
Используйте этот метод, если ваш тип проекта не поддерживается программой установки Application Insights. Например, если это классический проект Windows.
Если вы планируете использовать log4net или NLog, установите его в свой проект.
В Обозревателе решений щелкните проект правой кнопкой мыши и выберите Управление пакетами NuGet.
Выполните поиск по запросу Application Insights.
Выберите один из следующих пакетов.
- ILogger: Microsoft.Extensions.Logging.ApplicationInsights
- NLog: Microsoft.ApplicationInsights.NLogTarget
- log4net: Microsoft.ApplicationInsights.Log4NetAppender
- System.Diagnostics: Microsoft.ApplicationInsights.TraceListener
- Microsoft.ApplicationInsights.DiagnosticSourceListener
- Microsoft.ApplicationInsights.EtwCollector
- Microsoft.ApplicationInsights.EventSourceListener
Пакет NuGet устанавливает необходимые сборки, а также вносит изменения в файл web.config или app.config, если применимо.
ILogger
Примеры использования реализации ILogger Application Insights с консольными приложениями и ASP.NET Core см. в статье ApplicationInsightsLoggerProvider для журналов ILogger приложений .NET Core.
Вставка вызовов журнала диагностики
При использовании System.Diagnostics.Trace типичный вызов будет выглядеть следующим образом:
System.Diagnostics.Trace.TraceWarning("Slow response - database01");
Если вы предпочитаете log4net или NLog, используйте следующий код:
logger.Warn("Slow response - database01");
Использование событий EventSource
Можно настроить отправку событий System.Diagnostics.Tracing.EventSource в Application Insights в виде трассировок. Сначала установите пакет NuGet Microsoft.ApplicationInsights.EventSourceListener
. Затем измените раздел TelemetryModules
файла ApplicationInsights.config.
<Add Type="Microsoft.ApplicationInsights.EventSourceListener.EventSourceTelemetryModule, Microsoft.ApplicationInsights.EventSourceListener">
<Sources>
<Add Name="MyCompany" Level="Verbose" />
</Sources>
</Add>
Для каждого источника можно задать следующие параметры.
- Name задает имя собираемого события EventSource.
- Уровень указывает уровень ведения журнала для сбора: критические, ошибки, информационные, LogAlways, подробные сведения или предупреждение.
- Keywords (необязательный параметр) задает целочисленное значение используемых комбинаций ключевых слов.
Использование событий DiagnosticSource
Можно настроить отправку событий System.Diagnostics.DiagnosticSource в Application Insights в виде трассировок. Сначала установите пакет NuGet Microsoft.ApplicationInsights.DiagnosticSourceListener
. Затем измените раздел TelemetryModules файла ApplicationInsights.config.
<Add Type="Microsoft.ApplicationInsights.DiagnosticSourceListener.DiagnosticSourceTelemetryModule, Microsoft.ApplicationInsights.DiagnosticSourceListener">
<Sources>
<Add Name="MyDiagnosticSourceName" />
</Sources>
</Add>
Для каждого источника данных диагностики, трассировку которого необходимо выполнять, добавьте запись с атрибутом Name
, которому присвоено источника данных диагностики.
Использование событий трассировки событий Windows
Можно настроить отправку событий трассировки событий Windows (ETW) в Application Insights в качестве трассировок. Сначала установите пакет NuGet Microsoft.ApplicationInsights.EtwCollector
. Затем измените раздел TelemetryModules файла ApplicationInsights.config.
Примечание.
События трассировки событий Windows можно собирать только в том случае, если процесс, в котором размещен пакет SDK, выполняется с удостоверением, которое является членом группы "Пользователи журналов производительности" или "Администраторы".
<Add Type="Microsoft.ApplicationInsights.EtwCollector.EtwCollectorTelemetryModule, Microsoft.ApplicationInsights.EtwCollector">
<Sources>
<Add ProviderName="MyCompanyEventSourceName" Level="Verbose" />
</Sources>
</Add>
Для каждого источника можно задать следующие параметры.
- ProviderName указывает имя поставщика трассировки событий Windows для сбора.
- ProviderGuid указывает уникальный идентификатор (GUID) поставщика трассировки событий Windows для сбора. Этот параметр можно использовать вместо
ProviderName
. - Level задает уровень ведения журнала для сбора. Возможны следующие значения: Critical (Критическая ошибка), Error (Ошибка), Informational (Информация), LogAlways (Постоянная запись), Verbose (Подробные сведения) или Warning (Предупреждение).
- Keywords (необязательный параметр) задает целочисленное значение используемых комбинаций ключевых слов.
Непосредственное использование API трассировки
API трассировки в Application Insights можно вызывать напрямую. Адаптеры ведения журналов используют этот API.
Например:
TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
var telemetryClient = new TelemetryClient(configuration);
telemetryClient.TrackTrace("Slow response - database01");
Преимуществом TrackTrace
является возможность добавления в сообщения относительно длинных данных, например данных POST.
Вы также можете настроить для сообщения уровень серьезности. Как и для других данных телеметрии, вы можете добавлять значения свойства, используемые для фильтрации или поиска различных наборов трассировки. Например:
TelemetryConfiguration configuration = TelemetryConfiguration.CreateDefault();
var telemetryClient = new TelemetryClient(configuration);
telemetryClient.TrackTrace("Slow database response",
SeverityLevel.Warning,
new Dictionary<string, string> { { "database", "db.ID" } });
Теперь вы можете легко отфильтровать все сообщения определенного уровня серьезности, относящиеся к определенной базе данных.
AzureLogHandler для OpenCensus Python
Azure Monitor Log Handler позволяет экспортировать журналы Python в Azure Monitor.
Инструментируйте приложение с помощью пакета SDK OpenCensus Python для Azure Monitor.
В этом примере показано, как отправить журнал уровня предупреждений в Azure Monitor.
import logging
from opencensus.ext.azure.log_exporter import AzureLogHandler
logger = logging.getLogger(__name__)
logger.addHandler(AzureLogHandler(connection_string='InstrumentationKey=<your-instrumentation_key-here>'))
logger.warning('Hello, World!')
Просмотр журналов
Запустите приложение в режиме отладки или разверните его.
В области обзора приложения на портале Application Insights выберите "Поиск транзакций".
Можно, например:
- фильтровать трассировки журнала или элементы с определенными свойствами;
- просматривать подробные сведения конкретного элемента;
- выполнять поиск других данных системного журнала, связанных с тем же запросом пользователя (с тем же идентификатором операции);
- сохранять конфигурацию страницы в списке избранного.
Примечание.
Если ваше приложение выполняет отправку больших объемов данных, а вы используете пакет SDK Application Insights для ASP.NET версии 2.0.0-beta3 или более поздней, может сработать функция адаптивной выборки, которая отправит только часть данных телеметрии. См. дополнительные сведения о выборке.
Устранение неполадок
Найдите ответы на часто задаваемые вопросы.
Что вызывает задержку телеметрии, перегрузку сети и неэффективную передачу?
System.Diagnostics.Tracing имеет функцию автоматического сброса. Эта функция вызывает сброс в пакете SDK каждого элемента телеметрии, что нежелательно и может вызвать проблемы с адаптером регистрации, такие как отложенная телеметрия, перегруженная сеть и неэффективная передача.
Как это сделать в Java?
При инструментировании Java без программирования, что рекомендуется, журналы собираются без каких-либо дополнительных настроек. Используйте агент Java 3.0.
Агент Java Application Insights собирает журналы из Log4j, Logback и java.util.logging из поля.
Почему в контекстном меню проекта нет пункта для Application Insights?
- Убедитесь, что на компьютере, на котором ведется разработка, установлено расширение Developer Analytics Tools. В Visual Studio перейдите к разделу Средства>Расширения и обновления и найдите Developer Analytics Tools. Если этого расширения нет на вкладке Установленные, перейдите на вкладку В сети и установите их.
- Возможно, Developer Analytics Tools не поддерживает тип этого проекта. Используйте установку вручную.
Почему в средстве настройки нет параметра для адаптера журналов?
- Сначала установите платформу ведения журналов.
- Если вы используете класс System.Diagnostics.Trace, убедитесь, что он настроен в web.config.
- У вас должна быть установлена последняя версия Application Insights. В Visual Studio выберите Сервис>Расширения и обновления и откройте вкладку Обновления. Если в списке есть расширение Developer Analytics Tools, выберите его, чтобы обновить.
Почему я получаю сообщение об ошибке со сведениями о том, что ключ инструментирования не может быть пустым?
Вероятно, вы установили пакет NuGet адаптера ведения журнала, но не установили Application Insights. В Обозревателе решений щелкните правой кнопкой мыши ApplicationInsights.config и выберите пункт Обновить Application Insights. Вам будет предложено войти в Azure и создать ресурс Application Insights или повторно использовать существующий. Это должно устранить проблему.
Почему в результатах поиска диагностических данных есть трассировки, но нет других событий?
Для получения всех событий и запросов через конвейер может потребоваться некоторое время.
Какой объем данных сохраняется?
Объем хранящихся данных зависит от нескольких факторов. Дополнительные сведения см. на странице метрик событий клиента в разделе Ограничения.
Почему некоторые ожидаемые записи журнала не отображаются?
Возможно, ваше приложение выполняет отправку больших объемов данных, а вы используете пакет SDK Application Insights для ASP.NET 2.0.0-beta3 или более поздней версии. В этом случае может сработать функция адаптивной выборки, которая отправит только часть данных телеметрии. См. дополнительные сведения о выборке.