如何配置Micronaut和Micrometer将ILP直接写入InfluxDB?

时间:2019-06-06 21:49:04

标签: influxdb micronaut micrometer

我有一个Micronaut应用程序,该应用程序使用Micrometer通过micronaut-micrometer project向InfluxDB报告指标。当前,它使用的是通过io.micronaut.configuration:micronaut-micrometer-registry-statsd依赖项提供的Statsd注册表。

我想改为以Influx Line Protocol(ILP)输出指标,但是micronaut-micrometer项目目前不提供Influx注册中心。我尝试通过导入io.micrometer:micrometer-registry-influx依赖项并像这样手动配置InfluxMeterRegistry来解决此问题:

@Factory
public class MyMetricRegistryConfigurer implements MeterRegistryConfigurer {
  @Bean
  @Primary
  @Singleton
  public MeterRegistry getMeterRegistry() {
    InfluxConfig config = new InfluxConfig() {
      @Override
      public Duration step() {
        return Duration.ofSeconds(10);
      }

      @Override
      public String db() {
        return "metrics";
      }

      @Override
      public String get(String k) {
        return null; // accept the rest of the defaults
      }
    };
    return new InfluxMeterRegistry(config, Clock.SYSTEM);
  }

  @Override
  public boolean supports(MeterRegistry meterRegistry) {
    return meterRegistry instanceof InfluxMeterRegistry;
  }
}

当应用程序运行时,指标将按照我的期望在我的/ metrics端点上公开,但是没有任何内容写入InfluxDB。我确认我的本地InfluxDB使用curl在预期的localhost:8086/write?db=metrics端点接受了指标。谁能给我一些指导以使它正常工作?我想知道是否需要在某处手动定义报告器...

1 个答案:

答案 0 :(得分:1)

玩了一段时间后,我使用以下代码进行了操作:

@Factory
public class InfluxMeterRegistryFactory {
  @Bean
  @Singleton
  @Requires(property = MeterRegistryFactory.MICRONAUT_METRICS_ENABLED, value = 
StringUtils.TRUE, defaultValue = StringUtils.TRUE)
  @Requires(beans = CompositeMeterRegistry.class)
  public InfluxMeterRegistry getMeterRegistry() {
    InfluxConfig config = new InfluxConfig() {
      @Override
      public Duration step() {
        return Duration.ofSeconds(10);
      }

      @Override
      public String db() {
        return "metrics";
      }

      @Override
      public String get(String k) {
        return null; // accept the rest of the defaults
      }
    };
    return new InfluxMeterRegistry(config, Clock.SYSTEM);
  }
}

我还注意到,从v1.2.0开始,将来会提供开箱即用的InfluxMeterRegistry。