config().meterFilter(new MeterFilter() { @Override public MeterFilterReply accept(Meter.Id id) { meterRegistry.config().namingConvention(MoreNamingConventions.dropwizard()); meterRegistry.config().pauseDetector(new NoPauseDetector()); return meterRegistry;
this.lineBuilderFunction = lineBuilderFunction; this.lineSink = lineSink; config().namingConvention(namingConvention); config().onMeterRemoved(meter -> {
.map(Label::toString) .toArray(String[]::new); registry.config().meterFilter(MeterFilter.ignoreTags(ignored)); matches.forEach(m -> { switch (m.getType()) { if (m.getAlias() == null) { registry.config().meterFilter(MeterFilter.accept(id -> { if (m.getDomain() != null && !id.getName().startsWith(m.getDomain().getPrefix())) { } else { registry.config().meterFilter(replaceTagValues( m.getDomain(), m.getLabel(), if (m.getAlias() == null) { registry.config().meterFilter(MeterFilter.accept(id -> { if (m.getDomain() != null && !id.getName().startsWith(m.getDomain().getPrefix())) { } else { registry.config().meterFilter(replaceTagValues( m.getDomain(), m.getLabel(),
BackendRegistries.getNow(registryName).config().meterFilter( MeterFilter.replaceTagValues(Label.REMOTE.toString(), s -> "_", "127.0.0.1:9195"));
BackendRegistries.getNow(registryName).config().meterFilter( MeterFilter.replaceTagValues(Label.REMOTE.toString(), s -> "_", "localhost:9194"));
key = "host_hostname_alias"; return "\"" + config().namingConvention().tagKey(escapeJson(key)) + "\":\"" + config().namingConvention().tagValue(escapeJson(tag.getValue())) + "\""; }) .collect(joining(",")));
@Override public ListenableFuture<ClientHttpResponse> intercept(HttpRequest request, byte[] body, AsyncClientHttpRequestExecution execution) throws IOException { final String urlTemplate = urlTemplateHolder.get(); urlTemplateHolder.remove(); final Clock clock = meterRegistry.config().clock(); final long startTime = clock.monotonicTime(); ListenableFuture<ClientHttpResponse> future; try { future = execution.executeAsync(request, body); } catch (IOException e) { getTimeBuilder(urlTemplate, request, null).register(meterRegistry) .record(clock.monotonicTime() - startTime, TimeUnit.NANOSECONDS); throw e; } future.addCallback(new ListenableFutureCallback<ClientHttpResponse>() { @Override public void onSuccess(final ClientHttpResponse response) { getTimeBuilder(urlTemplate, request, response).register(meterRegistry) .record(clock.monotonicTime() - startTime, TimeUnit.NANOSECONDS); } @Override public void onFailure(final Throwable ex) { getTimeBuilder(urlTemplate, request, null).register(meterRegistry) .record(clock.monotonicTime() - startTime, TimeUnit.NANOSECONDS); } }); return future; }
@Override public Vertx getObject() throws Exception { LOGGER.debug("Creating a new instance of Vert.x"); VertxOptions options = new VertxOptions(); boolean metricsEnabled = environment.getProperty("services.metrics.enabled", Boolean.class, false); if (metricsEnabled) { configureMetrics(options); } Vertx instance = Vertx.vertx(options); instance.registerVerticleFactory(springVerticleFactory); if (metricsEnabled) { MeterRegistry registry = BackendRegistries.getDefaultNow(); registry.config() .meterFilter(new RenameVertxFilter()) .commonTags("application", node.application()) .commonTags("instance", node.hostname()); new FileDescriptorMetrics().bindTo(registry); new ClassLoaderMetrics().bindTo(registry); new JvmMemoryMetrics().bindTo(registry); new JvmGcMetrics().bindTo(registry); new ProcessorMetrics().bindTo(registry); new JvmThreadMetrics().bindTo(registry); } return instance; }
private SignalFxProtocolBuffers.DataPoint.Builder addDatapoint(Meter meter, SignalFxProtocolBuffers.MetricType metricType, @Nullable String statSuffix, Number value) { SignalFxProtocolBuffers.Datum.Builder datumBuilder = SignalFxProtocolBuffers.Datum.newBuilder(); SignalFxProtocolBuffers.Datum datum = (value instanceof Double ? datumBuilder.setDoubleValue((Double) value) : datumBuilder.setIntValue((Long) value) ).build(); String metricName = config().namingConvention().name(statSuffix == null ? meter.getId().getName() : meter.getId().getName() + "." + statSuffix, meter.getId().getType(), meter.getId().getBaseUnit()); SignalFxProtocolBuffers.DataPoint.Builder dataPointBuilder = SignalFxProtocolBuffers.DataPoint.newBuilder() .setMetric(metricName) .setMetricType(metricType) .setValue(datum); for (Tag tag : getConventionTags(meter.getId())) { dataPointBuilder.addDimensions(SignalFxProtocolBuffers.Dimension.newBuilder() .setKey(tag.getKey()) .setValue(tag.getValue()) .build()); } return dataPointBuilder; }
public SignalFxMeterRegistry(SignalFxConfig config, Clock clock, ThreadFactory threadFactory) { super(config, clock); this.config = config; URI apiUri = URI.create(config.uri()); int port = apiUri.getPort(); if (port == -1) { if ("http" .equals(apiUri.getScheme())) { port = 80; } else if ("https" .equals(apiUri.getScheme())) { port = 443; } } SignalFxReceiverEndpoint signalFxEndpoint = new SignalFxEndpoint(apiUri.getScheme(), apiUri.getHost(), port); this.dataPointReceiverFactory = new HttpDataPointProtobufReceiverFactory(signalFxEndpoint); this.eventReceiverFactory = new HttpEventProtobufReceiverFactory(signalFxEndpoint); config().namingConvention(new SignalFxNamingConvention()); start(threadFactory); }
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; }
public AtlasMeterRegistry(AtlasConfig config, Clock clock) { super(clock); this.atlasConfig = config; this.registry = new AtlasRegistry(new com.netflix.spectator.api.Clock() { @Override public long wallTime() { return clock.wallTime(); } @Override public long monotonicTime() { return clock.monotonicTime(); } }, config); // invalid character replacement happens in the spectator-reg-atlas module, so doesn't need // to be duplicated here. config().namingConvention(new AtlasNamingConvention()); start(); }
public PrometheusBackendRegistry(VertxPrometheusOptions options) { this.options = options; registry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT); if (options.isPublishQuantiles()) { registry.config().meterFilter( new MeterFilter() { @Override public DistributionStatisticConfig configure(Meter.Id id, DistributionStatisticConfig config) { return DistributionStatisticConfig.builder() .percentilesHistogram(true) .build() .merge(config); } }); } }
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 void updateIfNamingConventionChanged() { NamingConvention next = config.namingConvention(); if (this.namingConvention != next) { for (; ; ) { if (namingConventionUpdater.compareAndSet(this, this.namingConvention, next)) break; } this.name = telegrafEscape(next.name(id.getName(), id.getType(), id.getBaseUnit())); this.tags = HashTreePMap.empty(); this.conventionTags = id.getTagsAsIterable().iterator().hasNext() ? id.getConventionTags(this.namingConvention).stream() .map(t -> telegrafEscape(t.getKey()) + "=" + telegrafEscape(t.getValue())) .collect(Collectors.joining(",")) : null; this.tagsNoStat = tags(null, conventionTags, "=", ","); } }
@Bean public MeterRegistryCustomizer meterRegistryCustomizer() { return registry -> registry .config() .meterFilter( MeterFilter.deny( id -> { String uri = id.getTag("uri"); return uri != null && (uri.startsWith("/actuator") || uri.startsWith("/metrics") || uri.startsWith("/health") || uri.startsWith("/favicon.ico") || uri.startsWith("/prometheus")); })); }
@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); } }
private AppOpticsMeterRegistry(AppOpticsConfig config, Clock clock, ThreadFactory threadFactory, HttpSender httpClient) { super(config, clock); config().namingConvention(new AppOpticsNamingConvention()); this.config = config; this.httpClient = httpClient; config().meterFilter(new MeterFilter() { @Override public Meter.Id map(Meter.Id id) { if (id.getName().startsWith("system.")) { return id.withName("micrometer." + id.getName()); } return id; } }); start(threadFactory); }
private GangliaMeterRegistry(GangliaConfig config, Clock clock, HierarchicalNameMapper nameMapper, ThreadFactory threadFactory) { super(config, clock); // Technically, Ganglia doesn't have any constraints on metric or tag names, but the encoding of Unicode can look // horrible in the UI. So be aware... this.config = config; this.nameMapper = nameMapper; config().namingConvention(NamingConvention.camelCase); try { this.ganglia = new GMetric(config.host(), config.port(), config.addressingMode(), config.ttl()); start(threadFactory); } catch (IOException e) { throw new RuntimeException("Failed to configure Ganglia metrics reporting", e); } }
public InfluxMeterRegistry(InfluxConfig config, Clock clock) { super(new InfluxRegistry(config, new com.netflix.spectator.api.Clock() { @Override public long wallTime() { return clock.wallTime(); } @Override public long monotonicTime() { return clock.monotonicTime(); } }), clock, config.step().toMillis()); this.config().namingConvention(new InfluxNamingConvention()); start(); }