public MetricReporters addLogger() { logger.debug("Adding slf4j reporter for metrics"); if (metricRegistries.isEmpty()) { throw new RuntimeException("There are no metric registries."); } for (PrefixedRegistry prefixedRegistry : metricRegistries) { Slf4jReporter loggerReporter = Slf4jReporter.forRegistry(prefixedRegistry.metricRegistry) .convertRatesTo(TimeUnit.SECONDS) .convertDurationsTo(TimeUnit.NANOSECONDS) .filter(ActivityMetrics.METRIC_FILTER) .outputTo(logger) .build(); scheduledReporters.add(loggerReporter); } return this; }
@Override protected Slf4jReporter createInstance() { final Slf4jReporter.Builder reporter = Slf4jReporter.forRegistry(getMetricRegistry()); if (hasProperty(DURATION_UNIT)) { reporter.convertDurationsTo(getProperty(DURATION_UNIT, TimeUnit.class)); } if (hasProperty(RATE_UNIT)) { reporter.convertRatesTo(getProperty(RATE_UNIT, TimeUnit.class)); } reporter.filter(getMetricFilter()); reporter.prefixedWith(getPrefix()); if (hasProperty(MARKER)) { reporter.markWith(MarkerFactory.getMarker(getProperty(MARKER))); } if (hasProperty(LOGGER)) { reporter.outputTo(LoggerFactory.getLogger(getProperty(LOGGER))); } if (hasProperty(LEVEL)) { reporter.withLoggingLevel(getProperty(LEVEL, LoggingLevel.class)); } return reporter.build(); }
private static void setupSlf4jReporting(MetricRegistry metrics) { if (!metricsSlf4jReportingEnabled) return; MetricFilter mpTriggerFilter = (name, metric) -> !name.equals(mpTrigger); Slf4jReporter slf4jReporter = Slf4jReporter.forRegistry(metrics) .convertDurationsTo(TimeUnit.MICROSECONDS) .convertRatesTo(TimeUnit.SECONDS) .outputTo(LoggerFactory.getLogger("org.corfudb.metricsdata")) .filter(mpTriggerFilter) .build(); slf4jReporter.start(metricsLogInterval, TimeUnit.SECONDS); }
if (slf4jMinutes > 0) { final Slf4jReporter reporter = Slf4jReporter.forRegistry(registry) .filter(filter()) .outputTo(LoggerFactory.getLogger(DOMAIN)) .convertRatesTo(TimeUnit.SECONDS)
if (reporter == null) { Builder reporterBuilder = Slf4jReporter.forRegistry(registry) .filter(filter) .convertDurationsTo(defaultDurationUnit) .convertRatesTo(defaultRateUnit)
if (reporter == null) { Builder reporterBuilder = Slf4jReporter.forRegistry(registry) .filter(filter) .convertDurationsTo(defaultDurationUnit) .convertRatesTo(defaultRateUnit)
@Override public Jcr customize(Oak oak) { boolean enableMetrics = Boolean.getBoolean("enableMetrics"); if (enableMetrics) { log.info("Enabling Metrics integration"); MBeanServer server = ManagementFactory.getPlatformMBeanServer(); ScheduledExecutorService executor = MoreExecutors.getExitingScheduledExecutorService(new ScheduledThreadPoolExecutor(1)); MetricStatisticsProvider statsProvider = new MetricStatisticsProvider(server, executor); oak.getWhiteboard().register(StatisticsProvider.class, statsProvider, Collections.emptyMap()); final Slf4jReporter reporter = Slf4jReporter.forRegistry(statsProvider.getRegistry()) .outputTo(LoggerFactory.getLogger("org.apache.jackrabbit.oak.metrics")) .convertRatesTo(TimeUnit.SECONDS) .filter(new MetricFilter() { @Override public boolean matches(String name, Metric metric) { return name.startsWith("SESSION_READ"); } }) .convertDurationsTo(TimeUnit.MICROSECONDS) .build(); reporter.start(30, TimeUnit.SECONDS); } return new Jcr(oak); } });
/** * Creates a {@link DropwizardMetricRegistry} with an {@link Slf4jReporter}. Only non-zero metrics * will be logged to the {@link Slf4jReporter}. * * @param registry The registry on which to add the reporter. * @param logger The {@link Logger} to report to * @param period the amount of time between polls * @param unit the unit for {@code period} */ public static void createSlf4jReporter(DropwizardMetricRegistry registry, Logger logger, long period, TimeUnit unit) { MetricFilter nonZeroMatcher = new MetricFilter() { @Override public boolean matches(String name, Metric metric) { if (metric instanceof Counting) { Counting counter = (Counting) metric; return counter.getCount() > 0; } return true; } }; Slf4jReporter.forRegistry(registry.getRegistry()) .outputTo(logger) .convertRatesTo(TimeUnit.SECONDS) .convertDurationsTo(TimeUnit.MILLISECONDS) .filter(nonZeroMatcher) .build() .start(period, unit); }
@Override public ScheduledReporter build(MetricRegistry registry) { final Slf4jReporter.Builder builder = Slf4jReporter.forRegistry(registry) .convertDurationsTo(getDurationUnit()) .convertRatesTo(getRateUnit()) .filter(getFilter()) .outputTo(getLogger()); if (markerName != null) { builder.markWith(MarkerFactory.getMarker(markerName)); } return builder.build(); } }
public void reportToLog() { logger.info("-- BEGIN METRICS DETAIL --"); Slf4jReporter reporter = Slf4jReporter.forRegistry(ActivityMetrics.getMetricRegistry()) .convertDurationsTo(TimeUnit.MICROSECONDS) .convertRatesTo(TimeUnit.SECONDS) .filter(MetricFilter.ALL) .outputTo(logger) .build(); reporter.report(); logger.info("-- END METRICS DETAIL --"); }
@Override public ScheduledReporter build(MetricRegistry registry) { final Slf4jReporter.Builder builder = Slf4jReporter.forRegistry(registry) .convertDurationsTo(getDurationUnit()) .convertRatesTo(getRateUnit()) .filter(getFilter()) .outputTo(getLogger()); if (markerName != null) { builder.markWith(MarkerFactory.getMarker(markerName)); } return builder.build(); } }
@Before public void setUp() { final MetricRegistry metrics = new MetricRegistry(); metrics.registerAll(new MemoryUsageGaugeSet()); metrics.registerAll(new GarbageCollectorMetricSet()); metricReporter = Slf4jReporter.forRegistry(metrics) .filter((name, metric) -> name.matches("(.*heap|pools.PS.*).usage")) .withLoggingLevel(Slf4jReporter.LoggingLevel.DEBUG) .convertRatesTo(TimeUnit.SECONDS) .convertDurationsTo(TimeUnit.MILLISECONDS) .build(); metricReporter.start(60, TimeUnit.SECONDS); }
@Override public ScheduledReporter build(MetricRegistry registry) { final Slf4jReporter.Builder builder = Slf4jReporter.forRegistry(registry) .convertDurationsTo(getDurationUnit()) .convertRatesTo(getRateUnit()) .filter(getFilter()) .outputTo(getLogger()); if (markerName != null) { builder.markWith(MarkerFactory.getMarker(markerName)); } return builder.build(); } }