用于MongoDB的Spring Boot测微计指标。

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

我用的是弹簧套2.2.5+千分尺1.3.5+启动数据-mongodb。

在 "io.micrometer.core.instrument.binder.mongodb "下,我可以看到两个类CommandListener和ConnectionPoolListener。我想知道这两个类有什么作用?

在actuator metrics endpoint中,mongo metrics不可用。

如何在actuator中启用mongodb的度量?例如,actuator会自动显示RabbitMQ的一些指标。我希望在MongoDB的情况下也有类似的东西。我应该创建自己的度量指标吗?

mongodb spring-boot spring-boot-actuator spring-micrometer
1个回答
1
投票

添加这些监听器并不像我想象的那样简单,它取决于你使用哪些属性来配置Spring Data MongoDB。

集成的关键是自定义com.mongodb.MongoClientSettings实例,它是用来创建MongoClient的。有多种可能的方法可以做到这一点,如在 用Spring连接到MongoDB

下面是一个基于Spring Boot 2.3的工作示例(从我们的应用中简化而来),假设您使用的是 spring.data.mongodb.uri。 来指定你的application.properties中的连接字符串。

package com.example.demo;

import com.mongodb.ConnectionString;
import com.mongodb.MongoClientSettings;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.binder.mongodb.MongoMetricsCommandListener;
import io.micrometer.core.instrument.binder.mongodb.MongoMetricsConnectionPoolListener;
import org.springframework.boot.autoconfigure.mongo.MongoProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.core.MongoClientFactoryBean;

@Configuration
public class MongoConfiguration {

    @Bean
    public MongoClientFactoryBean mongoClientFactoryBean(MongoProperties properties, MeterRegistry meterRegistry) {
        MongoClientFactoryBean mongoClientFactoryBean = new MongoClientFactoryBean();

        mongoClientFactoryBean.setConnectionString(new ConnectionString(properties.getUri()));

        MongoClientSettings settings = MongoClientSettings.builder()
                .addCommandListener(new MongoMetricsCommandListener(meterRegistry))
                .applyToConnectionPoolSettings(builder ->
                        builder.addConnectionPoolListener(new MongoMetricsConnectionPoolListener(meterRegistry)))
                .build();
        mongoClientFactoryBean.setMongoClientSettings(settings);

        return mongoClientFactoryBean;
    }

}

遗憾的是,很多在 从Spring Boot 2.2到2.3配置MongoDB。. 如果你不能使用Spring Boot 2.3,而你又无法将其回传到2.2,请告诉我。

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