String writeDocument(Meter meter, Consumer<StringBuilder> consumer) { StringBuilder sb = new StringBuilder(INDEX_LINE); String timestamp = FORMATTER.format(Instant.ofEpochMilli(config().clock().wallTime())); String name = getConventionName(meter.getId()); String type = meter.getId().getType().toString().toLowerCase(); sb.append("{\"").append(config.timestampFieldName()).append("\":\"").append(timestamp).append('"') .append(",\"name\":\"").append(escapeJson(name)).append('"') .append(",\"type\":\"").append(type).append('"'); List<Tag> tags = getConventionTags(meter.getId()); for (Tag tag : tags) { sb.append(",\"").append(escapeJson(tag.getKey())).append("\":\"") .append(escapeJson(tag.getValue())).append('"'); } consumer.accept(sb); sb.append("}"); return sb.toString(); }
private String indexName() { ZonedDateTime dt = ZonedDateTime.ofInstant(new Date(config().clock().wallTime()).toInstant(), ZoneOffset.UTC); return config.index() + "-" + DateTimeFormatter.ofPattern(config.indexDateFormat()).format(dt); }
Stream<String> writeFunctionCounter(FunctionCounter counter) { double count = counter.count(); if (Double.isFinite(count)) { return Stream.of(writeMetric(counter.getId(), config().clock().wallTime(), count)); } return Stream.empty(); }
public Object metricsAdvice(ProceedingJoinPoint proceedingJoinPoint) throws Throwable { Object result; MethodProceedingJoinPoint methodProceedingJoinPoint = new MethodProceedingJoinPoint(proceedingJoinPoint); final Clock clock = Metrics.globalRegistry.config().clock(); final long startTime = clock.monotonicTime(); try { result = proceedingJoinPoint.proceed(); getTimerBuilder(methodProceedingJoinPoint, null) .register(Metrics.globalRegistry) .record(clock.monotonicTime() - startTime, TimeUnit.NANOSECONDS); } catch (Throwable e) { getTimerBuilder(methodProceedingJoinPoint, e) .register(Metrics.globalRegistry) .record(clock.monotonicTime() - startTime, TimeUnit.NANOSECONDS); throw e; } return result; }
@Override public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException { final String urlTemplate = urlTemplateHolder.get(); urlTemplateHolder.remove(); final Clock clock = meterRegistry.config().clock(); final long startTime = clock.monotonicTime(); ClientHttpResponse response = null; try { response = execution.execute(request, body); return response; } finally { getTimeBuilder(urlTemplate, request, response).register(this.meterRegistry) .record(clock.monotonicTime() - startTime, TimeUnit.NANOSECONDS); } }
Stream<String> writeCounter(Counter counter) { return Stream.of(writeMetric(counter.getId(), config().clock().wallTime(), counter.count())); }
@Override public Clock clock() { return new MicrometerClock(impl.config().clock()); }
HttpRequestDurationHandler(MeterRegistry registry, String metricName, HttpHandler next) { this.registry = registry; this.metricName = metricName; this.next = next; this.clock = registry.config().clock(); }
@Override protected io.micrometer.core.instrument.Timer newTimer(Meter.Id id, Histogram.Builder<?> histogram, Quantiles quantiles) { id.setBaseUnit("seconds"); final CustomPrometheusSummary summary = collectorByName(CustomPrometheusSummary.class, id.getConventionName(), n -> new CustomPrometheusSummary(id).register(registry)); return new PrometheusTimer(id, summary.child(id.getConventionTags(), quantiles, buildHistogramIfNecessary(histogram)), config().clock()); }
Stream<String> writeLongTaskTimer(LongTaskTimer timer) { long wallTime = config().clock().wallTime(); return Stream.of( writeMetric(idWithSuffix(timer.getId(), "activeTasks"), wallTime, timer.activeTasks()), writeMetric(idWithSuffix(timer.getId(), "duration"), wallTime, timer.duration(getBaseTimeUnit())) ); }
Stream<String> writeTimeGauge(TimeGauge timeGauge) { Double value = timeGauge.value(getBaseTimeUnit()); if (Double.isFinite(value)) { return Stream.of(writeMetric(timeGauge.getId(), config().clock().wallTime(), value)); } return Stream.empty(); }
Stream<String> writeGauge(Gauge gauge) { Double value = gauge.value(); if (Double.isFinite(value)) { return Stream.of(writeMetric(gauge.getId(), config().clock().wallTime(), value)); } return Stream.empty(); }
Stream<String> writeTimer(Timer timer) { long wallTime = config().clock().wallTime(); return Stream.of( writeMetric(idWithSuffix(timer.getId(), "count"), wallTime, timer.count()), writeMetric(idWithSuffix(timer.getId(), "max"), wallTime, timer.max(getBaseTimeUnit())), writeMetric(idWithSuffix(timer.getId(), "avg"), wallTime, timer.mean(getBaseTimeUnit())), writeMetric(idWithSuffix(timer.getId(), "sum"), wallTime, timer.totalTime(getBaseTimeUnit())) ); }
Stream<String> writeSummary(DistributionSummary summary) { long wallTime = config().clock().wallTime(); return Stream.of( writeMetric(idWithSuffix(summary.getId(), "count"), wallTime, summary.count()), writeMetric(idWithSuffix(summary.getId(), "avg"), wallTime, summary.mean()), writeMetric(idWithSuffix(summary.getId(), "sum"), wallTime, summary.totalAmount()), writeMetric(idWithSuffix(summary.getId(), "max"), wallTime, summary.max()) ); }
@Override protected LongTaskTimer newLongTaskTimer(Meter.Id id) { final CustomPrometheusLongTaskTimer longTaskTimer = collectorByName(CustomPrometheusLongTaskTimer.class, id.getConventionName(), n -> new CustomPrometheusLongTaskTimer(id, config().clock()).register(registry)); return new PrometheusLongTaskTimer(id, longTaskTimer.child(id.getConventionTags())); }
private MetricsPlugin(final MeterRegistry registry, final String metricName, final ImmutableList<Tag> defaultTags) { this.registry = registry; this.metricName = metricName; this.defaultTags = defaultTags; this.clock = registry.config().clock(); }
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()); }
private MetricsPlugin(final MeterRegistry registry, final String metricName, final ImmutableList<Tag> defaultTags) { this.registry = registry; this.metricName = metricName; this.defaultTags = defaultTags; this.clock = registry.config().clock(); }
Stream<String> writeFunctionTimer(FunctionTimer timer) { long wallTime = config().clock().wallTime(); return Stream.of( writeMetric(idWithSuffix(timer.getId(), "count"), wallTime, timer.count()), writeMetric(idWithSuffix(timer.getId(), "avg"), wallTime, timer.mean(getBaseTimeUnit())), writeMetric(idWithSuffix(timer.getId(), "sum"), wallTime, timer.totalTime(getBaseTimeUnit())) ); }