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

如何从Vert.x Kafka生产者客户端获取Kafka指标并导出Prometheus数据

如何配置Vert.x KafkaProducer导出Prometheus指标?

我刚接触Vert.x,对Kafka也相对陌生,需要获取kafka_producer_buffer_total_bytes等常用的Kafka客户端指标。

已完成的基础配置

目前已经完成Vert.x自带Prometheus指标的启用,可以正常查看vertx_http_server_request_bytes_max这类指标:

// 简化代码
import io.vertx.kafka.client.producer.KafkaProducer;
// ...
Vertx vertx = Vertx.vertx(new VertxOptions().setMetricsOptions(
    new MicrometerMetricsOptions()
        .setPrometheusOptions(new VertxPrometheusOptions().setEnabled(true))
        .setEnabled(true)));
// ...
// 配置HttpServer并添加指标路由
Router.router(vertx).route("/metrics").handler(PrometheusScrapingHandler.create());
// ...
// 创建io.vertx.kafka.client.producer.KafkaProducer实例
producer = KafkaProducer.create(vertx, config);

原生Apache KafkaProducer的指标绑定逻辑

在使用Vert.x之前,使用原生KafkaProducer时可以通过如下方式绑定KafkaClientMetrics实现指标采集:

import io.micrometer.core.instrument.binder.kafka.KafkaClientMetrics;
import org.apache.kafka.clients.producer.KafkaProducer;
// ...
// 生产者创建完成后执行
new KafkaClientMetrics(producer).bindTo(BackendRegistries.getDefaultNow());

最终实现方案

参考Jonatan关于创建SharedProducer的代码建议,最终通过如下方案实现了Vert.x KafkaProducer的Kafka客户端指标采集:

KafkaWriteStream<String, String> stream = KafkaWriteStream.create(vertx, config);

// 拆包获取org.apache.kafka.clients.producer.Producer实例
Producer<String, String> apacheProducer = stream.unwrap();

// 创建io.vertx.kafka.client.producer.KafkaProducer实例
KafkaProducer vertxProducer = (new KafkaProducerImpl(vertx, stream)).registerCloseHook();

// 配置指标采集
MeterRegistry registry = BackendRegistries.getDefaultNow();
new KafkaClientMetrics(apacheProducer).bindTo(registry);

目前已经通过调用vertxProducer.send()并监控Prometheus指标完成了功能验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:45:03