我是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度量。
千分尺正在为每个KafkaMetric
创建一个Meter
。它只需调用producer.metrics()
(查看KafkaClientMetrics
)即可获取它们。有了这个,您的选项是:
Producer
的引用(检查vertx kafka客户端中的SharedProducer
)metrics()
方法我在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