Просмотр журналов трассировки 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 напрямую.

Установка ведения журнала в приложении

Установите выбранную платформу ведения журналов в проект, что должно привести к созданию записи в файле 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).

  1. Если вы планируете использовать log4Net или NLog, установите его в свой проект.

  2. В Обозревателе решений щелкните проект правой кнопкой мыши и выберите Управление пакетами NuGet.

  3. Выполните поиск по запросу "Application Insights".

  4. Выберите один из следующих пакетов.

Пакет 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.
  • Level задает уровень ведения журнала: Critical (Критическая ошибка), Error (Ошибка), Informational (Информация), LogAlways (Постоянная запись), Verbose (Подробные сведения) или Warning (Предупреждение).
  • 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>

Для каждого объекта DiagnosticSource, трассировку которого необходимо выполнять, добавьте запись с атрибутом Name, которому присвоено имя DiagnosticSource.

Использование событий трассировки событий 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 выберите элемент Поиск.

Можно, например:

  • фильтровать трассировки журнала или элементы с определенными свойствами;
  • просматривать подробные сведения конкретного элемента;
  • выполнять поиск других данных системного журнала, связанных с тем же запросом пользователя (с тем же OperationId);
  • сохранять конфигурацию страницы в списке избранного.

Примечание

Если ваше приложение выполняет отправку больших объемов данных, а вы используете пакет SDK Application Insights для ASP.NET версии 2.0.0-beta3 или более поздней, может сработать функция адаптивной выборки, которая отправит только часть данных телеметрии. Дополнительная информация о выборке.

Устранение неполадок

Как это сделать в Java?

В инструментировании Java без программирования (рекомендуется) журналы собираются без каких-либо дополнительных настроек при использовании агента Java 3.0.

Если вы используете пакет SDK для Java, воспользуйтесь адаптерами журналов Java.

В контекстном меню проекта нет пункта для 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, выберите его, чтобы обновить.

Я получаю сообщение об ошибке "Instrumentation key cannot be empty" (Ключ инструментирования не может быть пустым)

Вероятно, вы установили пакет NuGet адаптера ведения журнала, но не установили Application Insights. В Обозревателе решений щелкните правой кнопкой мыши ApplicationInsights.config и выберите пункт Обновить Application Insights. Вам будет предложено войти в Azure и создать ресурс Application Insights или повторно использовать существующий. Это устранит проблему.

Для получения всех событий и запросов через конвейер может потребоваться некоторое время.

Какой объем данных сохраняется?

Объем хранящихся данных зависит от нескольких факторов. Дополнительные сведения см. на странице метрик событий клиента в разделе ограничений.

Некоторые ожидаемые записи журнала не отображаются

Если ваше приложение выполняет отправку больших объемов данных, а вы используете пакет SDK Application Insights для ASP.NET версии 2.0.0-beta3 или более поздней, может сработать функция адаптивной выборки, которая отправит только часть данных телеметрии. Дополнительная информация о выборке.

Следующие шаги