Я не думаю, что это поддерживается из коробки, но вы можете написать свой собственный ITelemetryProcessor
.
См .: https://docs.microsoft.com/en-us/azure/azure-monitor/app/api-filtering-sampling#filtering-itelemetryprocessor
Application Insights в .NET использует цепочку телеметрических процессоров, которые вы можете использовать для фильтрации телеметрии, поэтому вы можете написать свой собственный, который проверяет resultCode
(я думаю, что именно так Application Insights называет код состояния HTTP, но вы Придется дважды проверить) объект телеметрии запроса и утвердить его, если он равен 500 (или 5хх), но имеет только 10% шансов на его отправку, если это 2хх или 3хх. Вы можете переопределить метод OKToSend()
, чтобы выполнить вышеуказанную проверку на входе ITelemetry
, и вернуть соответственно true / false.
Может быть, что-то вроде (я написал это в браузере, оно не обязательно будет работать без нареканий как есть):
// Approves 500 errors and 10% of other telemetry objects
private bool OKtoSend (ITelemetry telemetry)
{
if (telemetry.ResponseCode == 500) {
return true;
} else {
Random rnd = new Random();
int filter = rnd.Next(1, 11);
return filter == 1;
}
}