You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Maven Jetty插件配置OpenTelemetry Java Agent

为Jetty Maven插件运行的Jersey项目接入OpenTelemetry Java Agent

你当前的项目是基于Swagger-UI的Jersey Servlet API,通过jetty-maven-plugin以WAR包形式运行,原插件配置如下:

<plugin>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-maven-plugin</artifactId>
    <version>${jetty-maven-plugin.version}</version>
    <configuration>
        <webApp>
            <war>${project.build.directory}/main-api.war</war>
        </webApp>

        <scan>1</scan>
        <contextHandlers>
            <contextHandler implementation="org.eclipse.jetty.server.handler.ContextHandler">
                <contextPath>/swagger-ui</contextPath>
                <resourceBase>${project.build.directory}/${project.build.finalName}/swagger-ui
                </resourceBase>
                <handler implementation="org.eclipse.jetty.server.handler.ResourceHandler"/>
            </contextHandler>
        </contextHandlers>
    </configuration>
</plugin>

可以通过以下两种方式将OpenTelemetry Java Agent接入运行进程:

方法一:命令行参数指定Agent

  1. 先下载对应版本的opentelemetry-javaagent.jar(注意版本要和你的Java版本兼容,Java 8+可用最新稳定版)
  2. 运行Jetty时,在命令行添加-javaagent参数及OpenTelemetry配置:
mvn jetty:run -Djavaagent=/本地路径/opentelemetry-javaagent.jar -Dotel.service.name=你的服务名称 -Dotel.exporter.otlp.endpoint=http://你的采集服务地址:4317
  • otel.service.name:必填,用来标识你的服务
  • otel.exporter.otlp.endpoint:指定OpenTelemetry Collector的地址,根据实际部署情况修改
  • 还可以添加其他配置参数,比如采样率、日志导出等,按需添加即可

方法二:在插件配置中内置JVM参数

直接修改jetty-maven-plugin的配置,在<configuration>节点内添加<jvmArgs>,把Agent路径和配置参数写进去:

<plugin>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-maven-plugin</artifactId>
    <version>${jetty-maven-plugin.version}</version>
    <configuration>
        <webApp>
            <war>${project.build.directory}/main-api.war</war>
        </webApp>

        <scan>1</scan>
        <!-- 新增JVM参数配置 -->
        <jvmArgs>
            -javaagent:/本地路径/opentelemetry-javaagent.jar
            -Dotel.service.name=你的服务名称
            -Dotel.exporter.otlp.endpoint=http://你的采集服务地址:4317
        </jvmArgs>
        <contextHandlers>
            <contextHandler implementation="org.eclipse.jetty.server.handler.ContextHandler">
                <contextPath>/swagger-ui</contextPath>
                <resourceBase>${project.build.directory}/${project.build.finalName}/swagger-ui
                </resourceBase>
                <handler implementation="org.eclipse.jetty.server.handler.ResourceHandler"/>
            </contextHandler>
        </contextHandlers>
    </configuration>
</plugin>

这样每次执行mvn jetty:run时,Jetty会自动加载OpenTelemetry Agent。

可选:用Maven依赖管理Agent

不想手动下载Agent的话,可以在项目的pom.xml中添加依赖:

<dependency>
    <groupId>io.opentelemetry</groupId>
    <artifactId>opentelemetry-javaagent</artifactId>
    <version>替换为最新稳定版</version>
    <scope>runtime</scope>
</dependency>

然后把-javaagent的路径改成Maven本地仓库的路径,比如:

-javaagent:${settings.localRepository}/io/opentelemetry/opentelemetry-javaagent/版本号/opentelemetry-javaagent-版本号.jar

这样Maven会自动下载Agent到本地仓库,不用手动管理文件。

内容的提问来源于stack exchange,提问作者Rob Audenaerde

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 11:22:41