如何自定义Application Insights并禁用指定类型请求的监控
关于Application Insights自定义过滤静态资源请求的操作方案
完全支持自定义监控规则过滤指定请求,针对.js/.css/.png这类静态资源的过滤需求,可根据你接入的SDK类型选择对应实现方式:
方法1:后端服务(以ASP.NET Core为例)通过遥测处理器过滤
- 第一步:创建自定义遥测处理器类,实现静态资源后缀匹配逻辑
using Microsoft.ApplicationInsights; using Microsoft.ApplicationInsights.Channel; using Microsoft.ApplicationInsights.DataContracts; using Microsoft.ApplicationInsights.Extensibility; public class StaticResourceFilterTelemetryProcessor : ITelemetryProcessor { private readonly ITelemetryProcessor _next; // 可按需扩展需要过滤的资源后缀 private readonly List<string> _ignoreSuffixes = new() { ".js", ".css", ".png", ".jpg", ".gif", ".ico", ".woff2" }; public StaticResourceFilterTelemetryProcessor(ITelemetryProcessor next) { _next = next; } public void Process(ITelemetry item) { // 仅过滤请求类型的遥测数据,不影响异常、性能等其他监控 if (item is RequestTelemetry request) { var requestPath = request.Url?.AbsolutePath ?? string.Empty; if (_ignoreSuffixes.Any(suffix => requestPath.EndsWith(suffix, StringComparison.OrdinalIgnoreCase))) { // 匹配到过滤规则,直接终止上报流程 return; } } // 其余遥测数据继续传递处理 _next.Process(item); } }
- 第二步:在服务注册逻辑中添加该处理器
若使用.NET 6+的顶层语句,在Program.cs中添加如下注册代码:
若使用旧版services.AddApplicationInsightsTelemetryProcessor<StaticResourceFilterTelemetryProcessor>();Startup.cs,则在ConfigureServices方法中添加上述注册代码即可。
方法2:前端JS SDK通过遥测初始化器过滤
如果是前端页面直接接入Application Insights JS SDK,可在SDK初始化完成后添加如下过滤逻辑:
const ignoreSuffixes = ['.js', '.css', '.png', '.jpg', '.gif', '.ico', '.woff2']; // 添加遥测初始化器 appInsights.addTelemetryInitializer((envelope) => { // 仅过滤请求类遥测 if (envelope.baseType === 'RequestData') { const requestUrl = envelope.baseData.name || ''; if (ignoreSuffixes.some(suffix => requestUrl.toLowerCase().endsWith(suffix))) { // 返回false即阻止该条数据上报 return false; } } });
配置验证
- 配置完成后访问站点静态资源,等待1~2分钟后进入Application Insights的请求面板查询,确认对应后缀的请求无上报记录即配置生效
- 该过滤规则仅屏蔽指定请求的上报,不会影响异常、依赖调用、性能指标等其他监控数据的正常采集
内容的提问来源于stack exchange,提问作者Rodrigo Kiguti
相关产品推荐
相关产品推荐

