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

如何从New Relic事务获取TraceId并返回给Rails客户端?

在Rails应用中获取New Relic TraceID并返回为响应头

问题描述

我有一个运行New Relic Ruby Agent v7.2版本的Rails应用,已启用分布式追踪功能。启用该功能后,New Relic会为每个被记录的API调用创建TraceId属性,我可在仪表盘查看该属性,但想知道如何获取该TraceId并将其作为响应头返回给调用我API的客户端。

我希望在application_controller.rb中实现类似如下的逻辑:

after_action :set_trace_id_header

# ... 其他代码 ...

def set_trace_id_header
   response.headers["NR-TraceId"] = get_nr_trace_id
end

def get_nr_trace_id
  # NewRelic::Agent.something_to_get_traceid_from_current_transaction?
end

解决方案

在New Relic Ruby Agent v7.x版本中,可以通过当前事务对象直接获取TraceId,修改后的代码如下:

after_action :set_trace_id_header

# ... 其他代码 ...

def set_trace_id_header
   response.headers["NR-TraceId"] = get_nr_trace_id
end

def get_nr_trace_id
  # 获取当前New Relic事务对象,仅在请求上下文内有效
  transaction = NewRelic::Agent.current_transaction
  transaction&.trace_id
end

说明

  • NewRelic::Agent.current_transaction会返回当前正在处理的请求对应的事务对象,仅在Rails请求的生命周期内可用
  • 事务对象的trace_id方法直接返回分布式追踪的TraceId字符串
  • 确保你的newrelic.yml中已经开启了分布式追踪:distributed_tracing.enabled: true

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 13:01:38