Update to match Micrometer updated RC api ()

pull/1009/head
checketts committed by Brett Wooldridge
parent 4b796b5209
commit 06e0cf6cf5

@ -14,7 +14,7 @@
<jndi.version>0.11.4.1</jndi.version> <jndi.version>0.11.4.1</jndi.version>
<maven.release.version>2.5.3</maven.release.version> <maven.release.version>2.5.3</maven.release.version>
<metrics.version>3.2.4</metrics.version> <metrics.version>3.2.4</metrics.version>
<micrometer.version>0.10.0.RELEASE</micrometer.version> <micrometer.version>1.0.0-rc.2</micrometer.version>
<simpleclient.version>0.0.26</simpleclient.version> <simpleclient.version>0.0.26</simpleclient.version>
<mockito.version>2.10.0</mockito.version> <mockito.version>2.10.0</mockito.version>
<pax.exam.version>4.11.0</pax.exam.version> <pax.exam.version>4.11.0</pax.exam.version>

@ -2,33 +2,32 @@ package com.zaxxer.hikari.metrics.micrometer;
import com.zaxxer.hikari.metrics.IMetricsTracker; import com.zaxxer.hikari.metrics.IMetricsTracker;
import com.zaxxer.hikari.metrics.PoolStats; import com.zaxxer.hikari.metrics.PoolStats;
import io.micrometer.core.instrument.DistributionSummary; import io.micrometer.core.instrument.Counter;
import io.micrometer.core.instrument.Gauge; import io.micrometer.core.instrument.Gauge;
import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.Timer; import io.micrometer.core.instrument.Timer;
import io.micrometer.core.instrument.stats.hist.Histogram;
import io.micrometer.core.instrument.stats.quantile.WindowSketchQuantiles; import io.micrometer.core.instrument.stats.quantile.WindowSketchQuantiles;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import static io.micrometer.core.instrument.stats.hist.CumulativeHistogram.buckets;
import static io.micrometer.core.instrument.stats.hist.CumulativeHistogram.linear;
public class MicrometerMetricsTracker implements IMetricsTracker public class MicrometerMetricsTracker implements IMetricsTracker
{ {
private static final String METRIC_CATEGORY = "pool"; private static final String METRIC_CATEGORY = "pool";
private static final String METRIC_NAME_WAIT = "Wait"; private static final String METRIC_NAME_WAIT = "hikaricp.connections.acquire";
private static final String METRIC_NAME_USAGE = "Usage"; private static final String METRIC_NAME_USAGE = "hikaricp.connections.usage";
private static final String METRIC_NAME_CONNECT = "ConnectionCreation"; private static final String METRIC_NAME_CONNECT = "hikaricp.connections.creation";
private static final String METRIC_NAME_TIMEOUT_RATE = "ConnectionTimeoutRate";
private static final String METRIC_NAME_TOTAL_CONNECTIONS = "TotalConnections"; private static final String METRIC_NAME_TIMEOUT_RATE = "hikaricp.connections.timeout";
private static final String METRIC_NAME_IDLE_CONNECTIONS = "IdleConnections"; private static final String METRIC_NAME_TOTAL_CONNECTIONS = "hikaricp.connections";
private static final String METRIC_NAME_ACTIVE_CONNECTIONS = "ActiveConnections"; private static final String METRIC_NAME_IDLE_CONNECTIONS = "hikaricp.connections.idle";
private static final String METRIC_NAME_PENDING_CONNECTIONS = "PendingConnections"; private static final String METRIC_NAME_ACTIVE_CONNECTIONS = "hikaricp.connections.active";
private static final String METRIC_NAME_PENDING_CONNECTIONS = "hikaricp.connections.pending";
private final Timer connectionObtainTimer; private final Timer connectionObtainTimer;
private final DistributionSummary connectionTimeoutMeter; private final Counter connectionTimeoutCounter;
private final DistributionSummary connectionUsage; private final Timer connectionUsage;
private final DistributionSummary connectionCreation; private final Timer connectionCreation;
@SuppressWarnings({"FieldCanBeLocal", "unused"}) @SuppressWarnings({"FieldCanBeLocal", "unused"})
private final Gauge totalConnectionGauge; private final Gauge totalConnectionGauge;
@SuppressWarnings({"FieldCanBeLocal", "unused"}) @SuppressWarnings({"FieldCanBeLocal", "unused"})
@ -40,51 +39,49 @@ public class MicrometerMetricsTracker implements IMetricsTracker
MicrometerMetricsTracker(final String poolName, final PoolStats poolStats, final MeterRegistry meterRegistry) MicrometerMetricsTracker(final String poolName, final PoolStats poolStats, final MeterRegistry meterRegistry)
{ {
this.connectionObtainTimer = meterRegistry this.connectionObtainTimer = Timer.builder(METRIC_NAME_WAIT)
.timerBuilder(METRIC_NAME_WAIT) .description("Connection acquire time")
.quantiles(WindowSketchQuantiles.quantiles(0.5, 0.95).create())
.tags(METRIC_CATEGORY, poolName) .tags(METRIC_CATEGORY, poolName)
.create(); .register(meterRegistry);
this.connectionCreation = meterRegistry this.connectionCreation = Timer.builder(METRIC_NAME_CONNECT)
.summaryBuilder(METRIC_NAME_CONNECT) .description("Connection creation time")
.tags(METRIC_CATEGORY, poolName)
.quantiles(WindowSketchQuantiles.quantiles(0.5, 0.95).create()) .quantiles(WindowSketchQuantiles.quantiles(0.5, 0.95).create())
.histogram(buckets(linear(0, 10, 20), TimeUnit.MILLISECONDS))
.create();
this.connectionUsage = meterRegistry
.summaryBuilder(METRIC_NAME_USAGE)
.tags(METRIC_CATEGORY, poolName) .tags(METRIC_CATEGORY, poolName)
.register(meterRegistry);
this.connectionUsage = Timer.builder(METRIC_NAME_USAGE)
.description("Connection usage time")
.quantiles(WindowSketchQuantiles.quantiles(0.5, 0.95).create()) .quantiles(WindowSketchQuantiles.quantiles(0.5, 0.95).create())
.histogram(buckets(linear(0, 10, 20), TimeUnit.MILLISECONDS)) .tags(METRIC_CATEGORY, poolName)
.create(); .register(meterRegistry);
this.connectionTimeoutMeter = meterRegistry this.connectionTimeoutCounter = Counter.builder(METRIC_NAME_TIMEOUT_RATE)
.summaryBuilder(METRIC_NAME_TIMEOUT_RATE) .description("Connection timeout total count")
.tags(METRIC_CATEGORY, poolName) .tags(METRIC_CATEGORY, poolName)
.quantiles(WindowSketchQuantiles.quantiles(0.5, 0.95).create()) .register(meterRegistry);
.histogram(buckets(linear(0, 10, 20), TimeUnit.MILLISECONDS))
.create();
this.totalConnectionGauge = meterRegistry this.totalConnectionGauge = Gauge.builder(METRIC_NAME_TOTAL_CONNECTIONS, poolStats, PoolStats::getTotalConnections)
.gaugeBuilder(METRIC_NAME_TOTAL_CONNECTIONS, Integer.class, (i) -> poolStats.getTotalConnections()) .description("Total connections")
.tags(METRIC_CATEGORY, poolName) .tags(METRIC_CATEGORY, poolName)
.create(); .register(meterRegistry);
this.idleConnectionGauge = meterRegistry this.idleConnectionGauge = Gauge.builder(METRIC_NAME_IDLE_CONNECTIONS, poolStats, PoolStats::getIdleConnections)
.gaugeBuilder(METRIC_NAME_IDLE_CONNECTIONS, Integer.class, (i) -> poolStats.getIdleConnections()) .description("Idle connections")
.tags(METRIC_CATEGORY, poolName) .tags(METRIC_CATEGORY, poolName)
.create(); .register(meterRegistry);
this.activeConnectionGauge = meterRegistry this.activeConnectionGauge = Gauge.builder(METRIC_NAME_ACTIVE_CONNECTIONS, poolStats, PoolStats::getActiveConnections)
.gaugeBuilder(METRIC_NAME_ACTIVE_CONNECTIONS, Integer.class, (i) -> poolStats.getActiveConnections()) .description("Active connections")
.tags(METRIC_CATEGORY, poolName) .tags(METRIC_CATEGORY, poolName)
.create(); .register(meterRegistry);
this.pendingConnectionGauge = meterRegistry this.pendingConnectionGauge = Gauge.builder(METRIC_NAME_PENDING_CONNECTIONS, poolStats, PoolStats::getPendingThreads)
.gaugeBuilder(METRIC_NAME_PENDING_CONNECTIONS, Integer.class, (i) -> poolStats.getPendingThreads()) .description("Pending threads")
.tags(METRIC_CATEGORY, poolName) .tags(METRIC_CATEGORY, poolName)
.create(); .register(meterRegistry);
} }
/** {@inheritDoc} */ /** {@inheritDoc} */
@ -98,18 +95,18 @@ public class MicrometerMetricsTracker implements IMetricsTracker
@Override @Override
public void recordConnectionUsageMillis(final long elapsedBorrowedMillis) public void recordConnectionUsageMillis(final long elapsedBorrowedMillis)
{ {
connectionUsage.record(elapsedBorrowedMillis); connectionUsage.record(elapsedBorrowedMillis, TimeUnit.MILLISECONDS);
} }
@Override @Override
public void recordConnectionTimeout() public void recordConnectionTimeout()
{ {
connectionTimeoutMeter.count(); connectionTimeoutCounter.increment();
} }
@Override @Override
public void recordConnectionCreatedMillis(long connectionCreatedMillis) public void recordConnectionCreatedMillis(long connectionCreatedMillis)
{ {
connectionCreation.record(connectionCreatedMillis); connectionCreation.record(connectionCreatedMillis, TimeUnit.MILLISECONDS);
} }
} }

Loading…
Cancel
Save