没有 @EnableAutoConfiguration 的 Spring 执行器指标有问题
Problem with Spring Actuator metrics without @EnableAutoConfiguration
在我的 Spring 基于引导的应用程序中,我无法使用 @EnableAutoConfiguration
因此我必须手动将所有配置添加到 @Import
注释。我知道如何启用通用端点 /actuator
和其他一些端点,例如 /actuator/health
或 /actuator/env
(如下例)。然而,即使我尝试了数千个选项,我也无法使 metrics
工作(使用 @EnableAutoConfiguration
可以工作)。
我的配置如下:
@SpringBootConfiguration
@ComponentScan(excludeFilters = { @ComponentScan.Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@ComponentScan.Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
@Import({
ServletWebServerFactoryAutoConfiguration.class,
DispatcherServletAutoConfiguration.class,
WebMvcAutoConfiguration.class,
ManagementContextAutoConfiguration.class,
EndpointAutoConfiguration.class,
WebEndpointAutoConfiguration.class,
HealthIndicatorAutoConfiguration.class,
HealthEndpointAutoConfiguration.class,
EnvironmentEndpointAutoConfiguration.class,
//---------- configs metrics related:
MetricsAutoConfiguration.class,
CompositeMeterRegistryAutoConfiguration.class,
JvmMetricsAutoConfiguration.class,
MetricsEndpointAutoConfiguration.class,
SystemMetricsAutoConfiguration.class,
SimpleMetricsExportAutoConfiguration.class,
WebMvcMetricsAutoConfiguration.class
}
)
public class Application {
public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(Application.class, args);
}
}
使用这样的配置,即使我可以看到 /actuator
页面上列出的 metrics
端点:
actuator main page
如果我去那里,它会显示空集合:
no metrics
它应该包含系统和 jvm 指标(以及第一次 http 调用后的 http 端点指标)。
知道我应该怎么做才能启用 Spring 执行器指标吗?
找到解决办法了,metrics导入的顺序不对,顺序应该是这样的:
MetricsAutoConfiguration.class,
SimpleMetricsExportAutoConfiguration.class,
CompositeMeterRegistryAutoConfiguration.class,
JvmMetricsAutoConfiguration.class,
MetricsEndpointAutoConfiguration.class,
SystemMetricsAutoConfiguration.class,
WebMvcMetricsAutoConfiguration.class
在我的 Spring 基于引导的应用程序中,我无法使用 @EnableAutoConfiguration
因此我必须手动将所有配置添加到 @Import
注释。我知道如何启用通用端点 /actuator
和其他一些端点,例如 /actuator/health
或 /actuator/env
(如下例)。然而,即使我尝试了数千个选项,我也无法使 metrics
工作(使用 @EnableAutoConfiguration
可以工作)。
我的配置如下:
@SpringBootConfiguration
@ComponentScan(excludeFilters = { @ComponentScan.Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@ComponentScan.Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
@Import({
ServletWebServerFactoryAutoConfiguration.class,
DispatcherServletAutoConfiguration.class,
WebMvcAutoConfiguration.class,
ManagementContextAutoConfiguration.class,
EndpointAutoConfiguration.class,
WebEndpointAutoConfiguration.class,
HealthIndicatorAutoConfiguration.class,
HealthEndpointAutoConfiguration.class,
EnvironmentEndpointAutoConfiguration.class,
//---------- configs metrics related:
MetricsAutoConfiguration.class,
CompositeMeterRegistryAutoConfiguration.class,
JvmMetricsAutoConfiguration.class,
MetricsEndpointAutoConfiguration.class,
SystemMetricsAutoConfiguration.class,
SimpleMetricsExportAutoConfiguration.class,
WebMvcMetricsAutoConfiguration.class
}
)
public class Application {
public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(Application.class, args);
}
}
使用这样的配置,即使我可以看到 /actuator
页面上列出的 metrics
端点:
actuator main page
如果我去那里,它会显示空集合: no metrics
它应该包含系统和 jvm 指标(以及第一次 http 调用后的 http 端点指标)。 知道我应该怎么做才能启用 Spring 执行器指标吗?
找到解决办法了,metrics导入的顺序不对,顺序应该是这样的:
MetricsAutoConfiguration.class,
SimpleMetricsExportAutoConfiguration.class,
CompositeMeterRegistryAutoConfiguration.class,
JvmMetricsAutoConfiguration.class,
MetricsEndpointAutoConfiguration.class,
SystemMetricsAutoConfiguration.class,
WebMvcMetricsAutoConfiguration.class