/** * Helper function to easily create a composite for all monitor fields and * annotated attributes of a given object. * * @param id a unique id associated with this particular instance of the * object. If multiple objects of the same class are registered * they will have the same config and conflict unless the id * values are distinct. * @param obj object to search for monitors on. All fields of type * {@link Monitor} and fields/methods with a * {@link com.netflix.servo.annotations.Monitor} annotation * will be extracted and returned using * {@link CompositeMonitor#getMonitors()}. * @return composite monitor based on the fields of the class */ public static CompositeMonitor<?> newObjectMonitor(String id, Object obj) { final TagList tags = getMonitorTags(obj); List<Monitor<?>> monitors = new ArrayList<>(); addMonitors(monitors, id, tags, obj); final Class<?> c = obj.getClass(); final String objectId = (id == null) ? DEFAULT_ID : id; return new BasicCompositeMonitor(newObjectConfig(c, objectId, tags), monitors); }
/** * {@inheritDoc} */ @Override public boolean equals(Object obj) { if (obj == null || !(obj instanceof BasicCompositeMonitor)) { return false; } BasicCompositeMonitor m = (BasicCompositeMonitor) obj; return config.equals(m.getConfig()) && monitors.equals(m.getMonitors()); }
/** * A basic composite has an immutable list, if it is empty then will never provide any * useful monitors. This can happen if a monitor type is used with Monitors.registerObject. */ private static boolean isEmptyComposite(Monitor<?> monitor) { return (monitor instanceof BasicCompositeMonitor) && ((BasicCompositeMonitor) monitor).getMonitors().isEmpty(); }
/** * A basic composite has an immutable list, if it is empty then will never provide any * useful monitors. This can happen if a monitor type is used with Monitors.registerObject. */ private static boolean isEmptyComposite(Monitor<?> monitor) { return (monitor instanceof BasicCompositeMonitor) && ((BasicCompositeMonitor) monitor).getMonitors().isEmpty(); }
/** * Helper function to easily create a composite for all monitor fields and * annotated attributes of a given object. * * @param id a unique id associated with this particular instance of the * object. If multiple objects of the same class are registered * they will have the same config and conflict unless the id * values are distinct. * @param obj object to search for monitors on. All fields of type * {@link Monitor} and fields/methods with a * {@link com.netflix.servo.annotations.Monitor} annotation * will be extracted and returned using * {@link CompositeMonitor#getMonitors()}. * @return composite monitor based on the fields of the class */ public static CompositeMonitor<?> newObjectMonitor(String id, Object obj) { final TagList tags = getMonitorTags(obj); List<Monitor<?>> monitors = new ArrayList<>(); addMonitors(monitors, id, tags, obj); final Class<?> c = obj.getClass(); final String objectId = (id == null) ? DEFAULT_ID : id; return new BasicCompositeMonitor(newObjectConfig(c, objectId, tags), monitors); }
/** * {@inheritDoc} */ @Override public boolean equals(Object obj) { if (obj == null || !(obj instanceof BasicCompositeMonitor)) { return false; } BasicCompositeMonitor m = (BasicCompositeMonitor) obj; return config.equals(m.getConfig()) && monitors.equals(m.getMonitors()); }
/** * Get the initial metrics and register with servo. */ public void initMetricsPublishing() { /* list of monitors */ List<Monitor<?>> monitors = getMetricsMonitors(); MonitorConfig commandMetricsConfig = MonitorConfig.builder("metrics").build(); BasicCompositeMonitor commandMetricsMonitor = new BasicCompositeMonitor(commandMetricsConfig, monitors); DefaultMonitorRegistry.getInstance().register(commandMetricsMonitor); }
@Override public void initialize() { /* list of monitors */ List<Monitor<?>> monitors = getServoMonitors(); // publish metrics together under a single composite (it seems this name is ignored) MonitorConfig commandMetricsConfig = MonitorConfig.builder("HystrixThreadPool_" + key.name()).build(); BasicCompositeMonitor commandMetricsMonitor = new BasicCompositeMonitor(commandMetricsConfig, monitors); DefaultMonitorRegistry.getInstance().register(commandMetricsMonitor); RollingThreadPoolEventCounterStream.getInstance(key, properties).startCachingStreamValuesIfUnstarted(); CumulativeThreadPoolEventCounterStream.getInstance(key, properties).startCachingStreamValuesIfUnstarted(); RollingThreadPoolMaxConcurrencyStream.getInstance(key, properties).startCachingStreamValuesIfUnstarted(); }
@Override public void initialize() { /* list of monitors */ List<Monitor<?>> monitors = getServoMonitors(); // publish metrics together under a single composite (it seems this name is ignored) MonitorConfig commandMetricsConfig = MonitorConfig.builder("HystrixCollapser_" + key.name()).build(); BasicCompositeMonitor commandMetricsMonitor = new BasicCompositeMonitor(commandMetricsConfig, monitors); DefaultMonitorRegistry.getInstance().register(commandMetricsMonitor); RollingCollapserBatchSizeDistributionStream.getInstance(key, properties).startCachingStreamValuesIfUnstarted(); RollingCollapserEventCounterStream.getInstance(key, properties).startCachingStreamValuesIfUnstarted(); CumulativeCollapserEventCounterStream.getInstance(key, properties).startCachingStreamValuesIfUnstarted(); }
@Override public void initialize() { /* list of monitors */ List<Monitor<?>> monitors = getServoMonitors(); // publish metrics together under a single composite (it seems this name is ignored) MonitorConfig commandMetricsConfig = MonitorConfig.builder("HystrixCommand_" + key.name()).build(); BasicCompositeMonitor commandMetricsMonitor = new BasicCompositeMonitor(commandMetricsConfig, monitors); DefaultMonitorRegistry.getInstance().register(commandMetricsMonitor); RollingCommandEventCounterStream.getInstance(key, properties).startCachingStreamValuesIfUnstarted(); CumulativeCommandEventCounterStream.getInstance(key, properties).startCachingStreamValuesIfUnstarted(); RollingCommandLatencyDistributionStream.getInstance(key, properties).startCachingStreamValuesIfUnstarted(); RollingCommandUserLatencyDistributionStream.getInstance(key, properties).startCachingStreamValuesIfUnstarted(); RollingCommandMaxConcurrencyStream.getInstance(key, properties).startCachingStreamValuesIfUnstarted(); }