@Override public <T> Map<String, T> getGaugeValues(String group, String gauge) { return getMetricValues(group, gauge, "Value"); }
public void validateJmxMetrics() throws Exception { CoordinatorStreamManager coordinatorStreamManager = new CoordinatorStreamManager(config, new MetricsRegistryMap()); coordinatorStreamManager.register(getClass().getSimpleName()); coordinatorStreamManager.start(); coordinatorStreamManager.bootstrap(); ChangelogStreamManager changelogStreamManager = new ChangelogStreamManager(coordinatorStreamManager); JobModelManager jobModelManager = JobModelManager.apply(coordinatorStreamManager.getConfig(), changelogStreamManager.readPartitionMapping()); validator.init(config); Map<String, String> jmxUrls = jobModelManager.jobModel().getAllContainerToHostValues(SetContainerHostMapping.JMX_TUNNELING_URL_KEY); for (Map.Entry<String, String> entry : jmxUrls.entrySet()) { String containerId = entry.getKey(); String jmxUrl = entry.getValue(); log.info("validate container " + containerId + " metrics with JMX: " + jmxUrl); JmxMetricsAccessor jmxMetrics = new JmxMetricsAccessor(jmxUrl); jmxMetrics.connect(); validator.validate(jmxMetrics); jmxMetrics.close(); log.info("validate container " + containerId + " successfully"); } validator.complete(); coordinatorStreamManager.stop(); }
@Before public void setup() throws Exception { jmxMetricsAccessor = new JmxMetricsAccessor("dummyurl"); JMXConnector jmxc = mock(JMXConnector.class); conn = mock(MBeanServerConnection.class); when(jmxc.getMBeanServerConnection()).thenReturn(conn); objectNames = new HashSet<>(); when(conn.queryNames(any(ObjectName.class), any(QueryExp.class))).thenReturn(objectNames); Field jmxcField = JmxMetricsAccessor.class.getDeclaredField("jmxc"); jmxcField.setAccessible(true); jmxcField.set(jmxMetricsAccessor, jmxc); }
@Test public void testGetGaugeValues() throws Exception { ObjectName gaugeObject = JmxUtil.getObjectName(SamzaContainerMetrics.class.getName(), "event-loop-utilization", "samza-container-1"); objectNames.add(gaugeObject); Double loopUtil = 0.8; when(conn.getAttribute(gaugeObject, "Value")).thenReturn(loopUtil); Map<String, Double> result = jmxMetricsAccessor.getGaugeValues(SamzaContainerMetrics.class.getName(), "event-loop-utilization"); assertTrue(result.size() == 1); assertTrue(result.get("samza-container-1").equals(loopUtil)); }
@Test public void testGetCounterValues() throws Exception { ObjectName counterObject = JmxUtil.getObjectName(SamzaContainerMetrics.class.getName(), "commit-calls", "samza-container-0"); objectNames.add(counterObject); Long commitCalls = 100L; when(conn.getAttribute(counterObject, "Count")).thenReturn(commitCalls); Map<String, Long> result = jmxMetricsAccessor.getCounterValues(SamzaContainerMetrics.class.getName(), "commit-calls"); assertTrue(result.size() == 1); assertTrue(result.get("samza-container-0").equals(commitCalls)); }
public void validateJmxMetrics() throws Exception { CoordinatorStreamManager coordinatorStreamManager = new CoordinatorStreamManager(config, new MetricsRegistryMap()); coordinatorStreamManager.register(getClass().getSimpleName()); coordinatorStreamManager.start(); coordinatorStreamManager.bootstrap(); ChangelogStreamManager changelogStreamManager = new ChangelogStreamManager(coordinatorStreamManager); JobModelManager jobModelManager = JobModelManager.apply(coordinatorStreamManager.getConfig(), changelogStreamManager.readPartitionMapping()); validator.init(config); Map<String, String> jmxUrls = jobModelManager.jobModel().getAllContainerToHostValues(SetContainerHostMapping.JMX_TUNNELING_URL_KEY); for (Map.Entry<String, String> entry : jmxUrls.entrySet()) { String containerId = entry.getKey(); String jmxUrl = entry.getValue(); log.info("validate container " + containerId + " metrics with JMX: " + jmxUrl); JmxMetricsAccessor jmxMetrics = new JmxMetricsAccessor(jmxUrl); jmxMetrics.connect(); validator.validate(jmxMetrics); jmxMetrics.close(); log.info("validate container " + containerId + " successfully"); } validator.complete(); coordinatorStreamManager.stop(); }
@Override public Map<String, Double> getTimerValues(String group, String timer) { return getMetricValues(group, timer, "AverageTime"); } }
@Override public <T> Map<String, T> getGaugeValues(String group, String gauge) { return getMetricValues(group, gauge, "Value"); }
@Override public Map<String, Double> getTimerValues(String group, String timer) { return getMetricValues(group, timer, "AverageTime"); } }
@Override public Map<String, Double> getTimerValues(String group, String timer) { return getMetricValues(group, timer, "AverageTime"); } }
@Override public Map<String, Double> getTimerValues(String group, String timer) { return getMetricValues(group, timer, "AverageTime"); } }
@Override public Map<String, Double> getTimerValues(String group, String timer) { return getMetricValues(group, timer, "AverageTime"); } }
@Override public Map<String, Long> getCounterValues(String group, String counter) { return getMetricValues(group, counter, "Count"); }
@Override public Map<String, Long> getCounterValues(String group, String counter) { return getMetricValues(group, counter, "Count"); }
@Override public Map<String, Long> getCounterValues(String group, String counter) { return getMetricValues(group, counter, "Count"); }
@Override public <T> Map<String, T> getGaugeValues(String group, String gauge) { return getMetricValues(group, gauge, "Value"); }
@Override public Map<String, Long> getCounterValues(String group, String counter) { return getMetricValues(group, counter, "Count"); }
@Override public <T> Map<String, T> getGaugeValues(String group, String gauge) { return getMetricValues(group, gauge, "Value"); }
@Override public Map<String, Long> getCounterValues(String group, String counter) { return getMetricValues(group, counter, "Count"); }
@Override public <T> Map<String, T> getGaugeValues(String group, String gauge) { return getMetricValues(group, gauge, "Value"); }