我用的是弹簧套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的情况下也有类似的东西。我应该创建自己的度量指标吗?
添加这些监听器并不像我想象的那样简单,它取决于你使用哪些属性来配置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,请告诉我。