/** * Returns a newly-created immutable {@link Map} which contains all values of {@link Meter}s in the * specified {@link MeterRegistry}. The format of the key string is: * <ul> * <li>{@code <name>#<statistic>{tagName=tagValue,...}}</li> * <li>e.g. {@code "armeria.server.activeRequests#value{method=greet}"}</li> * <li>e.g. {@code "someSubsystem.someValue#sumOfSquares"} (no tags)</li> * </ul> * Note: It is not recommended to use this method for the purposes other than testing. */ public static Map<String, Double> measureAll(MeterRegistry registry) { requireNonNull(registry, "registry"); final ImmutableMap.Builder<String, Double> builder = ImmutableMap.builder(); registry.forEachMeter(meter -> Streams.stream(meter.measure()).forEach(measurement -> { final String fullName = measurementName(meter.getId(), measurement); final double value = measurement.getValue(); builder.put(fullName, value); })); return builder.build(); }
private void mergeMeasurements(Map<Statistic, Double> samples, Meter meter) { meter.measure().forEach((measurement) -> samples.merge(measurement.getStatistic(), measurement.getValue(), mergeFunction(measurement.getStatistic()))); }
Optional<String> writeMeter(Meter meter) { return Optional.of(writeDocument(meter, builder -> { for (Measurement measurement : meter.measure()) { builder.append(",\"").append(measurement.getStatistic().getTagValueRepresentation()).append("\":\"").append(measurement.getValue()).append("\""); } })); }
private Stream<MetricDatum> metricData(Meter m) { return stream(m.measure().spliterator(), false) .map(ms -> metricDatum(m.getId().withTag(ms.getStatistic()), ms.getValue())) .filter(Objects::nonNull); }
private Stream<TimeSeries> createMeter(Batch batch, Meter m) { return stream(m.measure().spliterator(), false) .map(ms -> batch.createTimeSeries(m, ms.getValue(), ms.getStatistic().getTagValueRepresentation())); }
private Optional<String> writeMeter(Meter meter) { return Optional.of(StreamSupport.stream(meter.measure().spliterator(), false) .map(ms -> write(meter.getId().withTag(ms.getStatistic()), null, Fields.Value.tag(), decimal(ms.getValue()))) .collect(joining(","))); }
private Stream<String> writeMeter(Meter meter) { return Stream.of( event(meter.getId(), stream(meter.measure().spliterator(), false) .map(measure -> new Attribute(measure.getStatistic().getTagValueRepresentation(), measure.getValue())) .toArray(Attribute[]::new) ) ); }
private void announceMeter(Meter meter) { for (Measurement measurement : meter.measure()) { announce(meter, measurement.getValue(), measurement.getStatistic().toString().toLowerCase()); } }
private Stream<SignalFxProtocolBuffers.DataPoint.Builder> addMeter(Meter meter) { return stream(meter.measure().spliterator(), false).flatMap(measurement -> { String statSuffix = NamingConvention.camelCase.tagKey(measurement.getStatistic().toString()); switch (measurement.getStatistic()) { case TOTAL: case TOTAL_TIME: case COUNT: case DURATION: return Stream.of(addDatapoint(meter, COUNTER, statSuffix, measurement.getValue())); case MAX: case VALUE: case UNKNOWN: case ACTIVE_TASKS: return Stream.of(addDatapoint(meter, GAUGE, statSuffix, measurement.getValue())); } return Stream.empty(); }); }
private Stream<String> writeMeter(Meter m, Map<String, DatadogMetricMetadata> metadata) { long wallTime = clock.wallTime(); return stream(m.measure().spliterator(), false) .map(ms -> { Meter.Id id = m.getId().withTag(ms.getStatistic()); addToMetadataList(metadata, id, null, ms.getStatistic(), null); return writeMetric(id, null, wallTime, ms.getValue()); }); }
private Stream<String> writeMeter(Meter meter) { long wallTime = clock.wallTime(); Stream.Builder<String> metrics = Stream.builder(); stream(meter.measure().spliterator(), false) .forEach(measurement -> { Meter.Id id = meter.getId().withTag(measurement.getStatistic()); addMetric(metrics, id, null, wallTime, measurement.getValue()); }); return metrics.build(); }
private Stream<String> writeCustomMetric(Meter meter) { long wallTime = config().clock().wallTime(); List<Tag> tags = getConventionTags(meter.getId()); return StreamSupport.stream(meter.measure().spliterator(), false) .map(ms -> new KairosMetricBuilder() .field("name", ms.getStatistic().getTagValueRepresentation()) .datapoints(wallTime, ms.getValue()) .tags(tags) .build()); }
public static List<Datapoint> listDatapoints(String regName, Predicate<Meter> predicate) { List<Datapoint> result = new ArrayList<>(); MeterRegistry registry = BackendRegistries.getNow(regName); if (registry == null) { throw new NoRegistryException(regName); } registry.forEachMeter(m -> { if (predicate.test(m)) { String id = id(m); m.measure().forEach(measurement -> { result.add(new Datapoint(id + "$" + measurement.getStatistic().name(), measurement.getValue())); }); } }); return result; }
this::removePollableMeter, m -> { for (Measurement measurement : m.measure()) { pollableMeters.remove(m.getId().withTag(measurement.getStatistic()));
private Meter convert(io.micrometer.core.instrument.Meter meter) { Meter.Builder meterBuilder = Meter.newBuilder(); MeterId.Builder idBuilder = MeterId.newBuilder(); io.micrometer.core.instrument.Meter.Id id = meter.getId(); io.micrometer.core.instrument.Meter.Type type = id.getType(); for (Tag tag : id.getTags()) { idBuilder.addTag(MeterTag.newBuilder().setKey(tag.getKey()).setValue(tag.getValue())); } idBuilder.setName(id.getName()); idBuilder.setType(convert(type)); if (id.getDescription() != null) { idBuilder.setDescription(id.getDescription()); } if (id.getBaseUnit() != null) { idBuilder.setBaseUnit(id.getBaseUnit()); } meterBuilder.setId(idBuilder); for (Measurement measurement : meter.measure()) { meterBuilder.addMeasure( MeterMeasurement.newBuilder() .setValue(measurement.getValue()) .setStatistic(convert(measurement.getStatistic()))); } return meterBuilder.build(); }