private void writeStats(long evtCount, long oldestArrivalTime, long oldestOccurrenceTime, String source, Stat runtime) { /* * Add some stats about this invocation */ Stat eventCount = new Stat("event.count", evtCount, Stat.MetricType.count); Stat spoutLag = new Stat("spout.lag.ms", (System.currentTimeMillis() - oldestArrivalTime), Stat.MetricType.gauge); Stat sourceLag = new Stat("source.lag.ms", (System.currentTimeMillis() - oldestOccurrenceTime), Stat.MetricType.gauge); eventCount.addTag("source", source); spoutLag.addTag("source", source); sourceLag.addTag("source", source); runtime.addTag("source", source); this.monitor.addInvocationStat(eventCount); this.monitor.addInvocationStat(spoutLag); this.monitor.addInvocationStat(sourceLag); this.monitor.addInvocationStat(runtime); /* * Report stats */ this.monitor.writeStats(); }
public MonitoredProcess(Class clazz) { String child = clazz.getCanonicalName(); runtimeStat = new Stat("timing.ns", Stat.MetricType.gauge); runtimeStat.addTag("class", child); errorCountStat = new Stat("error.count", Stat.MetricType.count); errorCountStat.addTag("class", child); successCountStat = new Stat("success.count", Stat.MetricType.count); successCountStat.addTag("class", child); Monitor monitor = Monitor.getInstance(); monitor.addProcess(this); monitor.addInstanceStat(runtimeStat); monitor.addInstanceStat(errorCountStat); monitor.addInstanceStat(successCountStat); }
@Test public void testStatFilterName() { MonitorFactory mf = new MonitorFactory(); Monitor monitor = mf.getInstance(); StatFilter filter = new StatFilter(); filter.setName("bender.test.fail"); List<StatFilter> filters = new ArrayList<StatFilter>(1); filters.add(filter); DummyReporter reporter = new DummyReporter(filters); monitor.addReporters(Arrays.asList(reporter)); Stat statFail = new Stat("bender.test.fail"); Stat statPass = new Stat("bender.test.pass"); monitor.addInvocationStat(statFail); monitor.addInvocationStat(statPass); monitor.writeStats(); assertEquals(1, reporter.buffer.size()); assertEquals(true, reporter.buffer.contains("bender.test.pass 0")); assertEquals(false, reporter.buffer.contains("bender.test.fail 0")); }
monitor = Monitor.getInstance(); monitor.addTag("functionName", ctx.getFunctionName()); monitor.addTag("functionVersion", alias); monitor.addTags(config.getHandlerConfig().getMetricTags()); AWSLambda lambda = this.lambdaClientFactory.newInstance(); ListTagsResult res = lambda.listTags(new ListTagsRequest().withResource(ctx.getInvokedFunctionArn())); monitor.addTagsMap(res.getTags()); monitor.addReporters(handlerResources.getReporters());
public void writeStats() { for (Reporter reporter : statsReporters) { List<StatFilter> filters = reporter.getStatFilters(); ArrayList<Stat> stats = getStats(); for (StatFilter filter : filters) { Predicate<Stat> statPredicate = StatFilter.isMatch(filter); stats.removeIf(statPredicate); } /* * Catch anything a reporter may throw to prevent function failures. */ try { reporter.write(stats, invokeTime, tags); } catch (Exception e) { logger.warn("reporter threw an error while writing stats", e); } } clearStats(); }
@Before public void before() { handler = new DummyHandler(); BaseHandler.CONFIG_FILE = null; Monitor.getInstance().getTags().clear(); }
@After public void after() { BufferedTransporter.output.clear(); handler.monitor.clearStats(); }
public Monitor getInstance() { return Monitor.getInstance(); } }
@Test public void testEmptyFilter() { MonitorFactory mf = new MonitorFactory(); Monitor monitor = mf.getInstance(); List<StatFilter> filters = new ArrayList<StatFilter>(1); DummyReporter reporter = new DummyReporter(filters); monitor.addReporters(Arrays.asList(reporter)); Stat statPass1 = new Stat("bender.test.pass1"); statPass1.addTag("foo", "3"); Stat statPass2 = new Stat("bender.test.pass2"); statPass2.addTag("foo", "4"); monitor.addInvocationStat(statPass1); monitor.addInvocationStat(statPass2); monitor.writeStats(); assertEquals(2, reporter.buffer.size()); assertEquals(true, reporter.buffer.contains("bender.test.pass1 foo:3 0")); assertEquals(true, reporter.buffer.contains("bender.test.pass2 foo:4 0")); }
monitor = Monitor.getInstance(); monitor.addTag("functionName", ctx.getFunctionName()); monitor.addTag("functionVersion", alias); monitor.addTags(config.getHandlerConfig().getMetricTags()); AWSLambda lambda = this.lambdaClientFactory.newInstance(); ListTagsResult res = lambda.listTags(new ListTagsRequest().withResource(ctx.getInvokedFunctionArn())); monitor.addTagsMap(res.getTags()); monitor.addReporters(handlerResources.getReporters());
public void writeStats() { for (Reporter reporter : statsReporters) { List<StatFilter> filters = reporter.getStatFilters(); ArrayList<Stat> stats = getStats(); for (StatFilter filter : filters) { Predicate<Stat> statPredicate = StatFilter.isMatch(filter); stats.removeIf(statPredicate); } /* * Catch anything a reporter may throw to prevent function failures. */ try { reporter.write(stats, invokeTime, tags); } catch (Exception e) { logger.warn("reporter threw an error while writing stats", e); } } clearStats(); }
@After public void after() { BufferedTransporter.output.clear(); handler.monitor.clearStats(); }
public Monitor getInstance() { return Monitor.getInstance(); } }
@Test public void testMultipleTags() { MonitorFactory mf = new MonitorFactory(); Monitor monitor = mf.getInstance(); List<StatFilter> filters = new ArrayList<StatFilter>(1); DummyReporter reporter = new DummyReporter(filters); monitor.addReporters(Arrays.asList(reporter)); Stat stat = new Stat("bender.test.tags"); stat.addTag("foo", "3"); stat.addTag("foo", "3"); stat.addTag("foo", "4"); monitor.addInvocationStat(stat); monitor.writeStats(); assertEquals(1, reporter.buffer.size()); assertEquals(true, reporter.buffer.contains("bender.test.tags foo:3 0")); }
public MonitoredProcess(Class clazz) { String child = clazz.getCanonicalName(); runtimeStat = new Stat("timing.ns", Stat.MetricType.gauge); runtimeStat.addTag("class", child); errorCountStat = new Stat("error.count", Stat.MetricType.count); errorCountStat.addTag("class", child); successCountStat = new Stat("success.count", Stat.MetricType.count); successCountStat.addTag("class", child); Monitor monitor = Monitor.getInstance(); monitor.addProcess(this); monitor.addInstanceStat(runtimeStat); monitor.addInstanceStat(errorCountStat); monitor.addInstanceStat(successCountStat); }
private void writeStats(long evtCount, long oldestArrivalTime, long oldestOccurrenceTime, String source, Stat runtime) { /* * Add some stats about this invocation */ Stat eventCount = new Stat("event.count", evtCount, Stat.MetricType.count); Stat spoutLag = new Stat("spout.lag.ms", (System.currentTimeMillis() - oldestArrivalTime), Stat.MetricType.gauge); Stat sourceLag = new Stat("source.lag.ms", (System.currentTimeMillis() - oldestOccurrenceTime), Stat.MetricType.gauge); eventCount.addTag("source", source); spoutLag.addTag("source", source); sourceLag.addTag("source", source); runtime.addTag("source", source); this.monitor.addInvocationStat(eventCount); this.monitor.addInvocationStat(spoutLag); this.monitor.addInvocationStat(sourceLag); this.monitor.addInvocationStat(runtime); /* * Report stats */ this.monitor.writeStats(); }
@Test public void testFilterZeros() { MonitorFactory mf = new MonitorFactory(); Monitor monitor = mf.getInstance(); StatFilter filter = new StatFilter(); filter.setReportZeros(false); List<StatFilter> filters = new ArrayList<StatFilter>(1); filters.add(filter); DummyReporter reporter = new DummyReporter(filters); monitor.addReporters(Arrays.asList(reporter)); Stat statFail = new Stat("bender.test.fail"); statFail.setValue(0); Stat statPass = new Stat("bender.test.pass"); statPass.setValue(1); monitor.addInvocationStat(statFail); monitor.addInvocationStat(statPass); monitor.writeStats(); assertEquals(1, reporter.buffer.size()); assertEquals(true, reporter.buffer.contains("bender.test.pass 1")); assertEquals(false, reporter.buffer.contains("bender.test.fail 0")); }
@Test public void testStatFilterTags() { MonitorFactory mf = new MonitorFactory(); Monitor monitor = mf.getInstance(); StatFilter filter = new StatFilter(); filter.setName("bender.test.tags"); filter.setTags(Sets.newSet(new Tag("foo", "3"))); List<StatFilter> filters = new ArrayList<StatFilter>(1); filters.add(filter); DummyReporter reporter = new DummyReporter(filters); monitor.addReporters(Arrays.asList(reporter)); Stat statFail = new Stat("bender.test.tags"); statFail.addTag("foo", "3"); Stat statPass = new Stat("bender.test.tags"); statPass.addTag("bar", "4"); monitor.addInvocationStat(statFail); monitor.addInvocationStat(statPass); monitor.writeStats(); assertEquals(1, reporter.buffer.size()); assertEquals(true, reporter.buffer.contains("bender.test.tags bar:4 0")); assertEquals(false, reporter.buffer.contains("bender.test.tags foo:3 0")); }
monitor.addReporters(Arrays.asList(reporter)); s4.addTag("t1", "3"); monitor.addInvocationStat(s1); monitor.addInvocationStat(s2); monitor.addInvocationStat(s3); monitor.addInvocationStat(s4); monitor.writeStats();