com.codahale.metrics.Timer类的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(13.2k)|赞(0)|评价(0)|浏览(116)

本文整理了Java中com.codahale.metrics.Timer类的一些代码示例,展示了Timer类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Timer类的具体详情如下:
包路径:com.codahale.metrics.Timer
类名称:Timer

Timer介绍

[英]A timer metric which aggregates timing durations and provides duration statistics, plus throughput statistics via Meter.
[中]一种计时器度量,它聚合计时持续时间并提供持续时间统计信息,以及通过计时器提供的吞吐量统计信息。

代码示例

代码示例来源:origin: io.dropwizard.metrics/metrics-core

@Override
  public void run() {
    running.inc();
    final Timer.Context context = duration.time();
    try {
      command.run();
    } finally {
      context.stop();
      running.dec();
      completed.mark();
    }
  }
}

代码示例来源:origin: Graylog2/graylog2-server

private void recordEsMetrics(JestResult jestResult, @Nullable TimeRange range) {
  esTotalSearchesCounter.inc();
  final long tookMs = tookMsFromSearchResult(jestResult);
  esRequestTimer.update(tookMs, TimeUnit.MILLISECONDS);
  if (range != null) {
    esTimeRangeHistogram.update(TimeRanges.toSeconds(range));
  }
}

代码示例来源:origin: Graylog2/graylog2-server

public static TimerRateMetricsResponse buildTimerMap(Timer t) {
  final TimerRateMetricsResponse result = new TimerRateMetricsResponse();
  if (t == null) {
    return result;
  }
  final TimerMetricsResponse time = new TimerMetricsResponse();
  time.max = TimeUnit.MICROSECONDS.convert(t.getSnapshot().getMax(), TimeUnit.NANOSECONDS);
  time.min = TimeUnit.MICROSECONDS.convert(t.getSnapshot().getMin(), TimeUnit.NANOSECONDS);
  time.mean = TimeUnit.MICROSECONDS.convert((long) t.getSnapshot().getMean(), TimeUnit.NANOSECONDS);
  time.percentile95th = TimeUnit.MICROSECONDS.convert((long) t.getSnapshot().get95thPercentile(), TimeUnit.NANOSECONDS);
  time.percentile98th = TimeUnit.MICROSECONDS.convert((long) t.getSnapshot().get98thPercentile(), TimeUnit.NANOSECONDS);
  time.percentile99th = TimeUnit.MICROSECONDS.convert((long) t.getSnapshot().get99thPercentile(), TimeUnit.NANOSECONDS);
  time.stdDev = TimeUnit.MICROSECONDS.convert((long) t.getSnapshot().getStdDev(), TimeUnit.NANOSECONDS);
  final RateMetricsResponse rate = new RateMetricsResponse();
  rate.oneMinute = t.getOneMinuteRate();
  rate.fiveMinute = t.getFiveMinuteRate();
  rate.fifteenMinute = t.getFifteenMinuteRate();
  rate.total = t.getCount();
  rate.mean = t.getMeanRate();
  result.time = time;
  result.rate = rate;
  result.rateUnit = "events/second";
  result.durationUnit = TimeUnit.MICROSECONDS.toString().toLowerCase(Locale.ENGLISH);
  return result;
}

代码示例来源:origin: stagemonitor/stagemonitor

/**
 * Export dropwizard Timer as a histogram. Use TIME_UNIT as time unit.
 */
private MetricFamilySamples fromTimer(List<Map.Entry<MetricName, Timer>> histogramsWithSameName) {
  final SummaryMetricFamily summaryMetricFamily = getSummaryMetricFamily(histogramsWithSameName, "_seconds");
  for (Map.Entry<MetricName, Timer> entry : histogramsWithSameName) {
    addSummaryMetric(summaryMetricFamily, entry.getKey(), entry.getValue().getSnapshot(), SECONDS_IN_NANOS, entry.getValue().getCount());
  }
  return summaryMetricFamily;
}

代码示例来源:origin: uber/chaperone

Object secondInitInstance = HelixKafkaMirrorMakerMetricsReporter.get();
Assert.assertTrue(firstInitInstance == secondInitInstance);
Counter testCounter0 = new Counter();
Meter testMeter0 = new Meter();
Timer testTimer0 = new Timer();
HelixKafkaMirrorMakerMetricsReporter.get().registerMetric("testCounter0", testCounter0);
HelixKafkaMirrorMakerMetricsReporter.get().registerMetric("testMeter0", testMeter0);
HelixKafkaMirrorMakerMetricsReporter.get().registerMetric("testTimer0", testTimer0);
testCounter0.inc();
testMeter0.mark();
Context context = testTimer0.time();
context.stop();
  HelixKafkaMirrorMakerMetricsReporter.get().getRegistry().getCounters().get("testCounter0")
    .getCount(),
  1);
Assert.assertEquals(
  HelixKafkaMirrorMakerMetricsReporter.get().getRegistry().getMeters().get("testMeter0")
    .getCount(),
  1);
Assert.assertEquals(
  HelixKafkaMirrorMakerMetricsReporter.get().getRegistry().getTimers().get("testTimer0")
    .getCount(),
  1);

代码示例来源:origin: apache/hive

@Test
public void testCompilationQueryMetric() {
 Timer timer = metricRegistry.getTimers().get(MetricsConstant.HS2_COMPILING_QUERIES);
 Counter counter = metricRegistry.getCounters()
   .get(MetricsConstant.ACTIVE_CALLS + MetricsConstant.HS2_COMPILING_QUERIES);
 assertThat(timer, nullValue());
 assertThat(counter, nullValue());
 hook.beforeCompile(ctx);
 timer = metricRegistry.getTimers().get(MetricsConstant.HS2_COMPILING_QUERIES);
 counter = metricRegistry.getCounters()
   .get(MetricsConstant.ACTIVE_CALLS + MetricsConstant.HS2_COMPILING_QUERIES);
 assertThat(timer.getCount(), equalTo(0l));
 assertThat(counter.getCount(), equalTo(1l));
 hook.afterCompile(ctx, false);
 timer = metricRegistry.getTimers().get(MetricsConstant.HS2_COMPILING_QUERIES);
 counter = metricRegistry.getCounters()
   .get(MetricsConstant.ACTIVE_CALLS + MetricsConstant.HS2_COMPILING_QUERIES);
 assertThat(timer.getCount(), equalTo(1l));
 assertThat(counter.getCount(), equalTo(0l));
}

代码示例来源:origin: org.apache.fluo/fluo-core

public static synchronized Timer addTimer(FluoConfiguration config, MetricRegistry registry,
  String name) {
 Timer timer = registry.getTimers().get(name);
 if (timer == null) {
  timer = new Timer(getConfiguredReservoir(config));
  registry.register(name, timer);
 }
 return timer;
}

代码示例来源:origin: apache/storm

@POST
@Path("/{func}") 
public String post(@PathParam("func") String func, String args, @Context HttpServletRequest request) throws Exception {
  meterHttpRequests.mark();
  return responseDuration.time(() -> drpc.executeBlocking(func, args));
}

代码示例来源:origin: jooby-project/jooby

@Override
public void handle(final Request req, final Response rsp) throws Throwable {
 MetricRegistry registry = req.require(MetricRegistry.class);
 Counter counter = registry.counter("request.actives");
 Timer.Context timer = registry.timer("request").time();
 counter.inc();
 rsp.complete((ereq, ersp, x) -> {
  timer.stop();
  counter.dec();
  Meter meter = registry.meter("responses." + rsp.status().orElse(Status.OK).value());
  meter.mark();
 });
}

代码示例来源:origin: Alluxio/alluxio

private static List<Metric> allMetrics(MetricsSystem.InstanceType instanceType) {
 List<Metric> metrics = new ArrayList<>();
 for (Entry<String, Gauge> entry : METRIC_REGISTRY.getGauges().entrySet()) {
  if (entry.getKey().startsWith(instanceType.toString())) {
   Object value = entry.getValue().getValue();
   if (!(value instanceof Number)) {
    LOG.warn(
      "The value of metric {} of type {} is not sent to metrics master,"
        + " only metrics value of number can be collected",
      entry.getKey(), entry.getValue().getClass().getSimpleName());
    continue;
   }
   metrics.add(Metric.from(entry.getKey(), ((Number) value).longValue()));
  }
 }
 for (Entry<String, Counter> entry : METRIC_REGISTRY.getCounters().entrySet()) {
  metrics.add(Metric.from(entry.getKey(), entry.getValue().getCount()));
 }
 for (Entry<String, Meter> entry : METRIC_REGISTRY.getMeters().entrySet()) {
  // TODO(yupeng): From Meter's implementation, getOneMinuteRate can only report at rate of at
  // least seconds. if the client's duration is too short (i.e. < 1s), then getOneMinuteRate
  // would return 0
  metrics.add(Metric.from(entry.getKey(), entry.getValue().getOneMinuteRate()));
 }
 for (Entry<String, Timer> entry : METRIC_REGISTRY.getTimers().entrySet()) {
  metrics.add(Metric.from(entry.getKey(), entry.getValue().getCount()));
 }
 return metrics;
}

代码示例来源:origin: aol/micro-server

@Subscribe
public void jobStarted(JobStartEvent data) {
  if (this.configuration.isJobsByType()) {
    registry.meter(prefix + ".job-meter-" + data.getType())
        .mark();
    jobs.start(data.getCorrelationId(), timer(prefix + ".job-timer-" + data.getType()).time());
    registry.counter(prefix + ".jobs-active-" + data.getType() + "-count")
        .inc();
  }
}

代码示例来源:origin: apache/hive

@Test
public void testConcurrency() throws Exception {
 int threads = 4;
 ExecutorService executorService = Executors.newFixedThreadPool(threads);
 for (int i=0; i< threads; i++) {
  final int n = i;
  executorService.submit(new Callable<Void>() {
   @Override
   public Void call() throws Exception {
    MetricsFactory.getInstance().startStoredScope("method2");
    MetricsFactory.getInstance().endStoredScope("method2");
    return null;
   }
  });
 }
 executorService.shutdown();
 assertTrue(executorService.awaitTermination(10000, TimeUnit.MILLISECONDS));
 Timer timer = metricRegistry.getTimers().get("method2");
 Assert.assertEquals(4, timer.getCount());
 Assert.assertTrue(timer.getMeanRate() > 0);
}

代码示例来源:origin: Graylog2/graylog2-server

@Nullable
private Message postProcessMessage(RawMessage raw, Codec codec, String inputIdOnCurrentNode, String baseMetricName, Message message, long decodeTime) {
  if (message == null) {
    metricRegistry.meter(name(baseMetricName, "failures")).mark();
    return null;
    metricRegistry.meter(name(baseMetricName, "incomplete")).mark();
    if (LOG.isDebugEnabled()) {
      LOG.debug("Dropping incomplete message {} on input <{}>. Parsed fields: [{}]",
  metricRegistry.timer(name(baseMetricName, "parseTime")).update(decodeTime, TimeUnit.NANOSECONDS);
  metricRegistry.meter(name(baseMetricName, "processedMessages")).mark();
  decodedTrafficCounter.inc(message.getSize());
  return message;

代码示例来源:origin: apache/incubator-gobblin

@Override
protected void reportInContext(MetricContext context,
                SortedMap<String, Gauge> gauges,
                SortedMap<String, Counter> counters,
                SortedMap<String, Histogram> histograms,
                SortedMap<String, Meter> meters,
                SortedMap<String, Timer> timers) {
 for (Map.Entry<String, Gauge> entry : gauges.entrySet()) {
  Gauge gauge = entry.getValue();
  if (gauge.getValue() instanceof Long ||
    gauge.getValue() instanceof Integer ||
    gauge.getValue() instanceof Short ||
    gauge.getValue() instanceof Byte)
   reportValue(context, entry.getKey(), ((Number) gauge.getValue()).longValue());
 }
 for (Map.Entry<String, Counter> entry : counters.entrySet()) {
  reportCount(context, entry.getKey(), entry.getValue().getCount());
 }
 for (Map.Entry<String, Meter> entry : meters.entrySet()) {
  reportCount(context, entry.getKey(), entry.getValue().getCount());
 }
 for (Map.Entry<String, Histogram> entry : histograms.entrySet()) {
  reportCount(context, entry.getKey(), entry.getValue().getCount());
 }
 for (Map.Entry<String, Timer> entry : timers.entrySet()) {
  reportCount(context, entry.getKey(), entry.getValue().getCount());
 }
}

代码示例来源:origin: Netflix/spectator

@Test
public void timer() {
 MetricRegistry codaRegistry = new MetricRegistry();
 MetricsRegistry r = new MetricsRegistry(clock, codaRegistry);
 r.timer("foo").record(1, TimeUnit.MILLISECONDS);
 Assertions.assertEquals(1, codaRegistry.getTimers().get("foo").getCount());
}

代码示例来源:origin: astefanutti/metrics-aspectj

@Test
public void metricsMethodNotCalledYet() {
  assertThat("Shared metric registry is not created", SharedMetricRegistries.names(), hasItem(REGISTRY_NAME));
  MetricRegistry registry = SharedMetricRegistries.getOrCreate(REGISTRY_NAME);
  assertThat("Metrics are not registered correctly", registry.getMetrics().keySet(), is(equalTo(absoluteMetricNames())));
  // Make sure that the metrics haven't been called yet
  assertThat("Meter count is incorrect", registry.getMeters().get(absoluteMetricName("exception")).getCount(), is(equalTo(0L)));
  assertThat("Meter count is incorrect", registry.getMeters().get(absoluteMetricName("meter")).getCount(), is(equalTo(0L)));
  assertThat("Timer count is incorrect", registry.getTimers().get(absoluteMetricName("timer")).getCount(), is(equalTo(0L)));
}

代码示例来源:origin: apache/incubator-gobblin

public static Map<String, Long> dumpMetrics(MetricContext context) {
 Map<String, Long> output = new HashMap<>();
 for (Map.Entry<String, Meter> entry : context.getMeters().entrySet()) {
  output.put(entry.getKey(), entry.getValue().getCount());
 }
 for (Map.Entry<String, Timer> entry : context.getTimers().entrySet()) {
  output.put(entry.getKey(), entry.getValue().getCount());
 }
 return output;
}

代码示例来源:origin: thinkaurelius/titan

private <T> T runWithMetrics(String opName, Function<Void,T> impl) {

    Preconditions.checkNotNull(opName);
    Preconditions.checkNotNull(impl);

    final MetricManager mgr = MetricManager.INSTANCE;
    mgr.getCounter(metricsPrefix, opName, M_CALLS).inc();
    final Timer.Context tc = mgr.getTimer(metricsPrefix, opName, M_TIME).time();

    try {
      return impl.apply(null);
    } catch (RuntimeException e) {
      mgr.getCounter(metricsPrefix, opName, M_EXCEPTIONS).inc();
      throw e;
    } finally {
      tc.stop();
    }
  }
}

代码示例来源:origin: apache/usergrid

@Override
public Status ackMessage(String queueName, UUID queueMessageId ) {
  if( logger.isTraceEnabled() ){
    logger.trace("Acking message for queue {} with id: {}", queueName, queueMessageId);
  }
  Timer.Context timer = metricsService.getMetricRegistry().timer( MetricsService.ACK_TIME_TOTAL ).time();
  try {
    QueueAckRequest message = new QueueAckRequest( queueName, queueMessageId );
    return sendMessageToLocalRouters( message );
  } finally {
    timer.close();
  }
}

代码示例来源:origin: Graylog2/graylog2-server

@Override
public Messages process(Messages messages) {
  for (final MessageFilter filter : filterRegistry) {
    for (Message msg : messages) {
      final String timerName = name(filter.getClass(), "executionTime");
      final Timer timer = metricRegistry.timer(timerName);
      final Timer.Context timerContext = timer.time();
      try {
        LOG.debug("Applying filter [{}] on message <{}>.", filter.getName(), msg.getId());
        if (filter.filter(msg)) {
          LOG.debug("Filter [{}] marked message <{}> to be discarded. Dropping message.",
              filter.getName(),
              msg.getId());
          msg.setFilterOut(true);
          filteredOutMessages.mark();
          journal.markJournalOffsetCommitted(msg.getJournalOffset());
        }
      } catch (Exception e) {
        LOG.error("Could not apply filter [" + filter.getName() + "] on message <" + msg.getId() + ">: ",
            e);
      } finally {
        final long elapsedNanos = timerContext.stop();
        msg.recordTiming(serverStatus, timerName, elapsedNanos);
      }
    }
  }
  return messages;
}

相关文章