You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NewRelic告警查询不支持Having子句,如何实现双重条件告警?

解决NewRelic告警同时校验错误率与错误数的问题

由于NewRelic告警查询不支持HAVING子句,也无法直接在单条告警条件中同时引用两个指标,你可以通过以下两种方式实现需求,确保仅当错误率超过阈值且总错误数达标时触发告警,避免单次请求失败(100%错误率但错误数仅1)的误触发。

方法一:子查询过滤出符合条件的结果

通过嵌套查询先计算每个事务的错误数和错误率,再在外层筛选出同时满足双条件的条目。只要查询返回数据,就触发告警。

SELECT * FROM (
  SELECT 
    count(*) AS ErrorCount,
    (filter(count(*), WHERE error = true AND http.statusCode = '500') / count(*)) * 100 AS ErrorRate
  FROM Transaction 
  WHERE appName = 'app_name' 
    AND transactionType = 'Web' 
  FACET name 
  LIMIT 200
) WHERE ErrorCount > 5 AND ErrorRate > [你的阈值]

说明:

  • 将[你的阈值]替换为实际错误率阈值(例如50代表50%)
  • 告警规则设置为当查询返回任何结果时触发,仅符合双条件的事务会触发告警。

方法二:用CASE生成告警标记字段

在查询中新增布尔标记字段,直接标记是否满足告警条件,再通过告警规则判断该字段的值。

SELECT 
  count(*) AS ErrorCount,
  (filter(count(*), WHERE error = true AND http.statusCode = '500') / count(*)) * 100 AS ErrorRate,
  CASE 
    WHEN ErrorCount > 5 AND ErrorRate > [你的阈值] 
    THEN 1 
    ELSE 0 
  END AS ShouldAlert
FROM Transaction 
WHERE appName = 'app_name' 
  AND transactionType = 'Web' 
FACET name 
LIMIT 200

说明:

  • 告警规则设置为ShouldAlert equals 1,当标记为1时触发告警
  • 这种方式保留了所有事务的指标数据,同时清晰标记出需要告警的条目

内容的提问来源于stack exchange,提问作者Sathish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 15:42:12