如何在New Relic仪表板用自定义客户端名称替换HTTP.URL追踪微服务
New Relic中替换HTTP URL为自定义客户端名称的最优实现方案
一、优先方案:代码注入自定义属性(数据源层面处理)
直接在微服务代码中,利用New Relic Agent API给HTTP请求Span添加自定义客户端名称属性,这是最可靠的方式,能避免后续规则维护的复杂度:
- 不同语言的Agent API示例:
- Java:
NewRelic.addCustomParameter("custom.clientName", "你的客户端名称");(在HTTP请求发起前调用) - Python:
newrelic.agent.add_custom_parameter("custom.clientName", "你的客户端名称") - Go:
newrelic.StartSpan(ctx, "http-request", newrelic.WithAttribute("custom.clientName", "你的客户端名称"))
- Java:
- 核心逻辑:根据你的
client/HAIP映射关系,在发起请求时匹配对应的客户端名称,注入到Span属性中。
二、无代码方案:用规则引擎转换现有Span数据
如果无法修改业务代码,可通过New Relic规则引擎对已采集的Span数据进行属性转换:
- 进入New Relic One,导航到「数据管理 > 规则」
- 创建新规则,选择
Span作为目标数据源 - 设置筛选条件:仅处理HTTP类型的Span,输入
span.category = 'http' - 添加「转换」动作,根据
http.url配置映射规则:- 示例规则:
IF http.url LIKE 'https://haip-xxx/%' THEN SET custom.clientName = '客户端A' - 添加多个条件条目,覆盖所有
HAIP/客户端映射关系
- 示例规则:
- 保存规则,等待5-10分钟后,新采集的Span会自动带上
custom.clientName属性
三、在仪表板创建追踪面板
有了custom.clientName属性后,即可用NRQL查询构建可视化面板:
- 进入「仪表板」,创建新面板或编辑现有面板
- 选择「查询构建器」,输入NRQL查询语句:
- 统计各客户端调用次数:
SELECT count(*) FROM Span WHERE span.category = 'http' AND custom.clientName IS NOT NULL FACET custom.clientName TIMESERIES - 统计各客户端平均响应耗时:
SELECT average(duration) FROM Span WHERE span.category = 'http' AND custom.clientName IS NOT NULL FACET custom.clientName TIMESERIES
- 统计各客户端调用次数:
- 选择合适的可视化类型(柱状图、折线图、表格等),将面板添加到仪表板即可
进阶优化:用Lookup Table管理映射关系
如果映射关系频繁变动,可使用New Relic Lookup Table统一管理:
- 进入「数据管理 > Lookup Tables」,创建新表,设置键为
http.url的匹配值,值为客户端名称 - 在规则引擎的转换动作中,使用
LOOKUP(http.url, '你的Lookup表名称')来自动匹配并设置custom.clientName属性,无需逐个添加条件
内容的提问来源于stack exchange,提问作者Udectron
相关产品推荐
相关产品推荐

