public static StatsTimer getStatsTimer(String appName, ServerGroup serverGroup, String metric, String reason, String status) { final String serverGroupName = (serverGroup != null ? serverGroup.getName() : ""); final String metricName = getMetricName(appName, null, metric); final String name = new StringBuilder(128).append(metricName).append(serverGroupName).append(reason).append(status).append("type=StatsTimer").toString(); final StatsTimer duration = (StatsTimer) monitorMap.get(name); if (duration != null) return duration; writeLock.lock(); try { if (monitorMap.containsKey(name)) return (StatsTimer) monitorMap.get(name); else { final StatsConfig statsConfig = new StatsConfig.Builder().withPercentiles(new double[] { 95, 99 }) .withPublishMax(true).withPublishMin(true) .withPublishMean(true).withPublishCount(true).withSampleSize(sampleSize.get()).build(); final StatsTimer _duration = new StatsTimer(getMonitorConfig(metricName, appName, null, serverGroupName, metric, reason, status), statsConfig, TimeUnit.MILLISECONDS); monitorMap.put(name, _duration); DefaultMonitorRegistry.getInstance().register(_duration); return _duration; } } finally { writeLock.unlock(); } }
public static StatsTimer getStatsTimer(String appName, String cacheName, String metric) { final String metricName = getMetricName(appName, null, metric); final String name = new StringBuilder(128).append(metricName).append((cacheName == null ? "" : "-" + cacheName + "-")).append("type=StatsTimer").toString(); final StatsTimer duration = (StatsTimer) monitorMap.get(name); if (duration != null) return duration; writeLock.lock(); try { if (monitorMap.containsKey(name)) return (StatsTimer) monitorMap.get(name); else { final StatsConfig statsConfig = new StatsConfig.Builder().withPercentiles(new double[] { 95, 99 }) .withPublishMax(true).withPublishMin(true) .withPublishMean(true).withPublishCount(true).withSampleSize(sampleSize.get()).build(); final StatsTimer _duration = new StatsTimer(getMonitorConfig(metricName, appName, cacheName, metric), statsConfig, TimeUnit.MILLISECONDS); monitorMap.put(name, _duration); DefaultMonitorRegistry.getInstance().register(_duration); return _duration; } } finally { writeLock.unlock(); } }
public static StatsTimer getStatsTimer(String appName, ServerGroup serverGroup, String metric) { final String serverGroupName = (serverGroup != null ? serverGroup.getName() : ""); final String metricName = getMetricName(appName, null, metric); final String name = new StringBuilder(128).append( metricName).append(serverGroupName).append("type=StatsTimer").toString(); final StatsTimer duration = (StatsTimer) monitorMap.get(name); if (duration != null) return duration; writeLock.lock(); try { if (monitorMap.containsKey(name)) return (StatsTimer) monitorMap.get(name); else { final StatsConfig statsConfig = new StatsConfig.Builder().withPercentiles(new double[] { 95, 99 }) .withPublishMax(true).withPublishMin(true) .withPublishMean(true).withPublishCount(true).withSampleSize(sampleSize.get()).build(); final StatsTimer _duration = new StatsTimer(getMonitorConfig(metricName, appName, null, serverGroupName, metric), statsConfig, TimeUnit.MILLISECONDS); monitorMap.put(name, _duration); DefaultMonitorRegistry.getInstance().register(_duration); return _duration; } } finally { writeLock.unlock(); } }
AcceptorExecutor(String id, int maxBufferSize, int maxBatchingSize, long maxBatchingDelay, long congestionRetryDelayMs, long networkFailureRetryMs) { this.maxBufferSize = maxBufferSize; this.maxBatchingSize = maxBatchingSize; this.maxBatchingDelay = maxBatchingDelay; this.trafficShaper = new TrafficShaper(congestionRetryDelayMs, networkFailureRetryMs); ThreadGroup threadGroup = new ThreadGroup("eurekaTaskExecutors"); this.acceptorThread = new Thread(threadGroup, new AcceptorRunner(), "TaskAcceptor-" + id); this.acceptorThread.setDaemon(true); this.acceptorThread.start(); final double[] percentiles = {50.0, 95.0, 99.0, 99.5}; final StatsConfig statsConfig = new StatsConfig.Builder() .withSampleSize(1000) .withPercentiles(percentiles) .withPublishStdDev(true) .build(); final MonitorConfig config = MonitorConfig.builder(METRIC_REPLICATION_PREFIX + "batchSize").build(); this.batchSizeMetric = new StatsTimer(config, statsConfig); try { Monitors.registerObject(id, this); } catch (Throwable e) { logger.warn("Cannot register servo monitor for this object", e); } }
TaskExecutorMetrics(String id) { final double[] percentiles = {50.0, 95.0, 99.0, 99.5}; final StatsConfig statsConfig = new StatsConfig.Builder() .withSampleSize(1000) .withPercentiles(percentiles) .withPublishStdDev(true) .build(); final MonitorConfig config = MonitorConfig.builder(METRIC_REPLICATION_PREFIX + "executionTime").build(); taskWaitingTimeForProcessing = new StatsTimer(config, statsConfig); try { Monitors.registerObject(id, this); } catch (Throwable e) { logger.warn("Cannot register servo monitor for this object", e); } }
public static Timer getStatsTimer(String name) { Timer timer = timerMap.get(name); if (timer != null) return timer; writeLock.lock(); try { if (timerMap.containsKey(name)) { return timerMap.get(name); } else { final StatsConfig statsConfig = new StatsConfig.Builder().withPercentiles(new double[] { 95, 99 }) .withPublishMax(true).withPublishMin(true).withPublishMean(true) .withPublishCount(true).withSampleSize(sampleSize.get()).build(); final MonitorConfig monitorConfig = MonitorConfig.builder(name).withTag(OWNER).build(); timer = new StatsTimer(monitorConfig, statsConfig, TimeUnit.MILLISECONDS); DefaultMonitorRegistry.getInstance().register(timer); timerMap.put(name, timer); return timer; } } finally { writeLock.unlock(); } }
@Override public StatsTimer newInstance(String name) { final double[] percentiles = {50.0, 95.0, 99.0, 99.5}; final StatsConfig statsConfig = new StatsConfig.Builder() .withSampleSize(200000) .withPercentiles(percentiles) .withPublishStdDev(true) .withComputeFrequencyMillis(1000) .build(); final MonitorConfig config = MonitorConfig.builder(name).build(); return new StatsTimer(config, statsConfig); }
@Test public void testStatsTimerRecordMillis() { StatsConfig sc = new StatsConfig.Builder() .withPercentiles(new double[] {50.0, 95.0}) .withPublishCount(true) .withPublishMax(true) .withPublishMean(true) .withSampleSize(10) .build(); StatsTimer d = new StatsTimer(CONFIG, sc); register(d); d.record(42, TimeUnit.MILLISECONDS); d.computeStats(); Id id = ID.withTag("unit", "MILLISECONDS"); assertEquals(1, registry.counter(id.withTag(Statistic.count)).count()); assertEquals(42.0, registry.counter(id.withTag(Statistic.totalTime)).actualCount(), 1e-12); assertEquals(42.0, registry.maxGauge(id.withTag(Statistic.max)).value(), 1e-12); assertEquals(42.0, registry.gauge(id.withTag("statistic", "percentile_50")).value(), 1e-12); assertEquals(42.0, registry.gauge(id.withTag("statistic", "percentile_95")).value(), 1e-12); assertEquals(42.0, registry.gauge(id.withTag("statistic", "avg")).value(), 1e-12); }
AcceptorExecutor(String id, int maxBufferSize, int maxBatchingSize, long maxBatchingDelay, long congestionRetryDelayMs, long networkFailureRetryMs) { this.maxBufferSize = maxBufferSize; this.maxBatchingSize = maxBatchingSize; this.maxBatchingDelay = maxBatchingDelay; this.trafficShaper = new TrafficShaper(congestionRetryDelayMs, networkFailureRetryMs); ThreadGroup threadGroup = new ThreadGroup("eurekaTaskExecutors"); this.acceptorThread = new Thread(threadGroup, new AcceptorRunner(), "TaskAcceptor-" + id); this.acceptorThread.setDaemon(true); this.acceptorThread.start(); final double[] percentiles = {50.0, 95.0, 99.0, 99.5}; final StatsConfig statsConfig = new StatsConfig.Builder() .withSampleSize(1000) .withPercentiles(percentiles) .withPublishStdDev(true) .build(); final MonitorConfig config = MonitorConfig.builder(METRIC_REPLICATION_PREFIX + "batchSize").build(); this.batchSizeMetric = new StatsTimer(config, statsConfig); try { Monitors.registerObject(id, this); } catch (Throwable e) { logger.warn("Cannot register servo monitor for this object", e); } }
TaskExecutorMetrics(String id) { final double[] percentiles = {50.0, 95.0, 99.0, 99.5}; final StatsConfig statsConfig = new StatsConfig.Builder() .withSampleSize(1000) .withPercentiles(percentiles) .withPublishStdDev(true) .build(); final MonitorConfig config = MonitorConfig.builder(METRIC_REPLICATION_PREFIX + "executionTime").build(); taskWaitingTimeForProcessing = new StatsTimer(config, statsConfig); try { Monitors.registerObject(id, this); } catch (Throwable e) { logger.warn("Cannot register servo monitor for this object", e); } }
public static StatsTimer newStatsTimer(String monitorName, long collectionDurationInMillis) { return new StatsTimer( MonitorConfig.builder(monitorName).build(), new StatsConfig.Builder() .withComputeFrequencyMillis(collectionDurationInMillis) .withPublishMean(true) .withPublishMin(true) .withPublishMax(true) .withPublishStdDev(true) .withPublishVariance(true) .build()); }