Java 类com.codahale.metrics.SlidingTimeWindowReservoir 实例源码
项目:riposte
文件:SignalFxEndpointMetricsHandlerTest.java
@DataProvider(value = {
"42 | DAYS",
"123 | SECONDS",
"999 | MILLISECONDS",
"3 | HOURS"
}, splitBy = "\\|")
@Test
public void RollingWindowTimerBuilder_newMetric_creates_new_timer_with_SlidingTimeWindowReservoir_with_expected_values(
long amount, TimeUnit timeUnit
) {
// given
RollingWindowTimerBuilder rwtb = new RollingWindowTimerBuilder(amount, timeUnit);
// when
Timer timer = rwtb.newMetric();
// then
Histogram histogram = (Histogram) getInternalState(timer, "histogram");
Reservoir reservoir = (Reservoir) getInternalState(histogram, "reservoir");
assertThat(reservoir).isInstanceOf(SlidingTimeWindowReservoir.class);
// The expected value here comes from logic in the SlidingTimeWindowReservoir constructor.
assertThat(getInternalState(reservoir, "window")).isEqualTo(timeUnit.toNanos(amount) * 256);
}
项目:riposte
文件:SignalFxEndpointMetricsHandlerTest.java
@DataProvider(value = {
"42 | DAYS",
"123 | SECONDS",
"999 | MILLISECONDS",
"3 | HOURS"
}, splitBy = "\\|")
@Test
public void RollingWindowHistogramBuilder_newMetric_creates_new_histogram_with_SlidingTimeWindowReservoir_with_expected_values(
long amount, TimeUnit timeUnit
) {
// given
RollingWindowHistogramBuilder rwhb = new RollingWindowHistogramBuilder(amount, timeUnit);
// when
Histogram histogram = rwhb.newMetric();
// then
Reservoir reservoir = (Reservoir) getInternalState(histogram, "reservoir");
assertThat(reservoir).isInstanceOf(SlidingTimeWindowReservoir.class);
// The expected value here comes from logic in the SlidingTimeWindowReservoir constructor.
assertThat(getInternalState(reservoir, "window")).isEqualTo(timeUnit.toNanos(amount) * 256);
}
项目:microbule
文件:SlidingTimeWindowTimingStrategyTest.java
@Test
public void testCreateTimer() throws ReflectiveOperationException {
final SlidingTimeWindowTimingStrategy strategy = new SlidingTimeWindowTimingStrategy();
final Timer timer = strategy.createTimer(new MapConfig());
SlidingTimeWindowReservoir reservoir = reservoir(timer);
assertNotNull(reservoir);
assertEquals("timeWindow", strategy.name());
}
项目:raml-module-builder
文件:StatsTracker.java
/** add a metric (time) to a specific resource - for example
* type = PostgresClient.get
* time = single operation time in nanoseconds
*/
public static void addStatElement(String type, long time){
if(!registeredStatRequesters.contains(type)){
METRICS.register(type, new Histogram(new SlidingTimeWindowReservoir(60,
TimeUnit.SECONDS)));
registeredStatRequesters.add(type);
}
METRICS.histogram(type).update(time/1000000);
}
项目:carbon-metrics
文件:MetricManager.java
/**
* Get reservoir implementation based on the reservoir type
*
* @return The {@link Reservoir} implementation
*/
private Reservoir getReservoir() {
// The Reservoir implementation is selected using a switch statement.
// The ReservoirType enum is a part of YAML configuration
// and foreign imports are not supported by Carbon Configuration Maven Plugin.
// Therefore, the Reservoir class cannot be imported and the Reservoir
// creation logic cannot be written inside ReservoirType enum.
switch (reservoirType) {
case EXPONENTIALLY_DECAYING:
return new ExponentiallyDecayingReservoir();
case UNIFORM:
return new UniformReservoir(reservoirParametersConfig.getSize());
case SLIDING_WINDOW:
return new SlidingWindowReservoir(reservoirParametersConfig.getSize());
case SLIDING_TIME_WINDOW:
return new SlidingTimeWindowReservoir(reservoirParametersConfig.getWindow(),
reservoirParametersConfig.getWindowUnit());
case HDR_HISTOGRAM:
Recorder recorder = new Recorder(reservoirParametersConfig.getNumberOfSignificantValueDigits());
if (reservoirParametersConfig.isResetOnSnapshot()) {
return new HdrHistogramResetOnSnapshotReservoir(recorder);
} else {
return new HdrHistogramReservoir(recorder);
}
default:
throw new RuntimeException("Invalid Reservoir Type");
}
}
项目:datacollector
文件:MetricsConfigurator.java
public static Timer createTimer(MetricRegistry metrics, String name, final String pipelineName, final String pipelineRev) {
return create(
metrics,
new Timer(new SlidingTimeWindowReservoir(60, TimeUnit.SECONDS)),
metricName(name, TIMER_SUFFIX),
pipelineName,
pipelineRev
);
}
项目:floe2
文件:ReducerStateBackupComponent.java
/**
* Constructor.
* @param metricRegistry Metrics registry used to log various metrics.
* @param flakeId Flake's id to which this component belongs.
* @param componentName Unique name of the component.
* @param ctx Shared zmq context.
* @param fieldName The fieldName used by the reducer for grouping.
*/
public ReducerStateBackupComponent(final MetricRegistry metricRegistry,
final String flakeId,
final String componentName,
final ZMQ.Context ctx,
final String fieldName) {
super(metricRegistry, flakeId, componentName, ctx);
this.messageBackup = new HashMap<>();
this.tupleSerializer = SerializerFactory.getSerializer();
this.keyFieldName = fieldName;
this.stateBackup = new HashMap<>();
this.recoveringFlakes = new HashMap<>();
Gauge<Integer> lenMonitor = metricRegistry.register("BACkUPLEN",
new Gauge<Integer>() {
@Override
public Integer getValue() {
Integer sum = 0;
for (String key : messageBackup.keySet()) {
sum += messageBackup.get(key).size();
}
return sum;
}
});
Histogram qhist
= getMetricRegistry() .register(
MetricRegistry.name(QueueLenMonitor.class, "bkp.len.histo"),
new Histogram(new SlidingTimeWindowReservoir(2,
TimeUnit.SECONDS)));
BackupLenMonitor mon = new BackupLenMonitor(lenMonitor, qhist);
mon.start();
//metricRegistry.meter(MetricRegistry.name
// (ReducerStateBackupComponent.class,
// "msg-q-len"));
}
项目:vertx-dropwizard-metrics
文件:MetricsTest.java
@Test
public void testJsonMetricsTypes() {
assertMetricType("counter", new Counter());
assertMetricType("histogram", new Histogram(new SlidingTimeWindowReservoir(10, TimeUnit.SECONDS)));
assertMetricType("gauge", (Gauge<String>) () -> "whatever");
assertMetricType("meter", new Meter());
assertMetricType("timer", new Timer());
}
项目:incubator-gobblin
文件:InnerHistogram.java
InnerHistogram(MetricContext context, String name, ContextAwareHistogram contextAwareHistogram, long windowSize, TimeUnit unit) {
super(new SlidingTimeWindowReservoir(windowSize, unit));
this.name = name;
Optional<MetricContext> parentContext = context.getParent();
if (parentContext.isPresent()) {
this.parentHistogram = Optional.fromNullable(parentContext.get().contextAwareHistogram(name, windowSize, unit));
} else {
this.parentHistogram = Optional.absent();
}
this.contextAwareHistogram = new WeakReference<>(contextAwareHistogram);
}
项目:incubator-gobblin
文件:InnerTimer.java
InnerTimer(MetricContext context, String name, ContextAwareTimer contextAwareTimer, long windowSize, TimeUnit unit) {
super(new SlidingTimeWindowReservoir(windowSize, unit));
this.name = name;
Optional<MetricContext> parentContext = context.getParent();
if (parentContext.isPresent()) {
this.parentTimer = Optional.fromNullable(parentContext.get().contextAwareTimer(name, windowSize, unit));
} else {
this.parentTimer = Optional.absent();
}
this.timer = new WeakReference<>(contextAwareTimer);
}
项目:airpal
文件:LocalUsageStore.java
@Override
public void markUsage(Table table)
{
Histogram window = usageMap.get(table);
if (window == null) {
final SlidingTimeWindowReservoir reservoir = new SlidingTimeWindowReservoir(
usageTrackTime.getQuantity(),
usageTrackTime.getUnit());
window = new Histogram(reservoir);
usageMap.put(table, window);
}
window.update(1);
}
项目:cerberus-management-service
文件:MetricsConfigurationHelper.java
public CodahaleMetricsListener generateCodahaleMetricsListenerWithSignalFxSupport(
SignalFxReporterFactory signalFxReporterFactory,
CodahaleMetricsCollector metricsCollector,
MetricDimensionConfigurator<Timer> customRequestTimerDimensionConfigurator,
ExtraRequestLogicHandler extraRequestLogicHandler
) {
MetricRegistry metricRegistry = metricsCollector.getMetricRegistry();
// Use the identity function if customRequestTimerDimensionConfigurator is null.
if (customRequestTimerDimensionConfigurator == null)
customRequestTimerDimensionConfigurator = METRIC_DIMENSION_CONFIGURATOR_IDENTITY;
// Create the SignalFxEndpointMetricsHandler with the customRequestTimerDimensionConfigurator and
// extraRequestLogicHandler specifics.
EndpointMetricsHandler endpointMetricsHandler = new SignalFxEndpointMetricsHandler(
signalFxReporterFactory.getReporter(metricRegistry).getMetricMetadata(),
metricRegistry,
// Use a rolling window reservoir with the same window as the reporting frequency,
// to prevent the dashboards from producing false or misleading data.
new SignalFxEndpointMetricsHandler.RollingWindowTimerBuilder(signalFxReporterFactory.getInterval(),
signalFxReporterFactory.getTimeUnit()),
// Do the default request latency timer dimensions, chained with customRequestTimerDimensionConfigurator
// for any custom logic desired.
DEFAULT_REQUEST_LATENCY_TIMER_DIMENSION_CONFIGURATOR
.chainedWith(customRequestTimerDimensionConfigurator)
) {
@Override
public void handleRequest(RequestInfo<?> requestInfo, ResponseInfo<?> responseInfo,
HttpProcessingState httpState,
int responseHttpStatusCode, int responseHttpStatusCodeXXValue,
long requestElapsedTimeMillis) {
// Do the normal endpoint stuff.
super.handleRequest(requestInfo, responseInfo, httpState, responseHttpStatusCode,
responseHttpStatusCodeXXValue,
requestElapsedTimeMillis);
// Do any extra logic (if desired).
if (extraRequestLogicHandler != null) {
extraRequestLogicHandler.handleExtraRequestLogic(
requestInfo, responseInfo, httpState, responseHttpStatusCode, responseHttpStatusCodeXXValue,
requestElapsedTimeMillis
);
}
}
};
return CodahaleMetricsListener
.newBuilder(metricsCollector)
.withEndpointMetricsHandler(endpointMetricsHandler)
// The metric names should be basic with no prefix - SignalFx dimensions do the job normally covered
// by metric name prefixes.
.withServerStatsMetricNamingStrategy(CodahaleMetricsListener.MetricNamingStrategy.defaultNoPrefixImpl())
.withServerConfigMetricNamingStrategy(CodahaleMetricsListener.MetricNamingStrategy.defaultNoPrefixImpl())
// Histograms should use a rolling window reservoir with the same window as the reporting frequency,
// otherwise the dashboards will produce false or misleading data.
.withRequestAndResponseSizeHistogramSupplier(
() -> new Histogram(
new SlidingTimeWindowReservoir(signalFxReporterFactory.getInterval(),
signalFxReporterFactory.getTimeUnit())
)
)
.build();
}
项目:riposte
文件:SignalFxEndpointMetricsHandler.java
@Override
public Timer newMetric() {
return new Timer(new SlidingTimeWindowReservoir(amount, timeUnit));
}
项目:riposte
文件:SignalFxEndpointMetricsHandler.java
@Override
public Histogram newMetric() {
return new Histogram(new SlidingTimeWindowReservoir(amount, timeUnit));
}
项目:microbule
文件:SlidingTimeWindowTimingStrategy.java
@Override
public Timer createTimer(Config config) {
return new Timer(new SlidingTimeWindowReservoir(
config.longValue(WINDOW_PROP).orElse(DEFAULT_WINDOW),
config.enumValue(WINDOW_UNIT_PROP, TimeUnit.class).orElse(DEFAULT_WINDOW_UNIT)));
}
项目:metrics-cloudwatch-reporter
文件:TryThisOut.java
public TryThisOut() {
registry = new MetricRegistry();
gauge = new Gauge<Integer>() {
@Override
public Integer getValue() {
return gaugeValue;
}
};
registry.register("gauge", gauge);
counter = new Counter();
registry.register("counter", counter);
histogram = new Histogram(new SlidingTimeWindowReservoir(10, TimeUnit.SECONDS));
registry.register("histogram", histogram);
meter = new Meter();
registry.register("meter", meter);
timer = new Timer();
registry.register("timer", timer);
String instanceId = EC2MetadataUtils.getInstanceId();
// try out the default constructor.
AmazonCloudWatchClient client = new AmazonCloudWatchClient();
reporter = new CloudWatchReporter.Builder(registry, client)
.dimension("instanceId", instanceId)
.namespace("some-namespace")
.build();
reporter.start(5, TimeUnit.SECONDS);
executorService = Executors.newSingleThreadScheduledExecutor();
executorService.scheduleAtFixedRate(new Runnable() {
private int counterVal;
private Random random = new Random();
@Override
public void run() {
gaugeValue = counterVal++;
counter.inc();
Timer.Context context = timer.time();
meter.mark();
histogram.update((int)(random.nextGaussian() * 10));
context.stop();
}
}, 0, 1, TimeUnit.SECONDS);
}
项目:play-hysterix
文件:RollingHysterixGlobalStatistics.java
protected Reservoir createReservoir() {
return new SlidingTimeWindowReservoir(hysterixSettings.getRollingTimeWindowIntervalInMs(), TimeUnit.MILLISECONDS);
}
项目:incubator-gobblin
文件:ContextAwareHistogram.java
ContextAwareHistogram(MetricContext context, String name, long windowSize, TimeUnit unit) {
super(new SlidingTimeWindowReservoir(windowSize, unit));
this.innerHistogram = new InnerHistogram(context, name, this, windowSize, unit);
this.context = context;
}
项目:incubator-gobblin
文件:ContextAwareTimer.java
ContextAwareTimer(MetricContext context, String name, long windowSize, TimeUnit unit) {
super(new SlidingTimeWindowReservoir(windowSize, unit));
this.innerTimer = new InnerTimer(context, name, this, windowSize, unit);
this.context = context;
}
项目:atlas-deer
文件:InstrumentedQueuedThreadPool.java
private SlidingTimeWindowReservoir createReservoir() {
return new SlidingTimeWindowReservoir(samplingPeriodMinutes, TimeUnit.MINUTES);
}
项目:prometheus-client
文件:Summary.java
/**
* Create this summary with a sliding time window reservoir. This reservoir keeps the measurements made in the
* last {@code window} seconds (or other time unit).
*
* @param window the window to save
* @param windowUnit the window's time units
*/
public SummaryBuilder withSlidingTimeWindowReservoir(final int window, final TimeUnit windowUnit) {
reservoirSupplier = () -> new SlidingTimeWindowReservoir(window, windowUnit, codahaleClock);
return SummaryBuilder.this;
}