如何获取事件总线指标 Vertx 与 Prometheus 集成

Posted

技术标签:

【中文标题】如何获取事件总线指标 Vertx 与 Prometheus 集成【英文标题】:How to get Event bus metrics Vertx integrate with Prometheus 【发布时间】:2021-01-05 00:25:22 【问题描述】:

我正在使用 Prometheus 内置的 VertX Metrics。 这是我的代码设置:

try 
        MicrometerMetricsOptions options = new MicrometerMetricsOptions()
        .setPrometheusOptions(new VertxPrometheusOptions().setEnabled(true))
        .setEnabled(true);
        
        Vertx vert = Vertx.vertx(new VertxOptions().setMetricsOptions(options));
        
        vert.deployVerticle(ExecBlocking.class, new DeploymentOptions());
     catch(Exception e)
        System.out.println("Error: " + e);
    

但是当我在 localhost:8080 上运行 vertx 实例时,我找不到 Event Bus Metric、HTTP Client Metric、Net Client Metric..(这些指标在 GET localhost:8080/metrics ,只看HTTP Server MetricVert.x pool metrics

我的问题: 如何在 GET localhost:8080/metrics

上查看缺失的指标(事件总线、网络、HTTP 客户端)

提前致谢。

【问题讨论】:

【参考方案1】:

我发现:

指标(事件总线,...)仅在发生有关这些指标的事件时才会显示在 GET 上。

所以我测试了将消息发送到事件总线,然后我可以在 GET 指标请求上查看与事件总线相关的指标。

我部署了一个 Verticle 将消息发送到事件总线:

public class EventBusProducer extends AbstractVerticle 
@Override
public void start() throws Exception 
vertx.setPeriodic(1000, x -> 
  Greetings.get(vertx, greetingResult -> vertx.eventBus().send("greeting", greetingResult.result()));
   );
  


class Greetings 
   private static final String[] GREETINGS = 
      "Hello world!",
      "Bonjour monde!",
      "Hallo Welt!",
      "Hola Mundo!"
   ;
   private static final Random RND = new Random();

   private Greetings() 
   

   static void get(Vertx vertx, Handler<AsyncResult<String>> responseHandler) 
     vertx.executeBlocking(fut -> 
     // Simulate worker pool processing time between 200ms and 2s
     int processingTime = RND.nextInt(1800) + 200;
     try 
        Thread.sleep(processingTime);
      catch (InterruptedException e) 
        e.printStackTrace();
     
    fut.complete(GREETINGS[RND.nextInt(4)]);
  , responseHandler);
 

【讨论】:

以上是关于如何获取事件总线指标 Vertx 与 Prometheus 集成的主要内容,如果未能解决你的问题,请参考以下文章

Vertx和Camel集成

Vert.x简介原理与HelloWorld

如何让 Vertx 处理程序在事件循环中更早地执行?

VertX SQL 查询与参数如何使用 LIKE ?带通配符

总线的性能指标

总线的性能指标