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

如何通过Java Agent在NewRelic中实现计数器并使用NRQL查询?

解决NewRelic计数器指标无法查询的问题

正确的计数器实现代码

你的代码写法本身符合NewRelic Java Agent API规范,以下是确认后的可运行版本(添加必要注释):

import com.newrelic.api.agent.NewRelic

fun incrementCounter(increment: Int = 1) {
    // 遵循NewRelic自定义指标命名规范,以Custom/开头
    val metricName = "Custom/Foo/Bar"
    // 调用API递增计数器,参数为指标名和每次递增的数值
    NewRelic.incrementCounter(metricName, increment)
}

正确的NRQL查询方式

计数器指标属于Metric数据集,但直接查询*可能因数据聚合规则无法返回预期结果,需使用聚合函数配合时间范围查询:

1. 查询总递增次数

FROM Metric SELECT sum(value) WHERE metricName = 'Custom/Foo/Bar' SINCE 1 hour ago

sum(value)会累加所有上报的增量值,得到总计数。

2. 按时间序列查看递增趋势

FROM Metric SELECT sum(value) WHERE metricName = 'Custom/Foo/Bar' TIMESERIES 1 minute SINCE 1 hour ago

TIMESERIES 1 minute会按每分钟聚合数据,展示计数器的变化趋势。

3. 查看原始上报记录(仅用于调试)

如果需要验证是否有数据上报,可缩小时间范围查询原始数据:

FROM Metric SELECT * WHERE metricName = 'Custom/Foo/Bar' SINCE 10 minutes ago

排查要点

  • 数据延迟:NewRelic指标上报存在1-5分钟的延迟,调用方法后不要立即查询,等待一段时间再尝试。
  • 命名大小写:metricName是区分大小写的,确保查询语句中的名称和代码中完全一致。
  • Agent日志验证:查看NewRelic Agent日志(默认路径logs/newrelic_agent.log),搜索Custom/Foo/Bar或Metric关键字,确认是否有上报成功的日志,或权限、格式错误提示。
  • Agent版本兼容性:v8.11.0版本的Java Agent完全支持incrementCounter API,无需升级版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 13:17:43