我们正在用swag升级FutureStack注册,只到4月30日。适用条款和条件。 现在注册

5种方法自定义您的新Relic Java代理

6分钟阅读

通过肯阿伦斯

在新的遗物APM和新的遗物见解中有很多方法可以在新的遗物APM和新的遗物洞察中定制您的代理人,但并不总是容易弄清楚哪种方法是正确的,以满足您的特定需求。让我们快速贯穿各种选项以及他们所做的事情,并为您提供一种参与使用它们的感觉。

这篇文章涵盖了新的Relic Java代理,你可以在Java代理自定义仪器概述,它解决了从注释到XML到UI仪器编辑器的技术方法。您可以在此GitHub存储库中看到我的示例的源代码:https://github.com/kenahrens/spring-travel。我们计划在即将介绍的博客帖子中解决其他新的遗物代理商。

自定义事务的命名

:一方面

功能:修改新遗物UI中显示的名称

自定义路径

:一方面

功能:在APM中添加事务跟踪的深度。

自定义属性

:APM和见解

功能:将额外信息添加到APM中的事务跟踪或见解中的事件。

自定义事件

:洞察

功能:将事件发送到Insights(专为无法由代理收集的事件设计)

自定义指标

:仅限APM

功能:向APM发送任意度量(最适用于与交易无关的连接计数和池大小的东西)

自定义事务的命名

New Relic Agents有关于如何在UI中命名事务的开箱即用规则。不幸的是,有时这些规则不适用于您的环境,因此Agent API允许您轻松地修改事务名称以满足您的需要。

在1之前的Ahrsens

请注意,特定的API调用因语言而异,您需要将代码放在每个事务调用它的地方。见下面Java代码的示例

进口com.newrelic.api.agent.NewRelic;...公共类JPabookingService实施预订{...公共列表Findhotels(SearchCriteria Criteria){newrelic.setTransactionName(“Web”,“查找酒店”);...} ......}

(有关Java代理如何确定交易的名称的详细信息,请参阅命名Web交易的新遗物文档:https://docs.newrelic.com/docs/agents/java-agent/instrumentation/naming-web-transactions。)

自定义路径

New Relic Agents包括对许多技术框架的开箱即用支持。然而,有时您使用的框架可能不受支持,或者您可能使用的是为公司内部使用而创建的专有框架。

在这些情况下,您可以创建Custom Tracers来为New Relic当前没有监视的框架添加可见性。这让您可以监视代码中单个方法的性能。请注意,特定的API调用(或XML的使用)因语言而异。在事务跟踪中会显示额外的可见性。

在蓝色泡泡之前

以下是制作自定义示踪剂的示例细分。在我们的这段片段中github存储库,“蓝色气泡”表示时间花费在HotelsMvcController.list()中的某个地方。我们使用XML扩展添加了额外的工具。要工作,这个文件应该放在NEWRELIC_HOME/extensions中。

<?xml version = " 1.0 " encoding = " utf - 8 " ?>    org.springframework.samples. trip .services. xsd " name="extension-example" version="1.0" enabled="true">    slowThisDown    

(有关更多信息,请参阅我们的基于XML的Java Instrumentation文档:https://docs.newrelic.com/docs/agents/java-agent/custom-instrumentation/java-instrumastation-xml.。)

自定义属性

新的遗物代理为每个事务收集标准属性(也称为参数)。但您可能对您想要收集的应用程序具有特殊属性。这些自定义属性在事务跟踪中显示以及洞察事件。

自定义属性

代理API使添加自定义属性变得很容易。例如,在Java中,简单地放置来自我们GitHub存储库的此代码在每个事务中调用它:

进口com.newrelic.api.agent.NewRelic;...public class JpaBookingService implements BookingService{…public List findHotels(SearchCriteria criteria){…String pattern = getSearchPattern(criteria);Log.debug("搜索模式:" +模式);NewRelic。addCustomParameter(“searchCriteria”模式);...} ......}

(有关更多信息,请参见Insights自定义属性在新的遗物文档中:https://docs.newrelic.com/docs/insights/new-relic-insights/decorating-events/insights-custom-attributes。)

自定义事件

当您希望记录属于“富事件”(通常是不定期发生的事件)的几段元数据时,可以使用自定义事件。例如,您可能希望在进行预订时记录事件,并包括收入、酒店名称、酒店城市等数据。

通过代理API,可以将这些自定义事件添加为洞察中的新事件类型。

数据资源管理器

要添加自定义事件,您将创建一个显示相关键/值对的地图,然后使用API​​发布事件。这是一个Java中的示例

hashmap bookingmap = new hashmap();bookingmap.put(“bookingnumberoftants”,booking.getnights());bookingmap.put(“bookingrevenue”,Integer.Valueof(Booking.gettotal()。Intvalue()));bookingmap.put(“bookingrate”,Integer.Valueof(Booking.gethotel()。getPrice()。Intvalue()));bookingmap.put(“bookinghotelname”,booking.gethotel()。getname()+“ - ”+ booking.gethotel()。getcity()+“,”+ booking.gethotel()。getstate()。... BookingMap.put(“BookingAgent”,Booking.getUser()。getName());newrelic.getAgent()。getInsights()。regorcustomevent(“预订活动”,BookingMap);

(有关更多信息,请参见通过新的遗物APM代理插入自定义事件https://docs.newrelic.com/docs/insights/new-relic-insights/adding-querying-data/inserting-custom-events-new-relic-apm-agents.。)

自定义指标

New Relic支持标准的非事务性度量。但是Custom Metrics可以用来记录特殊的参数—包括大多数任意的数值,例如如下所示的Spring Travel应用程序上完成预订的收益值。自定义指标可以在自定义仪表板中显示,也可以在警报策略中使用。基本上,自定义度量可以用于您想要监视和绘制的任何数字。

编辑部件图

要使用自定义指标,只需添加呼叫即可使用像自定义/度量标准名称这样的名称发送数字度量。这是一个Java中的示例

进口com.newrelic.api.agent.NewRelic;...公共类JPabookingService实施预订{...公共空白持有书(预订预订){... Newrelic.RecordMetric(“自定义/预订收入”,Integer.Valueof(Booking.gettotal()。Intvalue());...} ......}

(有关为什么在APM中使用自定义度量的详细信息,请参见自定义指标在新的遗物文档中:https://docs.newrelic.com/docs/data-analysis/metrics/custom-metrics

其他语言

该帖子解决了新的遗物Java代理,但此过程类似于新遗物支持的所有语言。我们计划在即将介绍的博客帖子中解决其他新的遗物代理商。