如何为Spring Boot 2添加定制的MeterRegisty

时间:2019-11-26 07:58:50

标签: java spring spring-boot micrometer spring-micrometer

我目前正在以10秒的间隔将我的Spring Boot Webflux项目的执行器指标导出到DataDog。我想为我们的内部系统之一添加另一个导出器,该导出器不在受支持的后端列表中。从DataDogMeterRegistry看实现,我想到了以下内容。

public interface ExternalConfig extends StepRegistryConfig {

  ExternalConfig DEFAULT = k -> null;

  @Override
  default String prefix() {
    return "vwexternal";
  }
}

@Slf4j
public class ExternalMeterRegistry extends StepMeterRegistry {

  public ExternalMeterRegistry() {
    this(ExternalConfig.DEFAULT, Clock.SYSTEM);
  }

  public ExternalMeterRegistry(StepRegistryConfig config, Clock clock) {
    super(config, clock);
  }

  @Override
  protected void publish() {
    log.info("HERE");
  }

  @Override
  protected TimeUnit getBaseTimeUnit() {
    return TimeUnit.MILLISECONDS;
  }
}

@SpringBootApplication
public class MyApplication {
  public static void main(String[] args) {
    SpringApplication.run(MyApplication.class, args);
    Metrics.addRegistry(new ExternalMeterRegistry());
  }
}

但是,由于没有打印日志,因此无法正常工作。

我的问题是如何为Spring Boot千分尺添加和实现另一个MeterRegistry?

1 个答案:

答案 0 :(得分:2)

您需要start发布。与LoggingMeterRegistry

进行比较

在您的构造函数中,诸如:

start(new NamedThreadFactory("vw-metrics-publisher"))