@Override protected IMonitoringRecord[] createNewMonitoringRecords(final long timestamp, final String hostname, final String vmName, final IMonitoringController monitoringCtr) { if (!monitoringCtr.isProbeActivated(SignatureFactory.createJVMGarbageCollectorSignature())) { return new IMonitoringRecord[] {}; } final List<GarbageCollectorMXBean> gcBeans = ManagementFactory.getGarbageCollectorMXBeans(); final int numberOfGCs = gcBeans.size(); final IMonitoringRecord[] records = new IMonitoringRecord[numberOfGCs]; for (int i = 0; i < numberOfGCs; i++) { final GarbageCollectorMXBean gcBean = gcBeans.get(i); records[i] = new GCRecord(timestamp, hostname, vmName, gcBean.getName(), gcBean.getCollectionCount(), gcBean.getCollectionTime()); } return records; }
@Override protected IMonitoringRecord[] createNewMonitoringRecords(final long timestamp, final String hostname, final String vmName, final IMonitoringController monitoringCtr) { if (!monitoringCtr.isProbeActivated(SignatureFactory.createJVMMemSignature())) { return new IMonitoringRecord[] {}; } final MemoryMXBean memoryBean = ManagementFactory.getMemoryMXBean(); final MemoryUsage heapMemoryUsage = memoryBean.getHeapMemoryUsage(); final MemoryUsage nonHeapMemoryUsage = memoryBean.getNonHeapMemoryUsage(); return new IMonitoringRecord[] { new MemoryRecord(timestamp, hostname, vmName, heapMemoryUsage.getMax(), heapMemoryUsage.getUsed(), heapMemoryUsage.getCommitted(), heapMemoryUsage.getInit(), nonHeapMemoryUsage.getMax(), nonHeapMemoryUsage.getUsed(), nonHeapMemoryUsage.getCommitted(), nonHeapMemoryUsage.getInit(), memoryBean.getObjectPendingFinalizationCount()), }; } }
@Override protected IMonitoringRecord[] createNewMonitoringRecords(final long timestamp, final String hostname, final String vmName, final IMonitoringController monitoringCtr) { if (!monitoringCtr.isProbeActivated(SignatureFactory.createJVMThreadsSignature())) { return new IMonitoringRecord[] {}; } final ThreadMXBean threadBean = ManagementFactory.getThreadMXBean(); return new IMonitoringRecord[] { new ThreadsStatusRecord(timestamp, hostname, vmName, threadBean.getThreadCount(), threadBean.getDaemonThreadCount(), threadBean.getPeakThreadCount(), threadBean.getTotalStartedThreadCount()), }; }
/** * Test if activation and deactivation work for sample probes. */ @Test public void testSpecialProbes() { final Configuration configuration = ConfigurationFactory.createSingletonConfiguration(); configuration.setProperty(ConfigurationKeys.WRITER_CLASSNAME, DumpWriter.class.getName()); configuration.setProperty(ConfigurationKeys.ADAPTIVE_MONITORING_ENABLED, "true"); final IMonitoringController ctrl = MonitoringController.createInstance(configuration); final String memSwapSignature = SignatureFactory.createMemSwapSignature(); // %MEM_SWAP final String cpuSignature = SignatureFactory.createCPUSignature(); // %CPU Assert.assertTrue(ctrl.isProbeActivated(memSwapSignature)); // default is true ctrl.deactivateProbe(memSwapSignature); // this entry deactivates the MemSwapProbe Assert.assertFalse(ctrl.isProbeActivated(memSwapSignature)); Assert.assertTrue(ctrl.isProbeActivated(cpuSignature)); // default is true ctrl.deactivateProbe(cpuSignature); // this entry deactivates the CpuProbe Assert.assertFalse(ctrl.isProbeActivated(cpuSignature)); // Independent of 'cpuSignature' all specific signatures are active by default. Assert.assertTrue(ctrl.isProbeActivated(SignatureFactory.createCPUSignature(0))); // %CPU::0 ctrl.deactivateProbe(SignatureFactory.createCPUSignature(0)); Assert.assertFalse(ctrl.isProbeActivated(SignatureFactory.createCPUSignature(0))); Assert.assertTrue(ctrl.isProbeActivated(SignatureFactory.createCPUSignature(1))); // %CPU::1 ctrl.deactivateProbe("%CPU::.*"); // regular expressions also allowed, this one deactivates all probes Assert.assertFalse(ctrl.isProbeActivated(SignatureFactory.createCPUSignature(0))); Assert.assertFalse(ctrl.isProbeActivated(SignatureFactory.createCPUSignature(1))); Assert.assertFalse(ctrl.isMonitoringTerminated()); ctrl.terminateMonitoring(); }
/** * {@inheritDoc} */ @Override public void sample(final IMonitoringController monitoringController) throws SigarException { if (!monitoringController.isMonitoringEnabled()) { return; } if (!monitoringController.isProbeActivated(SignatureFactory.createCPUSignature())) { return; } final CpuPerc[] cpus = this.sigar.getCpuPercList(); final ITimeSource timesource = monitoringController.getTimeSource(); for (int i = 0; i < cpus.length; i++) { if (monitoringController.isProbeActivated(SignatureFactory.createCPUSignature(i))) { final CpuPerc curCPU = cpus[i]; final double combinedUtilization = curCPU.getCombined(); final ResourceUtilizationRecord r = new ResourceUtilizationRecord(timesource.getTime(), monitoringController.getHostname(), CPU_RESOURCE_NAME_PREFIX + i, combinedUtilization); monitoringController.newMonitoringRecord(r); // CPUsCombinedPercSampler.log.info("Sigar utilization: " + combinedUtilization + "; " + " Record: " + r); } } } }
@Test public void testDeactivationAndReactivation() throws InterruptedException { final long period = 1500; // 1500 ms final long offset = 300; // i.e., 1st event after 300 ms final ISigarSamplerFactory sigarFactory = SigarSamplerFactory.INSTANCE; final MemSwapUsageSampler sampler = sigarFactory.createSensorMemSwapUsage(); this.monitoringController.schedulePeriodicSampler(sampler, offset, period, TimeUnit.MILLISECONDS); Thread.sleep(3600); // sleep 3.6 seconds // Expecting sampling trigger events at milliseconds 300, 1800, 3300 final int numEventsBeforeDisabled = this.recordListFilledByListWriter.size(); final String pattern = SignatureFactory.createMemSwapSignature(); this.monitoringController.deactivateProbe(pattern); Thread.sleep(2000); // sleep 2 seconds while being disabled // There should be no new trigger events final int numEventsWhileDisabled = this.recordListFilledByListWriter.size() - numEventsBeforeDisabled; this.monitoringController.activateProbe(pattern); Thread.sleep(2000); // sleep 2 seconds while being re-enabled // There should be at least one new trigger event final int numEventsAfterReEnabled = this.recordListFilledByListWriter.size() - numEventsBeforeDisabled; final boolean isInstanceOf = this.recordListFilledByListWriter.get(0) instanceof MemSwapUsageRecord; Assert.assertTrue("Unexpected instance of IMonitoringRecord", isInstanceOf); Assert.assertEquals("Unexpected number of triggering events before disabling", 3, numEventsBeforeDisabled); Assert.assertEquals("Unexpected number of triggering events while disabled", 0, numEventsWhileDisabled); Assert.assertTrue("Unexpected at least one triggering events after being re-enabled. Found " + numEventsAfterReEnabled, numEventsAfterReEnabled > 0); // NOCS (MagicNumberCheck) this.monitoringController.terminateMonitoring(); }
@Override protected IMonitoringRecord[] createNewMonitoringRecords(final long timestamp, final String hostname, final String vmName, final IMonitoringController monitoringCtr) { if (!monitoringCtr.isProbeActivated(SignatureFactory.createJVMClassLoadSignature())) { return new IMonitoringRecord[] {}; } final ClassLoadingMXBean classLoadingBean = ManagementFactory.getClassLoadingMXBean(); return new IMonitoringRecord[] { new ClassLoadingRecord(timestamp, hostname, vmName, classLoadingBean.getTotalLoadedClassCount(), classLoadingBean.getLoadedClassCount(), classLoadingBean.getUnloadedClassCount()), }; }
@Override protected IMonitoringRecord[] createNewMonitoringRecords(final long timestamp, final String hostname, final String vmName, final IMonitoringController monitoringCtr) { if (!monitoringCtr.isProbeActivated(SignatureFactory.createJVMCompilationSignature())) { return new IMonitoringRecord[] {}; } final CompilationMXBean compilationBean = ManagementFactory.getCompilationMXBean(); return new IMonitoringRecord[] { new CompilationRecord(timestamp, hostname, vmName, compilationBean.getName(), compilationBean.getTotalCompilationTime()), }; } }
@Override protected IMonitoringRecord[] createNewMonitoringRecords(final long timestamp, final String hostname, final String vmName, final IMonitoringController monitoringCtr) { if (!monitoringCtr.isProbeActivated(SignatureFactory.createJVMUpTimeSignature())) { return new IMonitoringRecord[] {}; } final RuntimeMXBean runtimeBean = ManagementFactory.getRuntimeMXBean(); return new IMonitoringRecord[] { new UptimeRecord(timestamp, hostname, vmName, runtimeBean.getUptime()), }; } }
/** * {@inheritDoc} */ @Override public void sample(final IMonitoringController monitoringController) throws SigarException { if (!monitoringController.isMonitoringEnabled()) { return; } if (!monitoringController.isProbeActivated(SignatureFactory.createLoadAverageSignature())) { return; } final double[] loadAverage = this.sigar.getLoadAverage(); if (loadAverage.length != 3) { return; } final ITimeSource timesource = monitoringController.getTimeSource(); final LoadAverageRecord r = new LoadAverageRecord(timesource.getTime(), monitoringController.getHostname(), loadAverage[0], loadAverage[1], loadAverage[2]); monitoringController.newMonitoringRecord(r); } }
return; if (!monitoringController.isProbeActivated(SignatureFactory.createDiskUsageSignature())) { return;
/** * {@inheritDoc} */ @Override public void sample(final IMonitoringController monitoringController) throws SigarException { if (!monitoringController.isMonitoringEnabled()) { return; } if (!monitoringController.isProbeActivated(SignatureFactory.createCPUSignature())) { return; } final CpuPerc[] cpus = this.sigar.getCpuPercList(); final ITimeSource timesource = monitoringController.getTimeSource(); for (int i = 0; i < cpus.length; i++) { if (monitoringController.isProbeActivated(SignatureFactory.createCPUSignature(i))) { final CpuPerc curCPU = cpus[i]; final double combinedUtilization = curCPU.getCombined(); final ResourceUtilizationRecord r = new ResourceUtilizationRecord(timesource.getTime(), monitoringController.getHostname(), CPU_RESOURCE_NAME_PREFIX + i, combinedUtilization); monitoringController.newMonitoringRecord(r); // CPUsCombinedPercSampler.log.info("Sigar utilization: " + combinedUtilization + "; " + " Record: " + r); } } } }
/** * {@inheritDoc} */ @Override public void sample(final IMonitoringController monitoringCtr) throws SigarException { if (!monitoringCtr.isMonitoringEnabled()) { return; } if (!monitoringCtr.isProbeActivated(SignatureFactory.createMemSwapSignature())) { return; } final Mem mem = this.sigar.getMem(); final Swap swap = this.sigar.getSwap(); final MemSwapUsageRecord r = new MemSwapUsageRecord( monitoringCtr.getTimeSource().getTime(), monitoringCtr.getHostname(), mem.getTotal(), mem.getActualUsed(), mem.getActualFree(), swap.getTotal(), swap.getUsed(), swap.getFree()); monitoringCtr.newMonitoringRecord(r); } }
@Override protected IMonitoringRecord[] createNewMonitoringRecords(final long timestamp, final String hostname, final String vmName, final IMonitoringController monitoringCtr) { if (!monitoringCtr.isProbeActivated(SignatureFactory.createJVMClassLoadSignature())) { return new IMonitoringRecord[] {}; } final ClassLoadingMXBean classLoadingBean = ManagementFactory.getClassLoadingMXBean(); return new IMonitoringRecord[] { new ClassLoadingRecord(timestamp, hostname, vmName, classLoadingBean.getTotalLoadedClassCount(), classLoadingBean.getLoadedClassCount(), classLoadingBean.getUnloadedClassCount()), }; }
@Override protected IMonitoringRecord[] createNewMonitoringRecords(final long timestamp, final String hostname, final String vmName, final IMonitoringController monitoringCtr) { if (!monitoringCtr.isProbeActivated(SignatureFactory.createJVMCompilationSignature())) { return new IMonitoringRecord[] {}; } final CompilationMXBean compilationBean = ManagementFactory.getCompilationMXBean(); return new IMonitoringRecord[] { new CompilationRecord(timestamp, hostname, vmName, compilationBean.getName(), compilationBean.getTotalCompilationTime()), }; } }
@Override protected IMonitoringRecord[] createNewMonitoringRecords(final long timestamp, final String hostname, final String vmName, final IMonitoringController monitoringCtr) { if (!monitoringCtr.isProbeActivated(SignatureFactory.createJVMUpTimeSignature())) { return new IMonitoringRecord[] {}; } final RuntimeMXBean runtimeBean = ManagementFactory.getRuntimeMXBean(); return new IMonitoringRecord[] { new UptimeRecord(timestamp, hostname, vmName, runtimeBean.getUptime()), }; } }
/** * {@inheritDoc} */ @Override public void sample(final IMonitoringController monitoringController) throws SigarException { if (!monitoringController.isMonitoringEnabled()) { return; } if (!monitoringController.isProbeActivated(SignatureFactory.createLoadAverageSignature())) { return; } final double[] loadAverage = this.sigar.getLoadAverage(); if (loadAverage.length != 3) { return; } final ITimeSource timesource = monitoringController.getTimeSource(); final LoadAverageRecord r = new LoadAverageRecord(timesource.getTime(), monitoringController.getHostname(), loadAverage[0], loadAverage[1], loadAverage[2]); monitoringController.newMonitoringRecord(r); } }
return; if (!monitoringController.isProbeActivated(SignatureFactory.createDiskUsageSignature())) { return;
/** * {@inheritDoc} */ @Override public void sample(final IMonitoringController monitoringController) throws SigarException { if (!monitoringController.isMonitoringEnabled()) { return; } if (!monitoringController.isProbeActivated(SignatureFactory.createCPUSignature())) { return; } final CpuPerc[] cpus = this.sigar.getCpuPercList(); final ITimeSource timesource = monitoringController.getTimeSource(); for (int i = 0; i < cpus.length; i++) { if (monitoringController.isProbeActivated(SignatureFactory.createCPUSignature(i))) { final CpuPerc curCPU = cpus[i]; // final double combinedUtilization = curCPU.getCombined(); final CPUUtilizationRecord r = new CPUUtilizationRecord(timesource.getTime(), monitoringController.getHostname(), Integer.toString(i), curCPU.getUser(), curCPU.getSys(), curCPU.getWait(), curCPU.getNice(), curCPU.getIrq(), curCPU.getCombined(), curCPU.getIdle()); monitoringController.newMonitoringRecord(r); // CPUsDetailedPercSampler.log.info("Sigar utilization: " + combinedUtilization + "; " + " Record: " + r); } } } }
/** * {@inheritDoc} */ @Override public void sample(final IMonitoringController monitoringCtr) throws SigarException { if (!monitoringCtr.isMonitoringEnabled()) { return; } if (!monitoringCtr.isProbeActivated(SignatureFactory.createMemSwapSignature())) { return; } final Mem mem = this.sigar.getMem(); final Swap swap = this.sigar.getSwap(); final MemSwapUsageRecord r = new MemSwapUsageRecord( monitoringCtr.getTimeSource().getTime(), monitoringCtr.getHostname(), mem.getTotal(), mem.getActualUsed(), mem.getActualFree(), swap.getTotal(), swap.getUsed(), swap.getFree()); monitoringCtr.newMonitoringRecord(r); } }