/** * Returns a newly-registered {@link Timer} configured by {@link #distributionStatisticConfig()}. */ public static Timer newTimer(MeterRegistry registry, String name, Iterable<Tag> tags) { requireNonNull(registry, "registry"); requireNonNull(name, "name"); requireNonNull(tags, "tags"); final Duration maxExpectedValue = Optional.ofNullable(distStatCfg.getMaximumExpectedValue()) .map(Duration::ofNanos).orElse(null); final Duration minExpectedValue = Optional.ofNullable(distStatCfg.getMinimumExpectedValue()) .map(Duration::ofNanos).orElse(null); return Timer.builder(name) .tags(tags) .maximumExpectedValue(maxExpectedValue) .minimumExpectedValue(minExpectedValue) .publishPercentiles(distStatCfg.getPercentiles()) .publishPercentileHistogram(distStatCfg.isPercentileHistogram()) .distributionStatisticBufferLength(distStatCfg.getBufferLength()) .distributionStatisticExpiry(distStatCfg.getExpiry()) .register(registry); }
private void time(MethodInvocation invocation, long startTime, Exception exception) { Timer .builder(THRIFT_REQUEST_DURATION_METRIC) .publishPercentileHistogram() .description("Thrift handler request duration") .tags( "handler", invocation.getThis().getClass().getCanonicalName(), "method", invocation.getMethod().getName(), "status", exception == null ? "ok" : exception.getClass().getCanonicalName() ) .register(meterRegistry) .record(System.nanoTime() - startTime, TimeUnit.NANOSECONDS); } }
private Object timedProceed(ProceedingJoinPoint pjp, Timed timed) throws Throwable { if (timed.value().isEmpty()) { return pjp.proceed(); } Timer.Sample sample = Timer.start(registry); try { return pjp.proceed(); } finally { sample.stop( Timer.builder(timed.value()) .description(timed.description().isEmpty() ? null : timed.description()) .tags(timed.extraTags()) .tags(tagsBasedOnJoinpoint.apply(pjp)) .publishPercentileHistogram(timed.histogram()) .publishPercentiles(timed.percentiles().length == 0 ? null : timed.percentiles()) .register(registry)); } } }
private Timer.Builder getTimeBuilder(HttpServerExchange exchange) { return Timer.builder(metricName) .tags(this.getTags(exchange)) .description("Response time histogram") .publishPercentileHistogram(); }
private Timer.Builder getTransitionTimerBuilder(Transition<S, E> transition) { String transitionName = transitionToName(transition); Timer.Builder builder = Timer.builder("ssm.transition.duration") .tags("transitionName", transitionName) .description("Timer of Transition"); builder.publishPercentileHistogram(); return builder; }
private Timer.Builder getActionTimerBuilder(Action<S, E> action) { String actionName = actionToName(action); Timer.Builder builder = Timer.builder("ssm.action.duration") .tags("actionName", actionName) .description("Timer of Action"); builder.publishPercentileHistogram(); return builder; }
public Sample start(MeterRegistry registry) { if (longTask) { LongTaskTimer.Sample sample = LongTaskTimer.builder(name) .description(description) .tags(tags) .register(registry) .start(); return () -> sample.stop(); } Timer.Sample sample = Timer.start(registry); Timer timer = Timer.builder(name) .description(description) .tags(tags) .publishPercentileHistogram(histogram) .publishPercentiles(percentiles) .register(registry); return () -> sample.stop(timer); }