Как анонимизировать URL-адрес в application insights?

#azure #.net-core #azure-application-insights #appinsights

#azure #.net-ядро #azure-application-insights #appinsights

Вопрос:

У меня есть URL /users/myuser@gmail.com . Я не хочу регистрировать фактическую электронную почту в журналах. Что я могу сделать?

Мне действительно нравится регистрироваться /users/m***r@gmail.com , но я просто не знаю, возможно ли это и как.

Обновить

Это c # на ASP.net базовая структура 3.1.

Комментарии:

1. какой у вас проект? Нравится. net core web или что-то еще?

2. @IvanYang Это на ядре dotnet 3.1. Также обновлен вопрос: 1:

3. Вы можете попробовать это с помощью инициализатора ITelemetryInitializer , чтобы посмотреть, можно ли изменить URL-адрес там.

4. Предположил бы, что это возможно, внедрив свой собственный ITelemetryProcessor и добавив его с services.AddApplicationInsightsTelemetryProcessor<YourTelemetryProcessor>()

5. @AshkanSirous, если у вас все еще есть проблемы, пожалуйста, дайте мне знать. И если это полезно, пожалуйста, примите это как ответ:).

Ответ №1:

Вы можете использовать ITelemetryInitializer для его изменения.

Я пишу пример фрагмента кода для asp.net ядро. В целях тестирования я просто заменяю информацию (например, адрес электронной почты) в URL-адресе. Пожалуйста, не стесняйтесь изменять его в соответствии с вашими потребностями.

1. Добавьте новый класс и реализуйте его с помощью следующего кода:

 public class MyTelemetryInitializer : ITelemetryInitializer
{
    public void Initialize(ITelemetry telemetry)
    {
        var requestTelemetry = telemetry as RequestTelemetry;
       
        if (requestTelemetry == null) return;

        if (requestTelemetry.Url.ToString().Contains("Home"))
        {
            string str1 = requestTelemetry.Url.ToString();

            //for test purpose, it is just replaced here.
            Uri uri = new Uri(requestTelemetry.Url.ToString().Replace("Home", "myhome222"));
            requestTelemetry.Url = uri;

            //it will also be shown in the Name and Operation_name, you should write your logic to do that.
            //requestTelemetry.Name = "";
            //requestTelemetry.Context.Operation.Name = "";
        }         
        
    }
}
  

2.in в методе Startup.cs -> ConfigureServices зарегистрируйте инициализатор ITelemetryInitializer:

     public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllersWithViews();
        services.AddApplicationInsightsTelemetry();

        //use this line of code to register.
        services.AddSingleton<ITelemetryInitializer, MyTelemetryInitializer>();
    }