应用程序见解抽样文档(https://docs.microsoft.com/en-us/azure/application-insights/app-insights-sampling)声明如下:
"例如,如果对于失败的请求,您的应用会发送其他遥测项目(例如从此请求记录的异常和跟踪),则采样不会拆分此请求和其他遥测。它要么一直保留它们,要么将它们放在一起。"
很难想象,但这是否意味着导致异常的一些异常或更好的请求可能会被忽略并且如果采样算法需要减少记录的数量,则不会记录?我发现很难将它放在正确的上下文中,只需开始使用应用程序见解并尝试找出所有可能性。我理解这对于过滤掉一定比例的遥测性能指标等非常有价值,但对于实际的webapi请求,例如..?
我已经阅读了这个问题,但我的疑问仍然存在: Azure App Insights Sampling (ItemCount)
答案 0 :(得分:3)
使用默认配置,Application Insights将决定是否在请求开始时进行采样,然后相应地收集所有内容或删除所有内容。这种方法提供了一些保证,例如,如果您正在查看某个事务,那么您可以完全看到它,包括一些下游组件。
你说对了,采用这种方法可能会错过一些错误。我们的经验表明,即使对于大规模应用程序(5000 RPS /实例),这种方法仍然可以捕获错误,如果它们继续发生。
有两件事可以缓解这个问题:
收集所有异常(仍然不会收集失败的请求)。为此,您可以从中修改以下自适应采样部分:
<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不一定会收集失败的请求。