我有一个基于 Java 17 的 Spring Boot 3.1.5 应用程序,在 AKS 上的 Kubernetes 1.27.x 集群中进行了 Docker 化和执行。我使用 New Relic Java 代理 v8.7.0。
我插入了 NewRelic java 代理,并且在 UI 中看到了指标。
当我选择交易时,我可以看到有关外部API调用或数据库查询的详细信息,但我看不到我自己的代码的任何信息。
如何自动检测我的代码?
New Relic 的 Java 代理将从它可以识别的库/框架中开箱即用地检测代码。
不幸的是,它无法自动检测其余代码,因为这会导致过多的开销。例如,如果所有 getter 都已检测,它将为每个 getter 添加处理。而且它会在该痕迹中显示所有这些,从而导致那里的噪音太大。
为了提高您自己代码的可见性,您可以通过 annotations、XML 或 Custom Instrumentation editor 添加自定义检测。
要使用注释来检测您的方法,您需要在项目中添加对
newrelic-api
的依赖项,然后只需向您想要在其中可见的方法添加注释:
@Trace
public String method() {
// do things
}
对于 XML,您可以创建一个文件并将其添加到与代理 jar 位于同一文件夹中的
extensions
文件夹中。这是此类文件的删节示例:
...
<instrumentation metricPrefix="EXAMPLE">
<pointcut transactionStartPoint="true">
<className>full.path.to.MyClass</className>
<method>
<name>myMethod</name>
</method>
</poincut>
</instrumentation>
...