Merge commit '5e84eeebbf61739314b76e61c7f10b9af7c51759' into dev

* commit '5e84eeebbf61739314b76e61c7f10b9af7c51759':
  Extract Micrometer metric name to public constant and document usage
  Remove hard-coded percentiles from MicrometerMetricsTracker
pull/1129/merge
Brett Wooldridge 7 years ago
commit b11eb4084c

@ -9,20 +9,45 @@ import io.micrometer.core.instrument.Timer;
import java.util.concurrent.TimeUnit;
/**
* {@link IMetricsTracker Metrics tracker} for Micrometer.
* HikariCP metrics can be configured in your application by applying a
* {@link io.micrometer.core.instrument.config.MeterFilter MeterFilter} to metrics starting with
* {@link #HIKARI_METRIC_NAME_PREFIX}. For example, to configure client-side calculated percentiles:
*
* <blockquote><pre>
* new MeterFilter() {
* &#064;Override
* public DistributionStatisticConfig configure(Meter.Id id, DistributionStatisticConfig config) {
* if (id.getName().startsWith(MicrometerMetricsTracker.HIKARI_METRIC_NAME_PREFIX)) {
* return DistributionStatisticConfig.builder()
* .percentiles(0.5, 0.95)
* .build()
* .merge(config);
* }
* return config;
* }
* };
* </pre></blockquote>
*/
public class MicrometerMetricsTracker implements IMetricsTracker
{
/** Prefix used for all HikariCP metric names. */
public static final String HIKARI_METRIC_NAME_PREFIX = "hikaricp";
private static final String METRIC_CATEGORY = "pool";
private static final String METRIC_NAME_WAIT = "hikaricp.connections.acquire";
private static final String METRIC_NAME_USAGE = "hikaricp.connections.usage";
private static final String METRIC_NAME_CONNECT = "hikaricp.connections.creation";
private static final String METRIC_NAME_TIMEOUT_RATE = "hikaricp.connections.timeout";
private static final String METRIC_NAME_TOTAL_CONNECTIONS = "hikaricp.connections";
private static final String METRIC_NAME_IDLE_CONNECTIONS = "hikaricp.connections.idle";
private static final String METRIC_NAME_ACTIVE_CONNECTIONS = "hikaricp.connections.active";
private static final String METRIC_NAME_PENDING_CONNECTIONS = "hikaricp.connections.pending";
private static final String METRIC_NAME_MAX_CONNECTIONS = "hikaricp.connections.max";
private static final String METRIC_NAME_MIN_CONNECTIONS = "hikaricp.connections.min";
private static final String METRIC_NAME_WAIT = HIKARI_METRIC_NAME_PREFIX + ".connections.acquire";
private static final String METRIC_NAME_USAGE = HIKARI_METRIC_NAME_PREFIX + ".connections.usage";
private static final String METRIC_NAME_CONNECT = HIKARI_METRIC_NAME_PREFIX + ".connections.creation";
private static final String METRIC_NAME_TIMEOUT_RATE = HIKARI_METRIC_NAME_PREFIX + ".connections.timeout";
private static final String METRIC_NAME_TOTAL_CONNECTIONS = HIKARI_METRIC_NAME_PREFIX + ".connections";
private static final String METRIC_NAME_IDLE_CONNECTIONS = HIKARI_METRIC_NAME_PREFIX + ".connections.idle";
private static final String METRIC_NAME_ACTIVE_CONNECTIONS = HIKARI_METRIC_NAME_PREFIX + ".connections.active";
private static final String METRIC_NAME_PENDING_CONNECTIONS = HIKARI_METRIC_NAME_PREFIX + ".connections.pending";
private static final String METRIC_NAME_MAX_CONNECTIONS = HIKARI_METRIC_NAME_PREFIX + ".connections.max";
private static final String METRIC_NAME_MIN_CONNECTIONS = HIKARI_METRIC_NAME_PREFIX + ".connections.min";
private final Timer connectionObtainTimer;
private final Counter connectionTimeoutCounter;
@ -49,19 +74,16 @@ public class MicrometerMetricsTracker implements IMetricsTracker
this.connectionObtainTimer = Timer.builder(METRIC_NAME_WAIT)
.description("Connection acquire time")
.publishPercentiles(0.95)
.tags(METRIC_CATEGORY, poolName)
.register(meterRegistry);
this.connectionCreation = Timer.builder(METRIC_NAME_CONNECT)
.description("Connection creation time")
.publishPercentiles(0.95)
.tags(METRIC_CATEGORY, poolName)
.register(meterRegistry);
this.connectionUsage = Timer.builder(METRIC_NAME_USAGE)
.description("Connection usage time")
.publishPercentiles(0.95)
.tags(METRIC_CATEGORY, poolName)
.register(meterRegistry);

Loading…
Cancel
Save