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?