我在代码中解决此问题的第一件事是启用“条件评估报告”。在application.properties 文件中设置属性debug=true 就足够了。您应该在日志中看到类似下面的内容。只需在此块中搜索“指标”即可找到与指标相关的类的提及。
2021-05-04T11:35:29.001-0300|DEBUG tionEvaluationReportLoggingListener[ 126] -
============================
CONDITIONS EVALUATION REPORT
============================
Positive matches:
-----------------
AopAutoConfiguration matched:
- @ConditionalOnProperty (spring.aop.auto=true) matched (OnPropertyCondition)
...
接下来,您需要禁用任何对您无用的自动配置指标类。您可以通过在 @SpringBootApplication 注释中添加一些属性值来做到这一点。
这是我在应用程序代码中所做的:
@SpringBootApplication(
exclude = {
CompositeMeterRegistryAutoConfiguration.class,
JvmMetricsAutoConfiguration.class,
DataSourcePoolMetricsAutoConfiguration.class,
LogbackMetricsAutoConfiguration.class,
HttpClientMetricsAutoConfiguration.class
}
)
最后,如果有一个自动配置的指标类发布了一些您想要保留的指标值,但也发布了您不想要的其他指标值,那么您可以禁用单个指标。如果您使用的是application.yaml 文件,这很容易。以下是我的代码示例:
management:
metrics:
# Disable Spring Boot auto-configuration of metrics meter registries
use-global-registry: false
enable:
jvm:
# garbage collection, buffer, threads and classes metrics are not useful to us
gc: false
buffer: false
classes: false
threads: false
process:
# process start time is useless
start:
time: false
# system CPU metrics are useless for ECS tasks (we only care about 'process' metrics)
system:
cpu: false
export:
# Disable default in-memory metrics meter registry
simple:
enabled: false
# Publish metrics to AWS Cloudwatch, using the largest submission batch size that AWS supports
cloudwatch:
namespace: /my/metrics/namespace
batchSize: 20
您可以对application.properties 文件执行相同的操作。它只会更冗长。
还支持编写自定义“过滤器”类,与上面的属性/yaml 文件方法相比,这些类为您提供更细粒度的控制。我没用过,但为了完整起见,我在这里提一下。