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

Jetty集成Prometheus Java client启动报错及请求指标不增长问题

Jetty集成Prometheus指标请求相关计数为0问题

问题现象

参照Prometheus Java客户端库的Jetty指标采集实现为Jetty服务暴露Prometheus指标时,服务初始启动抛出如下异常:

Exception in thread "main" java.lang.RuntimeException: Unable to start jetty server
Caused by: java.lang.IllegalStateException: StatisticsHandler has no Wrapped Handler

为修复启动错误调整配置代码如下:

StatisticsHandler stats = new StatisticsHandler();
stats.setServer(server.getServer());
HandlerWrapper hw = new HandlerWrapper();
stats.setHandler(hw);
new JettyStatisticsCollector(stats).register();

contextCollectionHandler.addHandler(stats);
server.setHandler(contextCollectionHandler);

try {
    server.start();
}
catch (final Exception e) {
    throw new RuntimeException("Unable to start jetty server", e);
}

调整后服务可正常启动,发起请求可正常收到200、404等响应,但jetty_requests_total、jetty_responses_total等请求相关指标始终为0无增长,仅jetty_stats_seconds指标数值正常变化。

问题根因

  • 启动报错的修复逻辑错误:StatisticsHandler是Jetty提供的包装型请求统计处理器,必须将实际处理业务请求的Handler链设置为它的子Handler,才能拦截所有经过的请求,完成请求、响应相关维度的指标统计。
  • 当前代码给StatisticsHandler设置的子Handler是空的HandlerWrapper实例,没有包裹实际承载业务路由的contextCollectionHandler,所有业务请求不会经过StatisticsHandler的统计逻辑,因此请求数、响应数这类依赖请求流转的指标始终为0。
  • jetty_stats_seconds仅依赖StatisticsHandler自身的启动时长计算,不需要拦截请求即可正常更新,因此该指标数值表现正常。

修复方案

调整Handler嵌套顺序,将业务Handler链作为StatisticsHandler的子Handler,再把StatisticsHandler设置为Server的根Handler,确保所有请求都先经过统计处理器,参考代码如下:

// 初始化统计处理器
StatisticsHandler stats = new StatisticsHandler();
// 将实际处理业务的上下文Handler集合设置为统计处理器的子Handler,保证所有请求先经过统计逻辑
stats.setHandler(contextCollectionHandler);
// 注册Prometheus指标采集器
new JettyStatisticsCollector(stats).register();
// 将包裹了完整业务链路的统计处理器设置为服务根Handler
server.setHandler(stats);

try {
    server.start();
}
catch (final Exception e) {
    throw new RuntimeException("Unable to start jetty server", e);
}

注意:不需要额外创建空的HandlerWrapper实例设置给StatisticsHandler,必须保证整个业务请求处理链路都被StatisticsHandler包裹,才能采集到完整的请求相关指标。


内容的提问来源于stack exchange,提问作者Harrish A

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:54:15