Metrics collection is enabled by default (#11955)

* default enable

* fix ci

* add Prometheus judge

* fix

* revert default

---------

Co-authored-by: x-shadow-man <1494445739@qq.com>
This commit is contained in:
wxbty 2023-03-29 20:33:46 +08:00 committed by GitHub
parent 0e57b84b6e
commit 0d430985a3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 13 deletions

View File

@ -363,18 +363,33 @@ public class DefaultApplicationDeployer extends AbstractDeployer<ApplicationMode
private void initMetricsReporter() {
DefaultMetricsCollector collector =
applicationModel.getBeanFactory().getBean(DefaultMetricsCollector.class);
MetricsConfig metricsConfig = configManager.getMetrics().orElse(null);
Optional<MetricsConfig> configOptional = configManager.getMetrics();
// TODO compatible with old usage of metrics, remove protocol check after new metrics is ready for use.
if (metricsConfig != null && PROTOCOL_PROMETHEUS.equals(metricsConfig.getProtocol())) {
collector.setCollectEnabled(true);
collector.collectApplication(applicationModel);
collector.setThreadpoolCollectEnabled(Optional.ofNullable(metricsConfig.getEnableThreadpoolMetrics()).orElse(true));
String protocol = metricsConfig.getProtocol();
MetricsReporterFactory metricsReporterFactory = getExtensionLoader(MetricsReporterFactory.class).getAdaptiveExtension();
MetricsReporter metricsReporter = metricsReporterFactory.createMetricsReporter(metricsConfig.toUrl());
metricsReporter.init();
applicationModel.getBeanFactory().registerBean(metricsReporter);
boolean importMetricsPrometheus; // Use package references instead of config checks
try {
Class.forName("io.micrometer.prometheus.PrometheusConfig");
importMetricsPrometheus = true;
} catch (ClassNotFoundException e) {
importMetricsPrometheus = false;
}
if (!importMetricsPrometheus) {
//use old metrics
return;
}
MetricsConfig metricsConfig = configOptional.orElse(new MetricsConfig(applicationModel));
if (StringUtils.isBlank(metricsConfig.getProtocol())) {
metricsConfig.setProtocol(PROTOCOL_PROMETHEUS);
}
collector.setCollectEnabled(true);
collector.collectApplication(applicationModel);
collector.setThreadpoolCollectEnabled(Optional.ofNullable(metricsConfig.getEnableThreadpoolMetrics()).orElse(true));
MetricsReporterFactory metricsReporterFactory = getExtensionLoader(MetricsReporterFactory.class).getAdaptiveExtension();
MetricsReporter metricsReporter = metricsReporterFactory.createMetricsReporter(metricsConfig.toUrl());
metricsReporter.init();
applicationModel.getBeanFactory().registerBean(metricsReporter);
}
@ -1122,7 +1137,7 @@ public class DefaultApplicationDeployer extends AbstractDeployer<ApplicationMode
private void startMetricsCollector() {
DefaultMetricsCollector collector = applicationModel.getBeanFactory().getBean(DefaultMetricsCollector.class);
if(Objects.nonNull(collector) && collector.isThreadpoolCollectEnabled()) {
if (Objects.nonNull(collector) && collector.isThreadpoolCollectEnabled()) {
collector.registryDefaultSample();
}
}

View File

@ -66,7 +66,7 @@ public class AggregateMetricsCollector implements MetricsCollector, MetricsListe
this.applicationModel = applicationModel;
ConfigManager configManager = applicationModel.getApplicationConfigManager();
MetricsConfig config = configManager.getMetrics().orElse(null);
if (config != null && config.getAggregation() != null && Boolean.TRUE.equals(config.getAggregation().getEnabled())) {
if (config != null && config.getAggregation() != null && (config.getAggregation().getEnabled() == null || Boolean.TRUE.equals(config.getAggregation().getEnabled()))) {
// only registered when aggregation is enabled.
registerListener();
@ -94,7 +94,7 @@ public class AggregateMetricsCollector implements MetricsCollector, MetricsListe
private void onRequestEvent(MethodEvent event) {
MethodMetric metric = event.getMethodMetric();
MethodMetric metric = event.getMethodMetric();
String type = event.getType();