/** * Create a set of MBeans for a {@link com.netflix.servo.monitor.Monitor}. This method will * recursively select all of the sub-monitors if a composite type is used. * * @param domain passed in to the object name created to identify the beans * @param monitor monitor to expose to jmx * @param mapper the mapper which maps the Monitor to ObjectName * @return flattened list of simple monitor mbeans */ public static List<MonitorMBean> createMBeans(String domain, Monitor<?> monitor, ObjectNameMapper mapper) { List<MonitorMBean> mbeans = new ArrayList<>(); createMBeans(mbeans, domain, monitor, mapper); return mbeans; }
@Override public boolean isRegistered(Monitor<?> monitor) { try { List<MonitorMBean> beans = MonitorMBean.createMBeans(name, monitor, mapper); for (MonitorMBean bean : beans) { if (mBeanServer.isRegistered(bean.getObjectName())) { return true; } } } catch (Exception e) { return false; } return false; }
private static void createMBeans(List<MonitorMBean> mbeans, String domain, Monitor<?> monitor, ObjectNameMapper mapper) { if (monitor instanceof CompositeMonitor<?>) { for (Monitor<?> m : ((CompositeMonitor<?>) monitor).getMonitors()) { createMBeans(mbeans, domain, m, mapper); } } else { mbeans.add(new MonitorMBean(domain, monitor, mapper)); } }
/** * Register a new monitor in the registry. */ @Override public void register(Monitor<?> monitor) { try { List<MonitorMBean> beans = MonitorMBean.createMBeans(name, monitor, mapper); for (MonitorMBean bean : beans) { register(bean.getObjectName(), bean); } monitors.put(monitor.getConfig(), monitor); updatePending.set(true); } catch (Exception e) { LOG.warn("Unable to register Monitor:" + monitor.getConfig(), e); } }
/** * Unregister a Monitor from the registry. */ @Override public void unregister(Monitor<?> monitor) { try { List<MonitorMBean> beans = MonitorMBean.createMBeans(name, monitor, mapper); for (MonitorMBean bean : beans) { try { mBeanServer.unregisterMBean(bean.getObjectName()); locks.remove(bean.getObjectName()); } catch (InstanceNotFoundException ignored) { // ignore errors attempting to unregister a non-registered monitor // a common error is to unregister twice } } monitors.remove(monitor.getConfig()); updatePending.set(true); } catch (Exception e) { LOG.warn("Unable to un-register Monitor:" + monitor.getConfig(), e); } }
/** * Create a set of MBeans for a {@link com.netflix.servo.monitor.Monitor}. This method will * recursively select all of the sub-monitors if a composite type is used. * * @param domain passed in to the object name created to identify the beans * @param monitor monitor to expose to jmx * @param mapper the mapper which maps the Monitor to ObjectName * @return flattened list of simple monitor mbeans */ public static List<MonitorMBean> createMBeans(String domain, Monitor<?> monitor, ObjectNameMapper mapper) { List<MonitorMBean> mbeans = new ArrayList<>(); createMBeans(mbeans, domain, monitor, mapper); return mbeans; }
@Override public boolean isRegistered(Monitor<?> monitor) { try { List<MonitorMBean> beans = MonitorMBean.createMBeans(name, monitor, mapper); for (MonitorMBean bean : beans) { if (mBeanServer.isRegistered(bean.getObjectName())) { return true; } } } catch (Exception e) { return false; } return false; }
private static void createMBeans(List<MonitorMBean> mbeans, String domain, Monitor<?> monitor, ObjectNameMapper mapper) { if (monitor instanceof CompositeMonitor<?>) { for (Monitor<?> m : ((CompositeMonitor<?>) monitor).getMonitors()) { createMBeans(mbeans, domain, m, mapper); } } else { mbeans.add(new MonitorMBean(domain, monitor, mapper)); } }
/** * Unregister a Monitor from the registry. */ @Override public void unregister(Monitor<?> monitor) { try { List<MonitorMBean> beans = MonitorMBean.createMBeans(name, monitor, mapper); for (MonitorMBean bean : beans) { try { mBeanServer.unregisterMBean(bean.getObjectName()); locks.remove(bean.getObjectName()); } catch (InstanceNotFoundException ignored) { // ignore errors attempting to unregister a non-registered monitor // a common error is to unregister twice } } monitors.remove(monitor.getConfig()); updatePending.set(true); } catch (Exception e) { LOG.warn("Unable to un-register Monitor:" + monitor.getConfig(), e); } }
/** * Register a new monitor in the registry. */ @Override public void register(Monitor<?> monitor) { try { List<MonitorMBean> beans = MonitorMBean.createMBeans(name, monitor, mapper); for (MonitorMBean bean : beans) { register(bean.getObjectName(), bean); } monitors.put(monitor.getConfig(), monitor); updatePending.set(true); } catch (Exception e) { LOG.warn("Unable to register Monitor:" + monitor.getConfig(), e); } }