@Test public void testPrefixFilter() throws Exception { Pattern pattern = Pattern.compile("^a\\.b\\.c.*"); MetricFilter filter = new RegexMetricFilter("c", pattern, false, false); MetricPoller poller = newPoller(); List<Metric> metrics = poller.poll(filter); assertEquals(metrics.size(), 3); assertEquals(metrics.get(0), mkList().get(1)); }
@Test public void testPrefixFilterMatchIfTagMissing() throws Exception { Pattern pattern = Pattern.compile("^a\\.b\\.c.*"); MetricFilter filter = new RegexMetricFilter("c", pattern, true, false); MetricPoller poller = newPoller(); List<Metric> metrics = poller.poll(filter); assertEquals(metrics.size(), 4); assertEquals(metrics.get(0), mkList().get(0)); }
@Test public void testPrefixFilterInvert() throws Exception { Pattern pattern = Pattern.compile("^a\\.b\\.c.*"); MetricFilter filter = new RegexMetricFilter("c", pattern, true, true); MetricPoller poller = newPoller(); List<Metric> metrics = poller.poll(filter); assertEquals(metrics.size(), 1); assertEquals(metrics.get(0), mkList().get(4)); }
@Test public void testPrefixFilterName() throws Exception { Pattern pattern = Pattern.compile("m[13]"); MetricFilter filter = new RegexMetricFilter(null, pattern, false, false); MetricPoller poller = newPoller(); List<Metric> metrics = poller.poll(filter); assertEquals(metrics.size(), 2); assertEquals(metrics.get(0), mkList().get(0)); assertEquals(metrics.get(1), mkList().get(2)); } }
public static Metric getOSMetric(String name) throws Exception { MetricPoller poller = new JmxMetricPoller(new LocalJmxConnector(), new ObjectName("java.lang:type=OperatingSystem"), MATCH_NONE); RegexMetricFilter filter = new RegexMetricFilter(null, Pattern.compile(name), false, false); List<Metric> metrics = poller.poll(filter); assertEquals(metrics.size(), 1); return metrics.get(0); } }
/** * Creates customized {@link PollRunnable} for {@link JmxMetricPoller}, which is capable of polling for JVM values. * * @param observers the list of observers that will react on the polled values, e.g. graphite * @param jmxMetricFilters a list of regex of type {@link ObjectName} filters to be used in {@link RegexMetricFilter} * , * in order to restrict the set of JVM metrics that are polled * @return customized {@link PollRunnable} for polling JVM values */ public PollRunnable createJvmMetricsTask(final List<MetricObserver> observers, final List<ObjectName> jmxMetricFilters) { // Create prefix filter on the metric name, default to match none if // no match is found so that by default metrics will be GAUGEs final MetricFilter counterFilter = new PrefixMetricFilter(null, BasicMetricFilter.MATCH_NONE, new TreeMap<String, MetricFilter>()); // Create a new poller for the local JMX server that queries Memory // metrics from the java.lang domain // poller = new JmxMetricPoller(new LocalJmxConnector(), new ObjectName(jmxMetricFilter), counterFilter); final MetricPoller poller = new JmxMetricPoller(new LocalJmxConnector(), jmxMetricFilters == null ? Collections.<ObjectName>emptyList() : jmxMetricFilters, counterFilter); // Filter to restrict the set of metrics returned final MetricFilter filter = new RegexMetricFilter(null, Pattern.compile(".*Supported$|.*Enabled$|^Valid$|^Verbose$"), false, true); // Schedule metrics to be collected in the background every 10 // seconds return new PollRunnable(poller, filter, observers != null ? observers : Collections.<MetricObserver>emptyList()); }