/** * Construct the metrics system * @param prefix for the system */ public MetricsSystemImpl(String prefix) { this.prefix = prefix; allSources = Maps.newHashMap(); sources = Maps.newLinkedHashMap(); allSinks = Maps.newHashMap(); sinks = Maps.newLinkedHashMap(); sourceConfigs = Maps.newHashMap(); sinkConfigs = Maps.newHashMap(); callbacks = Lists.newArrayList(); namedCallbacks = Maps.newHashMap(); injectedTags = Lists.newArrayList(); collector = new MetricsCollectorImpl(); if (prefix != null) { // prefix could be null for default ctor, which requires init later initSystemMBean(); } }
@Override public void run() { synchronized (parent) { final MetricsCollectorImpl mc = new MetricsCollectorImpl(); final MetricsRecordBuilder rb = mc.addRecord("RatesRoller"); /** * snapshot all metrics regardless of being changed or not, in case no * ops since last snapshot, we will get 0. */ parent.innerMetrics.snapshot(rb, true); Preconditions.checkState(mc.getRecords().size() == 1, "There must be only one record and it's named with 'RatesRoller'"); parent.currentSnapshot = parent.innerMetrics.getGlobalMetrics(); parent.rollOverAvgs(); } parent.setChanged(); } }
lastRecs = getMetrics(new MetricsCollectorImpl(), true);
/** * Construct the metrics system * @param prefix for the system */ public MetricsSystemImpl(String prefix) { this.prefix = prefix; allSources = Maps.newHashMap(); sources = Maps.newLinkedHashMap(); allSinks = Maps.newHashMap(); sinks = Maps.newLinkedHashMap(); sourceConfigs = Maps.newHashMap(); sinkConfigs = Maps.newHashMap(); callbacks = Lists.newArrayList(); namedCallbacks = Maps.newHashMap(); injectedTags = Lists.newArrayList(); collector = new MetricsCollectorImpl(); if (prefix != null) { // prefix could be null for default ctor, which requires init later initSystemMBean(); } }
/** * Construct the metrics system * @param prefix for the system */ public MetricsSystemImpl(String prefix) { this.prefix = prefix; allSources = Maps.newHashMap(); sources = Maps.newLinkedHashMap(); allSinks = Maps.newHashMap(); sinks = Maps.newLinkedHashMap(); sourceConfigs = Maps.newHashMap(); sinkConfigs = Maps.newHashMap(); callbacks = Lists.newArrayList(); namedCallbacks = Maps.newHashMap(); injectedTags = Lists.newArrayList(); collector = new MetricsCollectorImpl(); if (prefix != null) { // prefix could be null for default ctor, which requires init later initSystemMBean(); } }
/** * Construct the metrics system * @param prefix for the system */ public MetricsSystemImpl(String prefix) { this.prefix = prefix; allSources = Maps.newHashMap(); sources = Maps.newLinkedHashMap(); allSinks = Maps.newHashMap(); sinks = Maps.newLinkedHashMap(); sourceConfigs = Maps.newHashMap(); sinkConfigs = Maps.newHashMap(); callbacks = Lists.newArrayList(); namedCallbacks = Maps.newHashMap(); injectedTags = Lists.newArrayList(); collector = new MetricsCollectorImpl(); if (prefix != null) { // prefix could be null for default ctor, which requires init later initSystemMBean(); } }
static MetricsRecordBuilderImpl builder(String name) { return new MetricsCollectorImpl().addRecord(name); } }
static MetricsRecordBuilderImpl builder(String name) { return new MetricsCollectorImpl().addRecord(name); } }
@Override public void run() { MetricsCollectorImpl builder = new MetricsCollectorImpl(); try { // This resets lastRecs. sa.getMetrics(builder, true); LOG.info("reset lastRecs"); } catch (Exception e) { // catch all errors hasError.set(true); LOG.error(e.getStackTrace()); } finally { if (hasError.get()) { LOG.error("Hit error, stopping now"); future.cancel(false); } } } }
@Override public void run() { MetricsCollectorImpl builder = new MetricsCollectorImpl(); try { // This resets lastRecs. sa.getMetrics(builder, true); LOG.info("reset lastRecs"); } catch (Exception e) { // catch all errors hasError.set(true); LOG.error(e.getStackTrace()); } finally { if (hasError.get()) { LOG.error("Hit error, stopping now"); future.cancel(false); } } } }
private void checkSchedulingPolicy(String queueName, String policy) { MetricsSource queueSource = TestQueueMetrics.queueSource(ms, queueName); MetricsCollectorImpl collector = new MetricsCollectorImpl(); queueSource.getMetrics(collector, true); MetricsRecords.assertTag(collector.getRecords().get(0), "SchedulingPolicy", policy); } }
@Test public void testPerfMetricsInited() { scheduler.init(conf); scheduler.start(); MetricsCollectorImpl collector = new MetricsCollectorImpl(); scheduler.fsOpDurations.getMetrics(collector, true); assertEquals("Incorrect number of perf metrics", 1, collector.getRecords().size()); }
@Test public void testPerfMetricsInited() { scheduler.init(conf); scheduler.start(); MetricsCollectorImpl collector = new MetricsCollectorImpl(); scheduler.fsOpDurations.getMetrics(collector, true); assertEquals("Incorrect number of perf metrics", 1, collector.getRecords().size()); }
@Test public void testGetMetricsAndJmx() throws Exception { // create test source with a single metric counter of value 0 TestSource source = new TestSource("test"); MetricsSourceBuilder sb = MetricsAnnotations.newSourceBuilder(source); final MetricsSource s = sb.build(); List<MetricsTag> injectedTags = new ArrayList<MetricsTag>(); MetricsSourceAdapter sa = new MetricsSourceAdapter( "test", "test", "test desc", s, injectedTags, null, null, 1, false); // all metrics are initially assumed to have changed MetricsCollectorImpl builder = new MetricsCollectorImpl(); Iterable<MetricsRecordImpl> metricsRecords = sa.getMetrics(builder, true); // Validate getMetrics and JMX initial values MetricsRecordImpl metricsRecord = metricsRecords.iterator().next(); assertEquals(0L, metricsRecord.metrics().iterator().next().value().longValue()); Thread.sleep(100); // skip JMX cache TTL assertEquals(0L, (Number)sa.getAttribute("C1")); // change metric value source.incrementCnt(); // validate getMetrics and JMX builder = new MetricsCollectorImpl(); metricsRecords = sa.getMetrics(builder, true); metricsRecord = metricsRecords.iterator().next(); assertTrue(metricsRecord.metrics().iterator().hasNext()); Thread.sleep(100); // skip JMX cache TTL assertEquals(1L, (Number)sa.getAttribute("C1")); }
@Test public void testGetMetricsAndJmx() throws Exception { // create test source with a single metric counter of value 0 TestSource source = new TestSource("test"); MetricsSourceBuilder sb = MetricsAnnotations.newSourceBuilder(source); final MetricsSource s = sb.build(); List<MetricsTag> injectedTags = new ArrayList<MetricsTag>(); MetricsSourceAdapter sa = new MetricsSourceAdapter( "test", "test", "test desc", s, injectedTags, null, null, 1, false); // all metrics are initially assumed to have changed MetricsCollectorImpl builder = new MetricsCollectorImpl(); Iterable<MetricsRecordImpl> metricsRecords = sa.getMetrics(builder, true); // Validate getMetrics and JMX initial values MetricsRecordImpl metricsRecord = metricsRecords.iterator().next(); assertEquals(0L, metricsRecord.metrics().iterator().next().value().longValue()); Thread.sleep(100); // skip JMX cache TTL assertEquals(0L, (Number)sa.getAttribute("C1")); // change metric value source.incrementCnt(); // validate getMetrics and JMX builder = new MetricsCollectorImpl(); metricsRecords = sa.getMetrics(builder, true); metricsRecord = metricsRecords.iterator().next(); assertTrue(metricsRecord.metrics().iterator().hasNext()); Thread.sleep(100); // skip JMX cache TTL assertEquals(1L, (Number)sa.getAttribute("C1")); }
/** * Construct the metrics system * @param prefix for the system */ public MetricsSystemImpl(String prefix) { this.prefix = prefix; allSources = Maps.newHashMap(); sources = Maps.newLinkedHashMap(); allSinks = Maps.newHashMap(); sinks = Maps.newLinkedHashMap(); sourceConfigs = Maps.newHashMap(); sinkConfigs = Maps.newHashMap(); callbacks = Lists.newArrayList(); namedCallbacks = Maps.newHashMap(); injectedTags = Lists.newArrayList(); collector = new MetricsCollectorImpl(); if (prefix != null) { // prefix could be null for default ctor, which requires init later initSystemMBean(); } }
@Test public void recordBuilderShouldNoOpIfFiltered() { SubsetConfiguration fc = new ConfigBuilder() .add("p.exclude", "foo").subset("p"); MetricsCollectorImpl mb = new MetricsCollectorImpl(); mb.setRecordFilter(newGlobFilter(fc)); MetricsRecordBuilderImpl rb = mb.addRecord("foo"); rb.tag(info("foo", ""), "value").addGauge(info("g0", ""), 1); assertEquals("no tags", 0, rb.tags().size()); assertEquals("no metrics", 0, rb.metrics().size()); assertNull("null record", rb.getRecord()); assertEquals("no records", 0, mb.getRecords().size()); }
@Test public void recordBuilderShouldNoOpIfFiltered() { SubsetConfiguration fc = new ConfigBuilder() .add("p.exclude", "foo").subset("p"); MetricsCollectorImpl mb = new MetricsCollectorImpl(); mb.setRecordFilter(newGlobFilter(fc)); MetricsRecordBuilderImpl rb = mb.addRecord("foo"); rb.tag(info("foo", ""), "value").addGauge(info("g0", ""), 1); assertEquals("no tags", 0, rb.tags().size()); assertEquals("no metrics", 0, rb.metrics().size()); assertNull("null record", rb.getRecord()); assertEquals("no records", 0, mb.getRecords().size()); }
@Test public void testPerMetricFiltering() { SubsetConfiguration fc = new ConfigBuilder() .add("p.exclude", "foo").subset("p"); MetricsCollectorImpl mb = new MetricsCollectorImpl(); mb.setMetricFilter(newGlobFilter(fc)); MetricsRecordBuilderImpl rb = mb.addRecord("foo"); rb.tag(info("foo", ""), "").addCounter(info("c0", ""), 0) .addGauge(info("foo", ""), 1); assertEquals("1 tag", 1, rb.tags().size()); assertEquals("1 metric", 1, rb.metrics().size()); assertEquals("expect foo tag", "foo", rb.tags().get(0).name()); assertEquals("expect c0", "c0", rb.metrics().get(0).name()); } }
@Test public void testPerMetricFiltering() { SubsetConfiguration fc = new ConfigBuilder() .add("p.exclude", "foo").subset("p"); MetricsCollectorImpl mb = new MetricsCollectorImpl(); mb.setMetricFilter(newGlobFilter(fc)); MetricsRecordBuilderImpl rb = mb.addRecord("foo"); rb.tag(info("foo", ""), "").addCounter(info("c0", ""), 0) .addGauge(info("foo", ""), 1); assertEquals("1 tag", 1, rb.tags().size()); assertEquals("1 metric", 1, rb.metrics().size()); assertEquals("expect foo tag", "foo", rb.tags().get(0).name()); assertEquals("expect c0", "c0", rb.metrics().get(0).name()); } }