@Override public void registerGauge(String id, Supplier<Number> supplier, String... tagNameValuePairs) { Id metricId = suffixBaseId(id).withTags(tagNameValuePairs); PolledMeter.remove(registry, metricId); PolledMeter.using(registry) .withId(metricId) .monitorValue(supplier, ignore -> supplier.get().doubleValue()); }
@Inject public CassMonitorMetrics(Registry registry) { cassStop = registry.gauge(Metrics.METRIC_PREFIX + "cass.stop"); cassStart = registry.gauge(Metrics.METRIC_PREFIX + "cass.start"); cassAutoStart = registry.gauge(Metrics.METRIC_PREFIX + "cass.auto.start"); getSeedsCnt = PolledMeter.using(registry) .withName(Metrics.METRIC_PREFIX + "cass.getSeedCnt") .monitorMonotonicCounter(new AtomicLong(0)); getTokenCnt = PolledMeter.using(registry) .withName(Metrics.METRIC_PREFIX + "cass.getTokenCnt") .monitorMonotonicCounter(new AtomicLong(0)); getReplacedIpCnt = PolledMeter.using(registry) .withName(Metrics.METRIC_PREFIX + "cass.getReplacedIpCnt") .monitorMonotonicCounter(new AtomicLong(0)); doubleRingCnt = PolledMeter.using(registry) .withName(Metrics.METRIC_PREFIX + "cass.doubleRingCnt") .monitorMonotonicCounter(new AtomicLong(0)); }
/** Create builder for a polled gauge based on the config. */ public static PolledMeter.Builder polledGauge(MonitorConfig config) { long delayMillis = Math.max(Pollers.getPollingIntervals().get(0) - 1000, 5000); Id id = createId(config); PolledMeter.remove(registry, id); return PolledMeter.using(registry) .withId(id) .withDelay(Duration.ofMillis(delayMillis)) .scheduleOn(gaugePool()); }
private static AtomicLong getGauge(String name, String... additionalTags) { String key = className + "." + name + "." + Joiner.on(",").join(additionalTags); return gauges.computeIfAbsent(key, pollTimer -> { Id id = registry.createId(name, getTags(additionalTags)); return PolledMeter.using(registry) .withId(id) .monitorValue(new AtomicLong(0)); }); }
PolledMeter.using(backupMetrics.getRegistry()) .withName(backupMetrics.uploadQueueSize) .monitorSize(uploadQueue); this.fileUploadExecutor = new BlockingSubmitThreadPoolExecutor( PolledMeter.using(backupMetrics.getRegistry()) .withName(backupMetrics.downloadQueueSize) .monitorSize(downloadQueue); this.fileDownloadExecutor = new BlockingSubmitThreadPoolExecutor(
@Test public void testNumberGauge() { Number n = 42.0; NumberGauge c = new NumberGauge(CONFIG, n); register(c); PolledMeter.update(registry); assertEquals(42.0, registry.gauge(ID).value(), 1e-12); }
AnnotatedNumberMonitor(MonitorConfig config, Object object, AccessibleObject field) { super(config); this.object = object; this.field = field; if ("COUNTER".equals(config.getTags().getValue("type"))) { SpectatorContext.polledGauge(config) .monitorMonotonicCounter(this, m -> m.getValue(0).longValue()); } else { SpectatorContext.polledGauge(config) .monitorValue(this, m -> m.getValue(0).doubleValue()); } }
/** * {@inheritDoc} */ @Override public void initializeSpectator(TagList tags) { Number n = numberRef.get(); if (n != null) { SpectatorContext.polledGauge(baseConfig.withAdditionalTags(tags)).monitorValue(n); } }
/** Register a custom monitor. */ public static void register(Monitor<?> monitor) { if (monitor instanceof SpectatorMonitor) { ((SpectatorMonitor) monitor).initializeSpectator(BasicTagList.EMPTY); } else if (!isEmptyComposite(monitor)) { ServoMeter m = new ServoMeter(monitor); PolledMeter.remove(registry, m.id()); PolledMeter.monitorMeter(registry, m); monitorMonitonicValues(monitor); } }
private static void monitorMonitonicValues(Monitor<?> monitor) { if (!(monitor instanceof SpectatorMonitor)) { if (monitor instanceof CompositeMonitor<?>) { CompositeMonitor<?> cm = (CompositeMonitor<?>) monitor; for (Monitor<?> m : cm.getMonitors()) { monitorMonitonicValues(m); } } else if (isCounter(monitor.getConfig())) { polledGauge(monitor.getConfig()) .monitorMonotonicCounter(monitor, m -> ((Number) m.getValue()).longValue()); } } }
/** Unregister a custom monitor. */ public static void unregister(Monitor<?> monitor) { PolledMeter.remove(registry, createId(monitor.getConfig())); }
@Test public void testBasicGauge() { BasicGauge<Double> c = new BasicGauge<>(CONFIG, () -> 42.0); register(c); PolledMeter.update(registry); assertEquals(42.0, registry.gauge(ID).value(), 1e-12); }
/** * {@inheritDoc} */ @Override public void initializeSpectator(TagList tags) { SpectatorContext.polledGauge(baseConfig) .monitorValue(this, m -> m.getValue(0).doubleValue()); }
@Test public void testCustomCounter() { CustomCounter c = new CustomCounter(); register(c); c.increment(); PolledMeter.update(registry); assertEquals(1, registry.counter(ID).count()); }
@Test public void testMinGaugeRemove() { MinGauge g = new MinGauge(CONFIG); DefaultMonitorRegistry.getInstance().register(g); DefaultMonitorRegistry.getInstance().unregister(g); g.update(42); PolledMeter.update(registry); assertEquals(0, registry.stream().count()); }
@Test public void testPeakRateCounter() { PeakRateCounter c = new PeakRateCounter(CONFIG); DefaultMonitorRegistry.getInstance().register(c); c.increment(); PolledMeter.update(registry); assertEquals(1.0, registry.gauge(ID).value()); }
@Test public void testAnnotatedCounter() { AnnotateExample ex = new AnnotateExample("foo"); PolledMeter.update(registry); Id id = registry.createId("counter") .withTag("class", "AnnotateExample") .withTag("level", "INFO") .withTag("id", "foo"); assertEquals(1, registry.counter(id).count()); }
@Test public void testAnnotatedGauge() { AnnotateExample ex = new AnnotateExample("foo"); PolledMeter.update(registry); Id id = registry.createId("gauge") .withTag("class", "AnnotateExample") .withTag("level", "INFO") .withTag("id", "foo"); assertEquals(42.0, registry.gauge(id).value(), 1e-12); }
@Test public void testGuage() { DefaultRegistry registry = new DefaultRegistry(); SpectatorMetricRegistry metricRegistry = new SpectatorMetricRegistry(registry, registry.createId("foo")); metricRegistry.registerGauge("bar", () -> 10); PolledMeter.update(registry); Assert.assertEquals(10.0, registry.gauge(registry.createId("foo.bar")).value(), 0); }
@Test public void testUnregister() { DefaultRegistry registry = new DefaultRegistry(); SpectatorMetricRegistry metricRegistry = new SpectatorMetricRegistry(registry, registry.createId("foo")); metricRegistry.registerGauge("bar", () -> 10); metricRegistry.registerGauge("bar", () -> 20); PolledMeter.update(registry); Assert.assertEquals(20.0, registry.gauge(registry.createId("foo.bar")).value(), 0); } }