当前位置: 首页 > 知识库问答 >
问题:

如何从Vert. x Kafka生产者客户端获取Kafka客户端指标

樊宏义
2023-03-14

我是Vert.x的新手,对Kafka来说相对较新。

如何设置我的Vert.x KafkaProducer来导出Prometheus指标?

目前,我可以启用Prometheus度量,如<code>vertx_http_server_request_bytes_max</code>并通过Web服务器查看它们:

// simplified

import io.vertx.kafka.client.producer.KafkaProducer;
// ...
Vertx vertx = Vertx.vertx(new VertxOptions().setMetricsOptions(
    new MicrometerMetricsOptions()
        .setPrometheusOptions(new VertxPrometheusOptions().setEnabled(true))
        .setEnabled(true)));
// ...
// set up HttpServer then add a route for the metrics
Router.router(vertx).route("/metrics").handler(PrometheusScrapingHandler.create());
// ...
// create a new io.vertx.kafka.client.producer.KafkaProducer
producer = KafkaProducer.create(vertx, config);

在使用Vert. x之前,我可以使用Apache KafkaProducer并绑定KafkaClientMetrics,如下所示:

import io.micrometer.core.instrument.binder.kafka.KafkaClientMetrics;
import org.apache.kafka.clients.producer.KafkaProducer;
// ...
// after creating a producer
new KafkaClientMetrics(producer).bindTo(BackendRegistries.getDefaultNow());

关于如何获得通常的Kafka客户端指标的任何建议,例如Vert.x KafkaProducer的kafka_producer_buffer_total_bytes和其他指标?

更新:按照Jonatan的建议,查看代码来创建一个SharedProducer,我已经设法让下面的工作:

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

// unwrap to get org.apache.kafka.clients.producer.Producer
Producer<String, String> apacheProducer = stream.unwrap();

// create io.vertx.kafka.client.producer.KafkaProducer
KafkaProducer vertxProducer = (new KafkaProducerImpl(vertx, stream)).registerCloseHook();

// set up metrics
MeterRegistry registry = BackendRegistries.getDefaultNow();
new KafkaClientMetrics(apacheProducer).bindTo(registry);

我通过触发vertxProducer来测试这一点。send()并监视Prometheus度量。

共有1个答案

宓季同
2023-03-14

千分尺正在为每个KafkaMetric创建一个Meter。它只需调用producer.metrics()(查看KafkaClientMetrics)即可获取它们。有了这个,您的选项是:

  1. 从vert. x Kafka客户端获取KafkaProducer的引用(检查vertx kafka客户端中的SharedProducer
  2. 要求vert. x维护者提供一个metrics()方法
  3. 要求vert. x维护者对他们的客户端进行检测
  4. 看看千分尺中Kafka绑定器的旧仪器,它使用JMX创建仪表
 类似资料:
  • 我在kafka消费者文档中看到了这个注释-

  • 问题内容: 我需要知道客户的IP地址,这是我的鳕鱼 处理程序: 结果: 为什么我无法获得真正的客户IP? 问题答案: 通常,您可以用来获取正在访问Web应用程序的客户端的IP地址。但是,如果用户位于代理服务器后面或通过负载均衡器访问您的Web服务器(例如,在云托管中),则上述代码段将获取代理服务器或负载均衡器服务器的IP地址,而不是原始IP地址客户。 因此,您应该获得请求的HTTP标头“ X-Fo

  • 我想在一些计算机之间建立点对点连接,这样用户就可以在没有外部服务器的情况下聊天和交换文件。我最初的想法如下: 我在服务器上制作了一个中央服务器插座,所有应用程序都可以连接到该插座。此ServerSocket跟踪已连接的套接字(客户端),并将新连接的客户端的IP和端口提供给所有其他客户端。每个客户端都会创建一个新的ServerSocket,所有客户端都可以连接到它。 换句话说:每个客户端都有一个Se

  • 使用paypal的开发者帐户,我可以通过创建一个应用程序获得客户端ID和密钥,但不是使用live帐户。 我正在使用REST API在我的网站上进行交易,我要求用户(谁有贝宝帐户)输入他们的客户ID和秘密密钥,并使用这个信息将钱转入他们的帐户,付款是通过信用卡完成的。它在开发人员帐户上运行良好,但是从live帐户上获取客户端ID和密钥的选项在哪里呢? 或者有没有其他的方式我可以做到这一点,我想把钱转

  • 在构建Retor Netty应用程序时,我得到了两个相似的指标。但是它们之间到底有什么区别呢? vs. 我不知道他们在测量响应时间的方式/位置上有什么不同。哪种方法测量的时间更长并不一致。 Http客户端指标测量时间更长 ReactorNetty指标延长了时间

  • 您可以get get client-go的一个版本,例如get get k8s.io/client-go/1.4/...或者获取k8s.io/client-go/1.4/kubernetes。 现在当我这么做的时候。这是输出- 警告:“k8s.io/client-go/1.4/...”匹配的无包无法加载包:包。:/users/shubhadeeproychowdhury/projects/Go/s