如何将特定端点从New Relic告警策略中排除
实现指定端点排除New Relic告警的三种可行方案
方案1:Java Agent层面忽略指定事务上报
适合不需要保留这些端点监控数据的场景,对应你查询到的Ruby Agent忽略事务的Java版本实现:
- 单个端点忽略:在对应Controller的目标方法上添加New Relic官方注解
@Trace(dispatcher = true, ignoreTransaction = true, ignoreApdex = true),需先引入New Relic API依赖:
<dependency> <groupId>com.newrelic.agent.java</groupId> <artifactId>newrelic-api</artifactId> <version>与你使用的New Relic Agent版本一致</version> <scope>provided</scope> </dependency>
- 批量端点忽略:实现Spring MVC拦截器,匹配到要排除的CronJob端点路径时,调用
NewRelic.ignoreTransaction()方法,当前请求的所有统计数据不会上报到New Relic,自然不会触发告警。
方案2:修改告警NRQL规则过滤端点
适合需要保留端点监控数据,仅需排除告警触发的场景:
你当前的告警策略都是基于NRQL查询做阈值判断,只需在原有查询的WHERE条件中追加端点过滤规则即可,示例:
-- 原有Web响应时间告警查询 SELECT average(duration) FROM Transaction WHERE appName = '你的Spring Boot应用名' AND transactionType = 'Web' -- 追加排除规则,替换为你实际的端点事务名 AND name NOT IN ('WebTransaction/SpringController/GET /api/cron/task1', 'WebTransaction/SpringController/POST /api/cron/task2')
事务的完整name值可以直接从New Relic控制台的事务详情页复制,确保匹配准确。
方案3:自定义标签动态过滤
适合需要排除的端点较多、变动频繁的场景:
- 实现Spring拦截器,判断如果是Kubernetes CronJob触发的请求(可通过请求头、来源IP、固定参数等标识判断),调用
NewRelic.addCustomParameter("excludeFromAlert", true)给事务打自定义标签 - 所有告警规则的NRQL查询中追加
AND custom.excludeFromAlert IS NOT true即可,后续新增需要排除的端点不需要修改告警规则,只需满足拦截器的CronJob判断条件即可自动过滤。
注意事项
- 方案1会彻底丢弃被排除端点的监控数据,如需排查这些端点的问题时无法查询历史数据,优先选方案2或3
- 后台任务类型的事务transactionType为
Other,修改对应告警规则时注意事务类型匹配
内容的提问来源于stack exchange,提问作者hakansander
相关产品推荐
相关产品推荐

