Будет ли Application Insights Sampling отбирать исключения? - PullRequest
0 голосов
/ 06 июня 2018

Приложение анализирует документацию по выборке (https://docs.microsoft.com/en-us/azure/application-insights/app-insights-sampling) гласит следующее:

"Например, если по неудавшемуся запросу ваше приложение отправляет дополнительные элементы телеметрии (например, исключения и трассировки, зарегистрированные из этого запроса)), выборка не будет разделять этот запрос и другую телеметрию. Она либо хранит, либо отбрасывает их все вместе. "

Трудно представить, но означает ли это, что некоторые исключения или лучшие запросы, вызвавшие исключение, могут просто получитьигнорируется и не регистрируется, если алгоритм выборки должен уменьшить количество выполняемых журналов? Мне трудно поместить это в правильный контекст, просто начинаю с понимания приложений и пытаюсь выяснить все возможности. Я понимаю, что это оченьполезно отфильтровать процент телеметрии по показателям производительности и т. д., но, например, по фактическим запросам webapi ..?

Я читал этот вопрос, но мои сомнения все еще остаются: Выборка Insight App Insights (ItemCount)

1 Ответ

0 голосов
/ 07 июня 2018

При конфигурации по умолчанию Application Insights примет решение либо выполнить выборку, либо нет в начале запроса, а затем, соответственно, либо соберет все, либо отбросит все.Этот подход предоставляет некоторые гарантии, например, если вы просматриваете какую-либо транзакцию, то видите ее полностью, включая некоторые нижестоящие компоненты.

Вы правы, что при таком подходе возможно пропустить некоторые ошибки.Наш опыт показывает, что даже для крупномасштабных приложений (5000 RPS / экземпляр) такой подход по-прежнему фиксирует ошибки, если они продолжают возникать.

Есть две вещи, которые можно смягчить:

  1. Собрать все исключения (по-прежнему не будет собирать ошибочные запросы).Для этого вы можете изменить следующий раздел адаптивной выборки из этого:

    <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
        <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
        <ExcludedTypes>Event</ExcludedTypes>
    </Add>
    <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
        <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
        <IncludedTypes>Event</IncludedTypes>
    </Add>
    

Кому:

    <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
        <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
        <ExcludedTypes>Event,Exception</ExcludedTypes>
    </Add>
  <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
    <MaxTelemetryItemsPerSecond>100</MaxTelemetryItemsPerSecond>
    <IncludedTypes>Exception</IncludedTypes>
  </Add>
  <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
        <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
        <IncludedTypes>Event</IncludedTypes>
    </Add>

Обратите внимание, Application Insights не обязательно будет собирать неудавшиеся запросы.

Можно написать собственный процессор сэмплирования ( TelemetryProcessor ).Например, собирать ошибочные запросы, зависимости, исключения, а в остальном применять собственную логику выборки.
...