Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions docs/src/main/asciidoc/datasource.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -645,10 +645,10 @@ This can be activated by setting the `quarkus.datasource.metrics.enabled` proper
For the exposed metrics to contain any actual values, a metric collection must be enabled internally by the Agroal mechanisms.
By default, this metric collection mechanism is enabled for all datasources when a metrics extension is present, and metrics for the Agroal extension are enabled.

To disable metrics for a particular datasource, set `quarkus.datasource.jdbc.enable-metrics` to `false`, or apply `quarkus.datasource.<datasource name>.jdbc.enable-metrics` for a named datasource.
To disable metrics for a particular datasource, set `quarkus.datasource.jdbc.metrics.enabled` to `false`, or apply `quarkus.datasource.<datasource name>.jdbc.metrics.enabled` for a named datasource.
This disables collecting the metrics and exposing them in the `/q/metrics` endpoint if the mechanism to collect them is disabled.

Conversely, setting `quarkus.datasource.jdbc.enable-metrics` to `true`, or `quarkus.datasource.<datasource name>.jdbc.enable-metrics` for a named datasource explicitly enables metrics collection even if a metrics extension is not in use.
Conversely, setting `quarkus.datasource.jdbc.metrics.enabled` to `true`, or `quarkus.datasource.<datasource name>.jdbc.metrics.enabled` for a named datasource explicitly enables metrics collection even if a metrics extension is not in use.
This can be useful if you need to access the collected metrics programmatically.
They are available after calling `dataSource.getMetrics()` on an injected `AgroalDataSource` instance.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ void registerMetrics(AgroalMetricsRecorder recorder,
// IFF metrics are enabled globally and for the data source
// (they are enabled for each data source by default if they are also enabled globally)
if (dataSourcesBuildTimeConfig.metricsEnabled() &&
aggregatedDataSourceBuildTimeConfig.getJdbcConfig().enableMetrics().orElse(true)) {
aggregatedDataSourceBuildTimeConfig.getJdbcConfig().metrics().enabled().orElse(true)) {
datasourceMetrics.produce(new MetricsFactoryConsumerBuildItem(
recorder.registerDataSourceMetrics(aggregatedDataSourceBuildTimeConfig.getName())));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public class PoolLessTestCase {

@RegisterExtension
static final QuarkusUnitTest config = new QuarkusUnitTest().withConfigurationResource("base.properties")
.overrideConfigKey("quarkus.datasource.jdbc.enable-metrics", "true")
.overrideConfigKey("quarkus.datasource.jdbc.metrics.enabled", "true")
.overrideConfigKey("quarkus.datasource.jdbc.pooling-enabled", "false");

@Inject
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ quarkus.datasource.jdbc.url=jdbc:h2:tcp://localhost/mem:default
quarkus.datasource.jdbc.driver=org.h2.Driver
quarkus.datasource.jdbc.max-size=13
quarkus.datasource.jdbc.initial-size=7
quarkus.datasource.jdbc.enable-metrics=true
quarkus.datasource.jdbc.metrics.enabled=true

quarkus.datasource.jdbc.background-validation-interval=53
quarkus.datasource.jdbc.acquisition-timeout=54
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ quarkus.datasource.jdbc.url=jdbc:h2:tcp://localhost/mem:default
quarkus.datasource.jdbc.min-size=3
quarkus.datasource.jdbc.initial-size=7
quarkus.datasource.jdbc.max-size=13
quarkus.datasource.jdbc.enable-metrics=true
quarkus.datasource.jdbc.metrics.enabled=true
quarkus.datasource.jdbc.background-validation-interval=53
quarkus.datasource.jdbc.acquisition-timeout=54
quarkus.datasource.jdbc.leak-detection-interval=55
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ quarkus.datasource.db-kind=h2
quarkus.datasource.username=username1
quarkus.datasource.jdbc.url=jdbc:h2:mem:defaultdb
quarkus.datasource.jdbc.max-size=13
quarkus.datasource.jdbc.enable-metrics=true
quarkus.datasource.jdbc.metrics.enabled=true

# another ds
quarkus.datasource.ds1.db-kind=h2
quarkus.datasource.ds1.username=username1
quarkus.datasource.ds1.jdbc.url=jdbc:h2:mem:db1
quarkus.datasource.ds1.jdbc.max-size=13
quarkus.datasource.ds1.jdbc.enable-metrics=true
quarkus.datasource.ds1.jdbc.metrics.enabled=true
Original file line number Diff line number Diff line change
Expand Up @@ -31,20 +31,22 @@ public interface DataSourceJdbcBuildTimeConfig {
@WithDefault("enabled")
TransactionIntegration transactions();

/**
* Enable datasource metrics collection. If unspecified, collecting metrics will be enabled by default if
* a metrics extension is active.
* <p>
* Deprecated. This was used by the now deprecated quarkus-smallrye-metrics and will be removed soon.
* <p>
* Please use quarkus-micrometer and the quarkus.datasource.metrics.enabled property
*/
@Deprecated(forRemoval = true)
Optional<Boolean> enableMetrics();

/**
* Enable OpenTelemetry JDBC instrumentation.
*/
@WithDefault("false")
boolean telemetry();

DataSourceJdbcMetrics metrics();

@ConfigGroup
interface DataSourceJdbcMetrics {

/**
* Enable metrics collection for this datasource.
*/
@WithDefault("false")
Optional<Boolean> enabled();

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -276,8 +276,8 @@ private void applyNewConfiguration(String dataSourceName, AgroalDataSourceConfig
}

// metrics
if (dataSourceJdbcBuildTimeConfig.enableMetrics().isPresent()) {
dataSourceConfiguration.metricsEnabled(dataSourceJdbcBuildTimeConfig.enableMetrics().get());
if (dataSourceJdbcBuildTimeConfig.metrics().enabled().isPresent()) {
dataSourceConfiguration.metricsEnabled(dataSourceJdbcBuildTimeConfig.metrics().enabled().get());
} else {
// if the enable-metrics property is unspecified, treat it as true if MP Metrics are being exposed
dataSourceConfiguration.metricsEnabled(dataSourcesBuildTimeConfig.metricsEnabled() && mpMetricsPresent);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,12 @@ public interface DataSourcesBuildTimeConfig {
boolean healthEnabled();

/**
* Whether or not datasource metrics are published in case a metrics extension is present.
* Whether datasource metrics are published in case a metrics extension is present.
* <p>
* This is a global setting and is not specific to a datasource.
* <p>
* NOTE: This is different from the "jdbc.enable-metrics" property that needs to be set on the JDBC datasource level to
* NOTE: This is different from the <code>quarkus.datasource."datasource name".jdbc.metrics.enabled</code> property that
* needs to be set on the JDBC datasource level to
* enable collection of metrics for that datasource.
*/
@WithName("metrics.enabled")
Expand Down
Loading