“i.micrometer.influx.InfluxMeterRegistry:无法创建数据库“mydb”:{“code”:“未经授权”,“message”:“未经授权的访问”}“

问题描述 投票:0回答:1

我正在第一次尝试 Influxdb,我想用它来保存和获取我的应用程序的指标。我安装了 v2.7.5 版本,创建了一个组织、存储桶并生成了一个具有 Influx UI 上所有访问权限的 API 令牌。在我的应用程序中,我设置了 MicrometerMetricsOptions、InfluxMeterRegistry 和 Metrics 控制器,但是当我调用端点时,我收到一条错误消息 i.micrometer.influx.InfluxMeterRegistry : 无法创建数据库 'mydb': {"code":"未经授权的","消息":"未经授权的访问"}。在用户界面上没有地方可以创建数据库,即使我在配置上使用 setDb 方法,它仍然是同样的问题。以下是我的配置

@Configuration
public class VertxConfig {

    @Value("${influxdb.api.token}")
    public String authToken;

    @Bean
    @Autowired
    public Vertx vertx(VerticleFactory verticleFactory) {
        MicrometerMetricsOptions metricsOptions = new MicrometerMetricsOptions()
                .setInfluxDbOptions(new VertxInfluxDbOptions()
                        .setUri("http://localhost:8086")
                        .setOrg("Technologies")
                        .setDb("life")
                        .setUserName("life")
                        .setPassword("1234")
                        .setBucket("life")
                        .setToken(authToken)
                        .setEnabled(true))
                .setEnabled(true);

        VertxOptions vertxOptions = new VertxOptions()
                .setMetricsOptions(metricsOptions)
                .setWorkerPoolSize(35);
        Vertx vertx = Vertx.vertx(vertxOptions);
        vertx.registerVerticleFactory(verticleFactory);
        return vertx;
    }
}
@SpringBootApplication
public class MetricsApplication {

    public static void main(String[] args) {
        SpringApplication springApplication = new SpringApplication(MetricsApplication.class);
        springApplication.setWebApplicationType(WebApplicationType.NONE);
        springApplication.setAdditionalProfiles("prod");
        springApplication.run(args);


        InfluxConfig config = new InfluxConfig() {
            @Override
            public String get(String key) {
                return switch (key) {
                    case "influxdb.uri" -> "http://localhost:8086";
//                  case "influxdb.db" -> "life";
                    case "influxdb.userName" -> "life";
                    case "influxdb.password" -> "1234";
                    default -> null;
                };
            }
        };


        InfluxMeterRegistry registry = InfluxMeterRegistry.builder(config)
                .clock(Clock.SYSTEM)
                .build();

        registry.config().meterFilter(new MeterFilter() {
            @Override
            public DistributionStatisticConfig configure(Meter.Id id, DistributionStatisticConfig config) {
                return DistributionStatisticConfig.builder()
                        .percentilesHistogram(true)
                        .build()
                        .merge(config);
            }
        });
    }

}
influxdb influxdb-2
1个回答
0
投票

我认为问题出在我在 main 方法中实现的 InfluxMeterRegistry 。那是 Influxdb v1,一旦我删除它,错误就消失了。 InfluxMeterRegistry 在 v2 中配置。 Influxdb V2 配置需要的是 Uri、organization 或organizationId、bucket 和 token。然后,您可以使用 Grafana 等工具可视化存储在 Influxdb 中的指标

© www.soinside.com 2019 - 2024. All rights reserved.