我正在使用具有适度负载的生产系统。跟踪事件和AI发送的数量太详细,并且很难在以后涉及日志。
对服务器的每个请求都包含以下信息:
Message='Selected formatter='JsonMediaTypeFormatter', content-type='application/json; charset=utf-8'', Operation=DefaultContentNegotiator.Negotiate
和
Message='Action returned 'RZ.API.Support.Controllers.OperationActionResult`1[System.Collections.Generic.List`1[RZ.Entity.System.ClientMessage]]'', Operation=ReflectedHttpActionDescriptor.ExecuteAsync
每个请求可能有30个条目!
我只需要请求类型:
12/16/2015, 9:17:29 AM - REQUEST
GET /api/v1/user/messages
结果代码 - 以及我在此过程中做的任何自定义内容。
所以基本上我想修剪除请求和结果(以及任何错误等)之外的大多数痕迹。
我在AI配置中关注这个坏孩子:
<Add Type="Microsoft.ApplicationInsights.Web.RequestTrackingTelemetryModule, Microsoft.AI.Web"/>
...但我不能为我的生活看到任何doco如何要求它减少发送的东西的数量!
非常感谢任何帮助。
约旦。
P.S。所有额外的记录都使我们超过了每月1500万的计划,我们不得不升级!
答案 0 :(得分:3)
RequestTrackingTelemetryModule不执行您所描述的任何操作。它添加了请求,异常和依赖项集合。在您的示例中,您说您看到详细的WebApi跟踪被转发到ApplicationInsights。我假设您实际使用Application Insights日志记录适配器。
在这里,您可以阅读如何将WebApi跟踪转发到AI版本1:http://apmtips.com/blog/2014/11/13/collect-asp-dot-net-mvc-web-api-traces-with-application-insights/
在这里,您可以阅读如何将WebApi跟踪转发到AI版本2: http://apmtips.com/blog/2016/01/05/webapi-tracing-powered-by-ai-in-vs2015-update1/
日志适配器的源代码:https://github.com/Microsoft/ApplicationInsights-dotnet-logging
文档:https://azure.microsoft.com/en-us/documentation/articles/app-insights-search-diagnostic-logs/#trace
所以你有多种选择:
答案 1 :(得分:1)
回答我自己的问题。
在我的WebApiConfig文件中,我有:
config.EnableSystemDiagnosticsTracing();
删除此行可以彻底减少我想要达到的效果。
答案 2 :(得分:1)
从Application Insights SDK 2.0版开始,您还可以通过启用采样来限制发送的数据:
https://azure.microsoft.com/en-us/documentation/articles/app-insights-sampling/
如果你添加
<MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
到你的ApplicationInsights.config,sdk可以限制多少出去。上面的文章有很多设置/配置可用于获取其他特定行为,但上面的那个是最简单的。
答案 3 :(得分:0)
据我所知, RequestTrackingTelemetryModule 没有可用的配置选项。您可以关闭它(通过卸载相应的NuGet包或注释xml)和/或安装不同/附加的遥测模块。
有关模块和配置选项的列表,请参阅app-insights-configuration-with-applicationinsights-config。