@Override public boolean doMonitor(ServiceEmitter emitter) { final Memory memory = new Memory(cgroupDiscoverer); final Memory.MemoryStat stat = memory.snapshot(); stat.getMemoryStats().forEach((key, value) -> { final ServiceMetricEvent.Builder builder = builder(); MonitorUtils.addDimensionsToBuilder(builder, dimensions); // See https://www.kernel.org/doc/Documentation/cgroup-v1/memory.txt // There are inconsistent units for these. Most are bytes. emitter.emit(builder.build(StringUtils.format("cgroup/memory/%s", key), value)); }); stat.getNumaMemoryStats().forEach((key, value) -> { final ServiceMetricEvent.Builder builder = builder().setDimension("numaZone", Long.toString(key)); MonitorUtils.addDimensionsToBuilder(builder, dimensions); value.forEach((k, v) -> emitter.emit(builder.build(StringUtils.format("cgroup/memory_numa/%s/pages", k), v))); }); return true; } }
@Test public void testMonitor() { final CgroupMemoryMonitor monitor = new CgroupMemoryMonitor(discoverer, ImmutableMap.of(), "some_feed"); final StubServiceEmitter emitter = new StubServiceEmitter("service", "host"); Assert.assertTrue(monitor.doMonitor(emitter)); final List<Event> actualEvents = emitter.getEvents(); Assert.assertEquals(44, actualEvents.size()); } }
@Override public boolean doMonitor(ServiceEmitter emitter) { final Memory memory = new Memory(cgroupDiscoverer); final Memory.MemoryStat stat = memory.snapshot(); stat.getMemoryStats().forEach((key, value) -> { final ServiceMetricEvent.Builder builder = builder(); MonitorUtils.addDimensionsToBuilder(builder, dimensions); // See https://www.kernel.org/doc/Documentation/cgroup-v1/memory.txt // There are inconsistent units for these. Most are bytes. emitter.emit(builder.build(StringUtils.format("cgroup/memory/%s", key), value)); }); stat.getNumaMemoryStats().forEach((key, value) -> { final ServiceMetricEvent.Builder builder = builder().setDimension("numaZone", Long.toString(key)); MonitorUtils.addDimensionsToBuilder(builder, dimensions); value.forEach((k, v) -> emitter.emit(builder.build(StringUtils.format("cgroup/memory_numa/%s/pages", k), v))); }); return true; } }