Application Insights Телеметрическая фильтрация не работает - PullRequest
0 голосов
/ 16 мая 2018

Я уже следовал инструкции здесь .Я попробовал как конфигурацию, так и «в коде» подход инициализации и регистрации нашего процессора телеметрии.Моя цель состоит в том, чтобы отфильтровать некоторые HTTP-ответы, чтобы они не попадали в выборочные данные.У меня не было никакого успеха.Хотя наш процессор инициализируется при запуске приложения, метод Process никогда не срабатывает.Кроме того, я уже убедился, что в конфигурации есть InstrumentationKey и что я использую правильный ключ.Что еще мне не хватает?

Вот что у меня есть:

public class MyTelemetryProcessor : ITelemetryProcessor
{
    private ITelemetryProcessor Next { get; set; }

    // You can pass values from .config
    public string MyParamFromConfigFile { get; set; }

    // Link processors to each other in a chain.
    public MyTelemetryProcessor(ITelemetryProcessor next)
    {
        this.Next = next; <-- this is always hit indicating this processor is active
    }

    public void Process(ITelemetry item)
    {
        // To filter out an item, just return
        if (!OKtoSend(item)) { return; } <-- breakpoint here is never hit
        // Modify the item if required
        ModifyItem(item);

        this.Next.Process(item);
    }

    private bool OKtoSend(ITelemetry item) <-- and consequently this method is never hit
    {
        var request = item as RequestTelemetry; <-- breakpoint here is never hit

        // some more code goes here

        return request.Success.GetValueOrDefault(false);
    }

    // Example: replace with your own modifiers.
    private void ModifyItem(ITelemetry item)
    {
        item.Context.Properties.Add("app-version", "1." + MyParamFromConfigFile);
    }
}

И вот как это регистрируется.Я вижу, что это происходит во время отладки при запуске приложения:

var builder = TelemetryConfiguration.Active.TelemetryProcessorChainBuilder;
builder.Use((next) => new MyTelemetryProcessor (next));

builder.Build();

1 Ответ

0 голосов
/ 25 сентября 2018

В aspnetcore моим решением было использовать: services.AddApplicationInsightsTelemetryProcessor (TypeOf (BasicTelemetryFilter));

(используя обычный CreateWebHostBuilder:

WebHost.CreateDefaultBuilder(args)
            .UseApplicationInsights()
            .UseStartup<Startup>();

)

...