使用 Java Agent API 进行监控
通常,APM Insight Java Agent 会监控 常用框架和库。
通过 Java Agent API,您可以跟踪自定义指标,以监控特定于您应用程序的参数。这有助于进行上下文调试。
Java Agent API 允许您为需要监控的方法添加注解。此外,您可以为方法和组件提供自定义名称,以便于识别和故障排除。
要求
在通过 Java Agent API 进行监控之前,请确保满足以下要求:
- 您正在运行 Java 1.6 或更高版本。
- 您已下载 API JAR(Java 归档)文件(apminsight-javaagent-api.jar),该文件已捆绑在 Java Agent 压缩包中。(您可以从 Site24x7 账户下载 Java Agent。)
- API Jar 文件在您应用程序的构建路径中可用,并与您的应用程序捆绑在一起(推荐位置:WEB-INF/lib)。
- Maven 用户如需将 Java Agent API 构件添加为项目依赖,请按照此处的说明操作。
用法
您可以将 Java Agent API 用于以下需求:
使用 Java Agent API 进行自定义埋点
除了应用程序框架中定义的默认类和方法之外,您还可以使用自定义埋点监控您自己的应用程序特定方法和类。
自定义埋点可以通过 Java Agent API 实现,也可以通过配置文件实现。
Java Agent API 为您提供注解,用于对方法和类进行埋点。
使用 Java Agent API 跟踪异常(版本 3.5)
虽然您可以借助代理跟踪异常,但 Java Agent API 为监控/调试提供了更多可见性和自定义选项。
通常情况下,代理会捕获已记录或未捕获的异常。在大多数情况下,开发人员会在代码中捕获异常并进行处理,而不会将其传播出去。这类异常可以使用此 API 进行跟踪。通过 Java Agent API,您可以提供自定义消息和实际的可抛出异常对象,并在异常发生时进行跟踪。
您可以在应用程序代码中添加 API,以提供错误消息和异常。代理随后会跟踪这些信息并将其与相应的事务关联。
您可以在 APM Insight 的"异常"选项卡下查看这些异常。
语法:
CustomTracker.trackException(String message, Throwable throwable)
CustomTracker.trackException(Throwable throwable)
示例输入:

示例输出:

监控代码块
您还可以使用 Java Agent API 在方法级别监控特定代码块。要监控代码块,请将代码块包含在 CustomTracker 新对象和 stop 方法之间。
您可以为代码块关联名称、组件和异常。目前,名称仅支持空格、连字符、下划线和字母数字字符。块名称最长可达 64 个字符,组件名称限制为 32 个字符。
创建新的 CustomTracker 对象标志着待监控块的起始点;块的结束使用 <trackerObj>.stop() 方法标记。如果块中存在异常,可以将异常对象传递给 stop 方法;这会自动将异常与相应代码块及其事务关联。
语法:
CustomTracker tracker = new CustomTracker("block__name");
CustomTracker tracker = new CustomTracker("block_name", "component_name");
tracker.stop();
tracker.stop(exceptionObj);
示例:
CustomTracker tracker = new CustomTracker("operation_"+opId);
try {
// some operations
tracker.stop();
}
catch (NumberFormatException nfe) {
tracker.stop(nfe);
// some rescue operations
}
示例输出:

向追踪添加自定义参数
为了赋予追踪更丰富的上下文含义,您可以添加额外参数,以帮助识别事务追踪的上下文。
上下文指标可以是任何内容,如会话 ID、用户 ID 或某些方法参数,这些都能帮助您识别事务追踪的具体信息。
每条事务追踪最多可添加 10 个参数,这些参数可在"追踪摘要"中查看。
要添加自定义参数,请遵循以下语法:
语法:
CustomTracker.addParameter("key", value);
Key - 参数名称
Value - 参数值。可以是任意类型,代理内部会使用 Object.toString() 将其转换为字符串。
示例:
import com.manageengine.apminsight.agent.api.CustomTracker;
....
{
....
CustomTracker.addParameter("User ID", user_id);
....
}
输出:

自定义事务名称
如果您希望为事务定义唯一名称以便于追踪和识别,可以使用我们的 Agent API。
语法
CustomTracker.setTransactionName("name");
name - 事务的期望名称
示例:
import com.manageengine.apminsight.agent.api.CustomTracker;
....
{
....
CustomTracker.setTransactionName("reseller/search");
....
}
输出:

