EventFlow не показывает правильные типы телеметрии на портале анализа приложений, вместо этого отображается как TRACE

В моем примере проекта я использую EventFlow для сбора диагностических данных и вывода их в ApplicationInsight. Также ведение журнала осуществляется через понимание приложения. Диагностические данные были показаны на портале Application Insight, но все типы телеметрии отображаются как TRACE (несмотря на то, что диагностические данные отправляются с типом телеметрии REQUEST). Но если я напрямую войду в Application Insight(без потока событий), он правильно покажет правильный тип телеметрии в Application Insight. Здесь я прилагаю свой файл конфигурации потока событий и пример кода, который я использовал.

Кстати, мой пример приложения asp.net core2 wep api

eventFlowConfig.json

{

   "inputs": [
           { "type": "ApplicationInsights" }
  ],
  "outputs": [
    // Please update the instrumentationKey.
    {
      "type": "ApplicationInsights",
      "instrumentationKey": "xxxxxxxxxxx"
    }
  ],
  "schemaVersion": "2016-08-11"
}

Образец кода

public void ConfigureServices(IServiceCollection services)
        {
            services.AddApplicationInsightsTelemetry();
            services.AddApplicationInsightsTelemetryProcessor<EventFlowTelemetryProcessor>();
            services.AddMvc();
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            var telemetryConfiguration = app.ApplicationServices.GetService<TelemetryConfiguration>();
            var eventFlowTelmetryProcessor = (EventFlowTelemetryProcessor)telemetryConfiguration
                                                .TelemetryProcessors
                                                .First(x => x.GetType() == typeof(EventFlowTelemetryProcessor));

            if (eventFlowTelmetryProcessor != null)
            {
                var diagnosticPipeline = app.ApplicationServices.GetService<DiagnosticPipeline>();
                eventFlowTelmetryProcessor.Pipeline = diagnosticPipeline;
            }

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseMvc();
        }

Здесь я приложил скриншот на Application Insight для более ясного представления. Здесь есть некоторые диагностические данные с типом телеметрии REQUEST, но даже они отображаются как TRACE.

введите описание изображения здесь

1 ответ

Это происходит потому, что AppInsights Ouput потока событий использует TrackTrace для обработки всех входных событий \ телеметрии, и эти события отправляются в таблицу Trace в ApplicationInsights.

Он также использует тип события AppInsights (Запрос), чтобы установить LogLevel этих событий, таких как Informational, Trace, Debug.

Из-за этой ненужной обработки вы теряете что-то на пути к месту назначения. Почему бы не вести журнал напрямую в appInsights вместо того, чтобы добавлять эти дополнительные издержки для анализа в eventFlow, а затем отправлять в AppInsights?

Другие вопросы по тегам