AgentRun 自定义运行时 Agent 支持接入阿里云 ARMS 应用监控,为常见 AI 应用框架提供应用监控能力。接入 ARMS 探针后,可以查看 AI 应用的大模型调用次数、Token 使用次数、Trace 数、会话数等信息。本文介绍如何为自定义运行时 Java Agent 接入 ARMS 应用监控。
前提条件
-
已开通 ARMS 服务。具体操作请参见开通ARMS。
-
Java 版本选择自定义运行时中的Java 8、Java 11、Java 17和Java 21。
与"自定义镜像部署"方案不同,本方案无需修改 Dockerfile 或构建镜像,所有配置均通过 AgentRun 控制台完成,更适合快速迭代和轻量级部署场景。
配置步骤
登录AgentRun 控制台。
1、设置探针环境变量
在 Agent 运行时详情页面,选择概览页签,单击编辑配置,添加以下环境变量:
ARMS_APP_NAME={AgentName}
ARMS_LICENSE_KEY={LicenseKey}
ARMS_REGION_ID={RegionId}
变量含义说明:
-
ARMS_APP_NAME:Agent 名称,用于在 ARMS 应用监控中标识当前应用。
-
ARMS_LICENSE_KEY:ARMS 应用接入凭证,可通过 OpenAPI 获取,具体方法参见列出LicenseKey。
-
ARMS_REGION_ID:可观测数据上报的地域。
2、修改启动命令
方式一:使用JAVA_TOOL_OPTIONS环境变量
在环境变量中添加JAVA_TOOL_OPTIONS,该变量的值会在 JVM 启动时自动拼接到启动命令中。
JAVA_TOOL_OPTIONS="-javaagent:/opt/AliyunJavaAgent/aliyun-java-agent.jar -Darms.licenseKey=${ARMS_LICENSE_KEY} -Darms.appName=${ARMS_APP_NAME} -Daliyun.javaagent.profileId=${ARMS_REGION_ID}"
方式二:配置启动脚本,使用数组来存储Java启动参数
ARMS 接入需要添加 4 个启动参数,考虑到启动命令较为复杂,建议通过配置启动脚本bootstrap来启动。
示例代码如下:
#!/bin/bash
set -eo pipefail
# 1. 设置ARMS应用名称
# 如果ARMS_APP_NAME环境变量存在且不为空,则使用其值;否则使用默认值。
appName="${ARMS_APP_NAME:-Custom_Java_Arms_Demo}"
echo "appName: ${appName}"
# 使用数组来存储Java启动参数,这是处理参数的最佳实践
java_opts=()
# 2. 添加ARMS参数
if [[ -n "${ARMS_LICENSE_KEY}" ]]; then
echo "ARMS_LICENSE_KEY is set: ${ARMS_LICENSE_KEY}, enabling ARMS agent."
# 使用公共层的ARMS程序路径
java_opts+=("-javaagent:/opt/AliyunJavaAgent/aliyun-java-agent.jar")
java_opts+=("-Darms.licenseKey=${ARMS_LICENSE_KEY}")
java_opts+=("-Darms.appName=${appName}")
java_opts+=("-Daliyun.javaagent.profileId=${ARMS_REGION_ID}")
else
echo "Warning: ARMS_LICENSE_KEY not set. ARMS agent will not be enabled."
fi
# 3. 启动应用程序
# 添加其他固定的Java参数
java_opts+=("-Dserver.port=8000")
echo "Final Java command: exec java ${java_opts[*]} -jar /code/target/OpenAI-Demo-Java.jar"
exec java "${java_opts[@]}" \
-jar /code/target/OpenAI-Demo-Java.jar
设置文件权限为可执行权限(终端窗口执行命令chmod +x bootstrap)。
在 Agent 运行时详情页面,单击编辑配置,修改启动命令的值为启动脚本/bootstrap。
验证接入
-
保存配置并更新 Agent。
-
发起几次业务调用。
-
约 1 分钟后,前往以下任一位置查看数据:
-
若能看到调用链、Token 消耗、LLM 调用次数等数据,即表示接入成功。