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

如何配置将Dropwizard指标发送至Prometheus(非Pushgateway方式)

解决方案:让Prometheus主动拉取Dropwizard的Meter指标

不用Pushgateway的话,最佳方案是通过Dropwizard Prometheus集成库暴露指标端点,让Prometheus主动定期拉取,这是长期运行服务的标准做法。

1. 添加依赖

在项目构建文件中加入Dropwizard与Prometheus集成的依赖:

  • Maven:
<dependency>
    <groupId>io.prometheus</groupId>
    <artifactId>simpleclient_dropwizard</artifactId>
    <version>最新稳定版</version>
</dependency>
<dependency>
    <groupId>io.prometheus</groupId>
    <artifactId>simpleclient_servlet</artifactId>
    <version>最新稳定版</version>
</dependency>
  • Gradle:
implementation 'io.prometheus:simpleclient_dropwizard:最新稳定版'
implementation 'io.prometheus:simpleclient_servlet:最新稳定版'

2. 配置Dropwizard指标暴露端点

在Dropwizard的Application类中,注册Prometheus相关组件,暴露可被拉取的指标路径:

import io.prometheus.client.dropwizard.DropwizardExports;
import io.prometheus.client.exporter.MetricsServlet;
import io.prometheus.client.hotspot.DefaultExports;

@Override
public void run(YourConfiguration config, Environment env) {
    // 注册JVM热点指标(可选,推荐添加)
    DefaultExports.initialize();
    
    // 将Dropwizard的所有指标(包括你的Meter)注册到Prometheus客户端
    DropwizardExports dropwizardExports = new DropwizardExports(env.metrics());
    dropwizardExports.register();
    
    // 绑定Prometheus指标Servlet,暴露端点
    env.servlets().addServlet("prometheus-metrics", new MetricsServlet())
       .addMapping("/metrics/prometheus");
}

3. 配置Prometheus拉取规则

在Prometheus的prometheus.yml配置文件中,添加你的Dropwizard服务作为拉取目标:

scrape_configs:
  - job_name: 'dropwizard-service'
    scrape_interval: 15s # 可根据需求调整拉取间隔
    static_configs:
      - targets: ['your-service-host:port'] # 替换为你的服务地址和端口
    metrics_path: '/metrics/prometheus'

4. 验证指标暴露情况

启动Dropwizard服务后,访问http://your-service-host:port/metrics/prometheus,会看到类似以下的Meter指标输出(对应你统计的API调用速率):

# HELP api_call_rate_15m 15-minute moving average rate
# TYPE api_call_rate_15m gauge
api_call_rate_15m 2.3
# HELP api_call_rate_5m 5-minute moving average rate
# TYPE api_call_rate_5m gauge
api_call_rate_5m 3.1
# HELP api_call_rate_1m 1-minute moving average rate
# TYPE api_call_rate_1m gauge
api_call_rate_1m 4.5
# HELP api_call_count Total number of API calls
# TYPE api_call_count counter
api_call_count 1200.0

其中api_call是你创建Meter时指定的名称。

关键说明

  • 这种拉取模式适配长期运行的服务,完全无需Pushgateway,由Prometheus主动从服务获取指标。
  • Dropwizard的Meter指标会自动转换为Prometheus兼容格式,包含1/5/15分钟移动平均速率、总调用次数等维度。
  • 需确保Prometheus服务器能访问到Dropwizard服务的端口,防火墙/安全组要开放对应权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 17:15:37