Выборка AppInsights, чтобы всегда или чаще включать медленные вызовы

Мы хотим настроить мониторинг AppInsights для приложения WebApi. В 0,5–1% обращений приложение могло давать ответы с ошибками. Если мы хотим включить все исключения в AppInsights, у нас есть возможность всегда включать исключения.

Чего я не увидел в документации по App Insights, так это возможности аналогичным образом управлять медленными вызовами. Если около 2% вызовов API выполняются медленнее, например, API, обработка которого обычно занимает 2 секунды, может ответить через 5–10 секунд на 2% вызова. Мы хотели бы иметь возможность собирать эти медленные вызовы, возможно, все или более высокую выборку, чтобы было больше данных для устранения неполадок.

При агрессивной выборке мы рискуем, что эти 2% вызовов никогда или редко будут отображаться в AppInsights. Например, Служба поддержки не будет использовать большинство хороших звонков для устранения проблем, но будет более заинтересована в более подробном изучении медленных.

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

Доступен ли более детальный контроль выборки для удовлетворения этой потребности?


person Praveen Nayak    schedule 06.09.2019    source источник


Ответы (1)


Да, есть также doc об этом в этом разделе «Есть определенные редкие события, которые я всегда хочу видеть. Как я могу пройти их через модуль выборки?»:

Лучший способ добиться этого - написать собственный TelemetryProcessor, который устанавливает SamplingPercentage равным 100 для элемента телеметрии, который вы хотите сохранить, как показано ниже. Это гарантирует, что все методы выборки будут игнорировать этот элемент из любых соображений выборки.

После создания настраиваемого процессора TelemetryProcessor добавьте фрагмент кода:

    if(somecondition, like the time is slower than 2 seconds)
    {
        ((ISupportSampling)item).SamplingPercentage = 100;
    }
person Ivan Yang    schedule 06.09.2019
comment
Такой подход не был бы идеальным. Например, если в приложении 10 API, у каждого API может быть разное время обработки. Мы не хотели бы отслеживать TAT для каждого API. Вместо этого, если Azure может автоматически рассчитывать базовый TAT для каждого API, и вызовы, для которых TAT равно X, число стандартных отклонений от базового уровня будет рассматриваться как медленное и с более высоким приоритетом для захвата. Некоторые другие инструменты мониторинга, такие как AppDynamics, делают это - docs.appdynamics.com/display/PRO45/Dynamic + Базовые показатели - person Praveen Nayak; 07.09.2019