Как игнорировать локальный хост в аналитике приложений Azure

Недавно я начал размещать свое первое производственное приложение. Я пошел дальше и активировал информацию о приложениях, которая, как мне кажется, имеет большую ценность. Однако я получаю статистику со стороны разработчика, например, в журналы записываются записи с localhost: xxxx. Я уверен, что есть способ отключить это. Может ли кто-нибудь дать мне несколько советов, пожалуйста?


person chesco    schedule 12.02.2016    source источник


Ответы (2)


Вы также можете отфильтровать данные телеметрии на локальном хосте с помощью TelemetryProcessor (если вы используете последнюю (предварительную версию) Application Insights Web SDK). Вот пример. Добавьте этот класс в свой проект:

public class LocalHostTelemetryFilter : ITelemetryProcessor
{
    private ITelemetryProcessor next;
    public LocalHostTelemetryFilter(ITelemetryProcessor next)
    {
        this.next = next;
    }

    public void Process(ITelemetry item)
    {
        var requestTelemetry = item as RequestTelemetry;
        if (requestTelemetry != null && requestTelemetry.Url.Host.Equals("localhost", StringComparer.OrdinalIgnoreCase))
        {
            return;
        }
        else
        {
            this.next.Process(item);
        }   
    }
}

А затем зарегистрируйте его в ApplicationInsights.config:

<TelemetryProcessors>
    <Add Type="LocalhostFilterSample.LocalHostTelemetryFilter, LocalHostFilterSample"/>
</TelemetryProcessors>
person Alex Bulankou    schedule 13.02.2016
comment
Это более приятный способ, потому что я могу отправить собственный заголовок с помощью Selenium, и этот код затем может игнорировать мои тесты. Да, я знаю, у меня должна быть специальная тестовая среда... конечно. Но, по крайней мере, я тестирую.. :D - person Piotr Kula; 24.07.2017
comment
Лучшая версия этого, которая имеет дело со всеми видами ведения журнала, а не только с теми, которые связаны с запросами, состоит в том, чтобы внедрить среду IHostingEnvironment в конструктор и проверить возврат if(env.IsDevelopment()); - person carl-johan.blomqvist; 01.09.2019

  1. Вы можете отфильтровать уже собранные данные телеметрии, которые вы получаете с помощью F5 в пользовательском интерфейсе, поскольку у них есть свойство IsDeveloperMode=true.
  2. У вас может быть преобразование web.config, которое удаляет модуль Application Insights из web.debug.config и оставляет его только в web.release.config (если у вас есть только автоматически собираемые свойства).
  3. Вы можете удалить инструментальный ключ из конфигурации и установить его только для версии выпуска в коде: TelemetryConfiguration.Active.InsrumentationKey = "MyKey" (если вы не предоставите iKey в отладке, вы все равно сможете видеть всю телеметрию в концентраторе AI в VS 2015)
  4. Вы можете использовать разные ключи iKey для отладки и повторного выпуска, установив их в коде.
  5. Вы можете полностью отключить ApplicationInsights в отладке, установив TelemetryConfiguration.Active.DisableTelemetry = true
person Anastasia Black    schedule 13.02.2016
comment
Я добавил следующие строки кода в свой FilterConfig.cs: #if !RELEASE TelemetryConfiguration.Active.DisableTelemetry = true; #endif Анастасия, как вы думаете, это сработает? - person chesco; 18.02.2016
comment
Если у вас есть стандартное приложение, которое определяет RELEASE, и если вы не создаете в коде никаких пользовательских настроек TelemetryConfiguration, тогда да. DisableTelemetry применим к каждой конфигурации TelemetryConfiguration. Автосбор использует только TelemetryConfiguration.Active. Также я не знаю, отслеживаете ли вы что-то до того, как будет достигнут код в FilterConfig (например, некоторые трассировки). Если да, то эти данные телеметрии, очевидно, будут отправлены. - person Anastasia Black; 18.02.2016