Использование Serilog с .Net core и App Insights - PullRequest
0 голосов
/ 29 апреля 2018

Я уже использовал аналитические данные App непосредственно для регистрации приложений, и я видел, что базовая платформа .Net также создает события трассировки, которые переходят к аналитическим данным App.

В новом основном API-приложении .Net я хотел бы использовать Serilog для регистрации приложений и App Insight для хранения и визуализации событий журнала. Я хотел бы знать:

  1. Как продолжить получать события трассировки .Net core .created в приложениях Insights?

  2. Как передать идентификатор корреляции из моего приложения в события трассировки, созданные в ядре .Net?

  3. Будет ли функция сквозных транзакций на портале App Insight отображать все события вместе? Мне важно знать и следить за задержкой вызовов SQL.

Ответы [ 2 ]

0 голосов
/ 04 августа 2019

Просто с помощью Serilog.Sinks.ApplicationInsights недостаточно , поскольку он не будет сопоставлять события Serilog с остальной частью вашей телеметрии в Application Insights.

Чтобы сопоставить события, чтобы они отображались как одна «сквозная транзакция» - вам необходимо выполнить следующие действия:

  1. Создайте Serilog enricher, который бы записывал текущий Activity идентификатор как ScalarValue в LogEventProperty - см. OperationIdEnricher
  2. [Необязательно] Создайте расширение для этого обогащения - см. LoggingExtensions
  3. Зарегистрируйте обогатитель / добавьте его в конвейер с помощью кода или конфигурации - см. logging.json
  4. Создайте пользовательский TelemetryConverter (подкласс от TraceTelemetryConverter или EventTelemetryConverter) для ApplicationInsights, который будет устанавливать telemetry.Context.Operation.Id из значения, установленного в 1) - см. OperationTelemetryConverter

Ознакомьтесь с моим постом в блоге " Serilog с ApplicationInsights ", в котором поясняются вышеприведенные пункты с более подробной информацией и ссылками

Кроме того, обязательно посмотрите Телеметрическая корреляция в Application Insights на MSDN

0 голосов
/ 04 мая 2018

Если вы используете ILogger в ядре .Net для ведения журналов, эти сообщения могут быть направлены в Application Insights с следующей модификацией файла startup.cs:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
/*...existing code..*/
            loggerFactory.AddApplicationInsights(app.ApplicationServices, LogLevel.Warning);
}

Если вы используете свой собственный идентификатор корреляции, вы можете соответствующим образом изменить идентификаторы корреляции Application Insights в Context.Operation поле элемента телеметрии с помощью собственного Инициализатора телеметрии или передать эти значения в соответствующих заголовках (Request-ID (глобальный идентификатор) и Correlation-Context (пары имя-значение)) в запросах к этому приложению - ИИ будет выбирать идентификаторы корреляции из этих.

Предполагается, что сквозная транзакция должна отображаться вместе (Запросы / Зависимости и Исключения) на временной шкале в подробном представлении телеметрии Application Insights. Если у вас есть собственные идентификаторы корреляции, они также должны работать, если они находятся там с самого начала транзакции (например, в первом компоненте) - в противном случае их внедрение в середине разорвет цепочку.

...