public void from(Iterator<Meter> meters, MeasurementGroupConfig groupConfig) { meters.forEachRemaining(meter -> { Iterable<Measurement> measurements = meter.measure(); from(measurements, groupConfig); }); }
public static void registerMeter(Registry registry, Meter meter) { if (!(registry instanceof AbstractRegistry)) { throw new IllegalStateException("registry must be a AbstractRegistry, class=" + registry.getClass().getName()); } ((AbstractRegistry) registry).getOrCreate(meter.id(), Meter.class, null, _id -> meter); } }
@Override public boolean hasExpired() { for (Meter m : meters) { if (m != null && !m.hasExpired()) return false; } return true; }
/** Get a list of all measurements from the registry. */ List<Measurement> getMeasurements() { return stream() .filter(m -> !m.hasExpired()) .flatMap(m -> StreamSupport.stream(m.measure().spliterator(), false)) .collect(Collectors.toList()); }
@Test public void iterator() { registry.counter("c"); registry.timer("t"); registry.distributionSummary("s"); registry.gauge("g"); Set<String> actual = new HashSet<>(); for (Meter m : registry) { Assertions.assertFalse(m.hasExpired()); actual.add(m.id().name()); } Set<String> expected = new HashSet<>(); expected.add("c"); expected.add("t"); expected.add("s"); expected.add("g"); Assertions.assertEquals(expected, actual); }
/** Get a list of all measurements from the registry. */ List<Measurement> getMeasurements() { return stream() .filter(m -> !m.hasExpired()) .flatMap(m -> StreamSupport.stream(m.measure().spliterator(), false)) .collect(Collectors.toList()); }
@Override public List<MetricFamilySamples> describe() { List<MetricFamilySamples> familySamples = new ArrayList<>(); if (globalRegistry == null) { return familySamples; } List<Sample> samples = new ArrayList<>(); for (Registry registry : globalRegistry.getRegistries()) { for (Meter meter : registry) { meter.measure().forEach(measurement -> { Sample sample = convertMeasurementToSample(measurement); samples.add(sample); }); } } familySamples.add(new MetricFamilySamples("ServiceComb_Metrics", Type.UNTYPED, "ServiceComb Metrics", samples)); return familySamples; }
/** Get a list of all measurements from the registry. */ Stream<Measurement> getMeasurements() { return stream() .filter(m -> !m.hasExpired()) .flatMap(m -> StreamSupport.stream(m.measure().spliterator(), false)) .filter(m -> !Double.isNaN(m.value())); }
public static void registerMeter(Registry registry, Meter meter) { if (!(registry instanceof AbstractRegistry)) { throw new IllegalStateException("registry must be a AbstractRegistry, class=" + registry.getClass().getName()); } ((AbstractRegistry) registry).getOrCreate(meter.id(), Meter.class, null, _id -> meter); } }
private void assertLongTaskTimer(Meter t, long timestamp, int activeTasks, double duration) { for (Measurement m : t.measure()) { Assertions.assertEquals(m.timestamp(), timestamp); if (m.id().equals(t.id().withTag(Statistic.activeTasks))) { Assertions.assertEquals(m.value(), activeTasks, 1.0e-12); } else if (m.id().equals(t.id().withTag(Statistic.duration))) { Assertions.assertEquals(m.value(), duration, 1.0e-12); } else { Assertions.fail("unexpected id: " + m.id()); } } }
@Override public boolean hasExpired() { for (Meter m : meters) { if (m != null && !m.hasExpired()) return false; } return true; }
@ApiResponses({ @ApiResponse(code = 400, response = String.class, message = "illegal request content"), }) @GET @Path("/") public Map<String, Double> measure() { Map<String, Double> measurements = new LinkedHashMap<>(); if (globalRegistry == null) { return measurements; } StringBuilder sb = new StringBuilder(); for (Registry registry : globalRegistry.getRegistries()) { for (Meter meter : registry) { meter.measure().forEach(measurement -> { String key = idToString(measurement.id(), sb); measurements.put(key, measurement.value()); }); } } return measurements; }
private static List<Measurement> getAllMeasurements(Registry registry) { PolledMeter.update(registry); final List<Measurement> result = new ArrayList<>(); registry.stream() .filter(meter -> !meter.hasExpired()) .forEach(meter -> meter.measure().forEach(result::add)); return result; }
private static void validateIpcMeter(Registry registry, IpcMetric metric, Class<?> type) { final String name = metric.metricName(); registry.stream() .filter(m -> name.equals(m.id().name()) && !isPercentile(m.id())) .forEach(m -> { assertTrue(type.isAssignableFrom(m.getClass()), "[%s] has the wrong type, expected %s but found %s", m.id(), type.getSimpleName(), getName(m.getClass())); metric.validate(m.id()); }); }
@Override public boolean hasExpired() { return underlying.hasExpired(); }
public PolledEvent poll(long secondInterval) { long msNow = clock.wallTime(); List<Meter> meters = new ArrayList<>(); List<Measurement> measurements = new ArrayList<>(); for (Registry registry : registries) { SpectatorUtils.removeExpiredMeters(registry); for (Meter meter : registry) { if (meter instanceof PeriodMeter) { ((PeriodMeter) meter).calcMeasurements(msNow, secondInterval); } meters.add(meter); meter.measure().forEach(measurements::add); } } return new PolledEvent(meters, measurements); } }
private Iterable<Measurement> measure() { Map<Id, Measurement> measurements = new HashMap<>(); Iterator<Meter> iter = queue.iterator(); while (iter.hasNext()) { Meter meter = iter.next(); if (meter.hasExpired()) { iter.remove(); } else { for (Measurement m : meter.measure()) { Measurement prev = measurements.get(m.id()); if (prev == null) { measurements.put(m.id(), m); } else { double v = prev.value() + m.value(); measurements.put(prev.id(), new Measurement(prev.id(), prev.timestamp(), v)); } } } } if (queue.isEmpty()) { LOGGER.trace("meter [{}] has expired", id); } return measurements.values(); }
private static void validateIpcMeter(Registry registry, IpcMetric metric, Class<?> type) { final String name = metric.metricName(); registry.stream() .filter(m -> name.equals(m.id().name()) && !isPercentile(m.id())) .forEach(m -> { assertTrue(type.isAssignableFrom(m.getClass()), "[%s] has the wrong type, expected %s but found %s", m.id(), type.getSimpleName(), getName(m.getClass())); metric.validate(m.id()); }); }