如何为 Spring Boot 2 添加自定义 MeterRegisty

How to add custom MeterRegisty for Spring Boot 2

我目前正在以 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 Micrometer 添加和实施另一个 MeterRegistry?

您需要start 发布。比较 LoggingMeterRegistry

在你的构造函数中是这样的:

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