public MicrometerModule(TimeUnit timeUnit) { this(timeUnit, name -> true, Tags.empty()); }
Iterable<Tag> getMetricsTag(Map<String, Object> parameters) { String tagsString = getAndRemoveParameter(parameters, "tags", String.class, ""); if (tagsString != null && !tagsString.isEmpty()) { String[] tagStrings = tagsString.split("\\s*,\\s*"); return Stream.of(tagStrings) .map(s -> Tags.of(s.split("\\s*=\\s*"))) .reduce(Tags.empty(), Tags::and); } return Tags.empty(); }
@Override public TomcatMetrics get() { return new TomcatMetrics(manager, Tags.empty()); } }
private String event(Meter.Id id, Attribute... attributes) { return event(id, Tags.empty(), attributes); }
@Override public ScheduledExecutorService newScheduledThreadPool(ThreadPoolProfile profile, ThreadFactory threadFactory) { ScheduledExecutorService executorService = threadPoolFactory.newScheduledThreadPool(profile, threadFactory); String executorServiceName = name(profile.getId()); return new TimedScheduledExecutorService(meterRegistry, executorService, executorServiceName, Tags.empty()); }
@Override public void process(Exchange exchange) { Message in = exchange.getIn(); String defaultMetricsName = simple(exchange, getEndpoint().getMetricsName(), String.class); String finalMetricsName = getStringHeader(in, HEADER_METRIC_NAME, defaultMetricsName); Iterable<Tag> defaultTags = getEndpoint().getTags(); Iterable<Tag> headerTags = getTagHeader(in, HEADER_METRIC_TAGS, Tags.empty()); Iterable<Tag> finalTags = Tags.concat(defaultTags, headerTags).stream() .map(tag -> Tag.of( simple(exchange, tag.getKey(), String.class), simple(exchange, tag.getValue(), String.class))) .reduce(Tags.empty(), Tags::and, Tags::and) .and(Tags.of( CAMEL_CONTEXT_TAG, getEndpoint().getCamelContext().getName())); try { doProcess(exchange, finalMetricsName, finalTags); } catch (Exception e) { exchange.setException(e); } finally { clearMetricsHeaders(in); } }
@Override public void bindTo(MeterRegistry registry) { for (FileStore fileStore : FileSystems.getDefault().getFileStores()) { LOG.debug("Add gauge metric for {}", fileStore.name()); Iterable<Tag> tagsWithPath = Tags.concat(Tags.empty(), "path", fileStore.toString()); Gauge.builder("disk.free", fileStore, exceptionToNonWrapper(FileStore::getUnallocatedSpace)) .tags(tagsWithPath) .description("Unallocated space for file store") .baseUnit("bytes") .strongReference(true) .register(registry); Gauge.builder("disk.total", fileStore, exceptionToNonWrapper(FileStore::getTotalSpace)) .tags(tagsWithPath) .description("Total space for file store") .baseUnit("bytes") .strongReference(true) .register(registry); Gauge.builder("disk.usable", fileStore, exceptionToNonWrapper(FileStore::getUsableSpace)) .tags(tagsWithPath) .description("Usable space for file store") .baseUnit("bytes") .strongReference(true) .register(registry); } }