Java 类com.codahale.metrics.Meter 实例源码
项目:cruise-control
文件:AnomalyDetector.java
/**
* Package private constructor for unit test.
*/
AnomalyDetector(LinkedBlockingDeque<Anomaly> anomalies,
long anomalyDetectionIntervalMs,
KafkaCruiseControl kafkaCruiseControl,
AnomalyNotifier anomalyNotifier,
GoalViolationDetector goalViolationDetector,
BrokerFailureDetector brokerFailureDetector,
ScheduledExecutorService detectorScheduler) {
_anomalies = anomalies;
_anomalyDetectionIntervalMs = anomalyDetectionIntervalMs;
_anomalyNotifier = anomalyNotifier;
_goalViolationDetector = goalViolationDetector;
_brokerFailureDetector = brokerFailureDetector;
_kafkaCruiseControl = kafkaCruiseControl;
_detectorScheduler = detectorScheduler;
_shutdown = false;
_brokerFailureRate = new Meter();
_goalViolationRate = new Meter();
}
项目:cruise-control
文件:TrainingFetcher.java
TrainingFetcher(MetricSampler metricSampler,
Cluster cluster,
SampleStore sampleStore,
Set<TopicPartition> assignedPartitions,
long startTimeMs,
long endTimeMs,
Timer fetcherTimer,
Meter fetcherFailureRate) {
_cluster = cluster;
_sampleStore = sampleStore;
_metricSampler = metricSampler;
_startTimeMs = startTimeMs;
_endTimeMs = endTimeMs;
_assignedPartitions = assignedPartitions;
_fetcherTimer = fetcherTimer;
_fetcherFailureRate = fetcherFailureRate;
}
项目:cruise-control
文件:SamplingFetcher.java
SamplingFetcher(MetricSampler metricSampler,
Cluster cluster,
MetricSampleAggregator metricSampleAggregator,
SampleStore sampleStore,
Set<TopicPartition> assignedPartitions,
long startTimeMs,
long endTimeMs,
boolean leaderValidation,
boolean useLinearRegressionModel,
Timer fetchTimer,
Meter fetchFailureRate) {
_metricSampler = metricSampler;
_cluster = cluster;
_metricSampleAggregator = metricSampleAggregator;
_sampleStore = sampleStore;
_assignedPartitions = assignedPartitions;
_startTimeMs = startTimeMs;
_endTimeMs = endTimeMs;
_leaderValidation = leaderValidation;
_useLinearRegressionModel = useLinearRegressionModel;
_fetchTimer = fetchTimer;
_fetchFailureRate = fetchFailureRate;
}
项目:pyplyn
文件:AbstractMeteredLoadProcessorTest.java
@Test
public void testMetersRetrievedAndMarkIsDelegated() throws Exception {
// ARRANGE
SystemStatus systemStatus = mock(SystemStatus.class);
Meter meter = mock(Meter.class);
doReturn(meter).when(systemStatus).meter(anyString(), any());
AbstractMeteredLoadProcessorImpl processor = spy(new AbstractMeteredLoadProcessorImpl(0, null, 0, null));
processor.setSystemStatus(systemStatus);
// ACT
processor.succeeded();
processor.failed();
processor.authenticationFailure();
// ASSERT
verify(processor, times(3)).meterName(); // FindBugs: RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT - IGNORE
verify(systemStatus, times(3)).meter(anyString(), any());
verify(meter, times(3)).mark();
}
项目:pyplyn
文件:AbstractMeteredExtractProcessorTest.java
@Test
public void testMetersRetrievedAndMarkIsDelegated() throws Exception {
// ARRANGE
SystemStatus systemStatus = mock(SystemStatus.class);
Meter meter = mock(Meter.class);
doReturn(meter).when(systemStatus).meter(anyString(), any());
processor.setSystemStatus(systemStatus);
// ACT
processor.succeeded();
processor.failed();
processor.noData();
processor.authenticationFailure();
// ASSERT
verify(processor, times(4)).meterName(); // FindBugs: RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT - IGNORE
verify(systemStatus, times(4)).meter(anyString(), any());
verify(meter, times(4)).mark();
}
项目:metrics-feign
文件:FeignOutboundMetricsMethodHandlerTest.java
@Test(expected = FeignException.class)
public void exception() {
stubFor(post(anyUrl()).willReturn(aResponse().withStatus(400)));
MyClientWithAnnotationOnMethodLevel target = Feign.builder().invocationHandlerFactory(
new FeignOutboundMetricsDecorator(new InvocationHandlerFactory.Default(), metricRegistry))
.target(MyClientWithAnnotationOnMethodLevel.class,
String.format("http://localhost:%d", wireMockRule.port()));
try {
target.myMethod();
} finally {
assertMetrics();
Set<Map.Entry<String, Meter>> entries = metricRegistry.getMeters().entrySet();
entries.forEach(entry -> {
if (entry.getKey().endsWith(ExceptionMetered.DEFAULT_NAME_SUFFIX)) {
assertEquals(String.format("wrong number of invocations in metric %s", entry.getKey()), 1,
entry.getValue().getCount());
}
});
}
}
项目:metrics-feign
文件:FeignOutboundMetricsMethodHandlerTest.java
private void assertMetrics() {
Timer timer = metricRegistry.getTimers().values().iterator().next();
assertEquals("wrong number of invocations in metric.", 1, timer.getCount());
assertTrue("wrong value of mean in metric.", timer.getMeanRate() > 0);
assertEquals("wrong number of meter metrics.", 2, metricRegistry.getMeters().values().size());
Set<Map.Entry<String, Meter>> entries = metricRegistry.getMeters().entrySet();
entries.forEach(entry -> {
if (entry.getKey().endsWith("Metered")) {
assertEquals(String.format("wrong number of invocations in metric %s", entry.getKey()), 1,
entry.getValue().getCount());
}
});
}
项目:dropwizard-influxdb-reporter
文件:InfluxDbMeasurementReporter.java
@Override
public void report(final SortedMap<String, Gauge> gauges,
final SortedMap<String, Counter> counters,
final SortedMap<String, Histogram> histograms,
final SortedMap<String, Meter> meters,
final SortedMap<String, Timer> timers) {
final long timestamp = clock.instant().toEpochMilli();
final ImmutableList<InfluxDbMeasurement> influxDbMeasurements = ImmutableList.<InfluxDbMeasurement>builder()
.addAll(transformer.fromGauges(gauges, timestamp))
.addAll(transformer.fromCounters(counters, timestamp))
.addAll(transformer.fromHistograms(histograms, timestamp))
.addAll(transformer.fromMeters(meters, timestamp))
.addAll(transformer.fromTimers(timers, timestamp))
.build();
sender.send(influxDbMeasurements);
}
项目:dropwizard-influxdb-reporter
文件:DropwizardTransformer.java
/**
* Build an {@link InfluxDbMeasurement} from a meter.
*/
@VisibleForTesting InfluxDbMeasurement fromMeter(final String metricName, final Meter mt, final long timestamp) {
final DropwizardMeasurement measurement = parser.parse(metricName);
final Map<String, String> tags = new HashMap<>(baseTags);
tags.putAll(measurement.tags());
return new InfluxDbMeasurement.Builder(measurement.name(), timestamp)
.putTags(tags)
.putField("count", mt.getCount())
.putField("one-minute", convertRate(mt.getOneMinuteRate()))
.putField("five-minute", convertRate(mt.getFiveMinuteRate()))
.putField("fifteen-minute", convertRate(mt.getFifteenMinuteRate()))
.putField("mean-minute", convertRate(mt.getMeanRate()))
.build();
}
项目:oneops
文件:MetricsElasticsearchModule.java
@Override
public void serialize(JsonMeter jsonMeter,
JsonGenerator json,
SerializerProvider provider) throws IOException {
json.writeStartObject();
json.writeStringField("name", jsonMeter.name());
json.writeObjectField(timestampFieldname, jsonMeter.timestampAsDate());
Meter meter = jsonMeter.value();
json.writeNumberField("count", meter.getCount());
json.writeNumberField("m1_rate", meter.getOneMinuteRate() * rateFactor);
json.writeNumberField("m5_rate", meter.getFiveMinuteRate() * rateFactor);
json.writeNumberField("m15_rate", meter.getFifteenMinuteRate() * rateFactor);
json.writeNumberField("mean_rate", meter.getMeanRate() * rateFactor);
json.writeStringField("units", rateUnit);
addOneOpsMetadata(json);
json.writeEndObject();
}
项目:athena
文件:OpenFlowControlMessageAggregator.java
/**
* Generates an OpenFlow message aggregator instance.
* The instance is for aggregating a specific OpenFlow message
* type of an OpenFlow switch.
*
* @param metricsService metrics service reference object
* @param providerService control message provider service reference object
* @param deviceId device identification
*/
public OpenFlowControlMessageAggregator(MetricsService metricsService,
ControlMessageProviderService providerService,
DeviceId deviceId) {
MetricsComponent mc = metricsService.registerComponent(deviceId.toString());
OF_TYPE_SET.forEach(type -> {
MetricsFeature metricsFeature = mc.registerFeature(type.toString());
Meter rateMeter = metricsService.createMeter(mc, metricsFeature, RATE_NAME);
Meter countMeter = metricsService.createMeter(mc, metricsFeature, COUNT_NAME);
rateMeterMap.put(type, rateMeter);
countMeterMap.put(type, countMeter);
});
this.deviceId = deviceId;
this.providerService = providerService;
metricsService.notifyReporters();
}
项目:athena
文件:IntentEventsMetricsCommand.java
/**
* Prints an Event Metric.
*
* @param operationStr the string with the intent operation to print
* @param eventMetric the Event Metric to print
*/
private void printEventMetric(String operationStr,
EventMetric eventMetric) {
Gauge<Long> gauge = eventMetric.lastEventTimestampGauge();
Meter meter = eventMetric.eventRateMeter();
TimeUnit rateUnit = TimeUnit.SECONDS;
double rateFactor = rateUnit.toSeconds(1);
// Print the Gauge
print(FORMAT_GAUGE, operationStr, gauge.getValue());
// Print the Meter
print(FORMAT_METER, operationStr, meter.getCount(),
meter.getMeanRate() * rateFactor,
meter.getOneMinuteRate() * rateFactor,
meter.getFiveMinuteRate() * rateFactor,
meter.getFifteenMinuteRate() * rateFactor);
}
项目:athena
文件:TopologyEventsMetricsCommand.java
/**
* Prints an Event Metric.
*
* @param operationStr the string with the intent operation to print
* @param eventMetric the Event Metric to print
*/
private void printEventMetric(String operationStr,
EventMetric eventMetric) {
Gauge<Long> gauge = eventMetric.lastEventTimestampGauge();
Meter meter = eventMetric.eventRateMeter();
TimeUnit rateUnit = TimeUnit.SECONDS;
double rateFactor = rateUnit.toSeconds(1);
// Print the Gauge
print(FORMAT_GAUGE, operationStr, gauge.getValue());
// Print the Meter
print(FORMAT_METER, operationStr, meter.getCount(),
meter.getMeanRate() * rateFactor,
meter.getOneMinuteRate() * rateFactor,
meter.getFiveMinuteRate() * rateFactor,
meter.getFifteenMinuteRate() * rateFactor);
}
项目:athena
文件:MetricCodecTest.java
/**
* Tests encoding of a Metric object.
*/
@Test
public void testMetricEncode() {
Counter counter = new Counter();
Meter meter = new Meter();
Timer timer = new Timer();
counter.inc();
meter.mark();
timer.update(1, TimeUnit.MILLISECONDS);
ObjectNode counterJson = metricCodec.encode(counter, context);
assertThat(counterJson.get("counter"), matchesMetric(counter));
ObjectNode meterJson = metricCodec.encode(meter, context);
assertThat(meterJson.get("meter"), matchesMetric(meter));
ObjectNode timerJson = metricCodec.encode(timer, context);
assertThat(timerJson.get("timer"), matchesMetric(timer));
}
项目:emodb
文件:AstyanaxEventReaderDAO.java
private static ExecutorService defaultCleanupExecutor(String metricsGroup, LifeCycleRegistry lifeCycle, MetricRegistry metricRegistry) {
final Meter meter = metricRegistry.meter(MetricRegistry.name(metricsGroup, "AstyanaxEventReaderDAO", "discarded_slab_cleanup"));
String nameFormat = "Events Slab Reader Cleanup-" + metricsGroup.substring(metricsGroup.lastIndexOf('.') + 1) + "-%d";
ExecutorService executor = new ThreadPoolExecutor(
NUM_CLEANUP_THREADS, NUM_CLEANUP_THREADS,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(MAX_CLEANUP_QUEUE_LENGTH),
new ThreadFactoryBuilder().setNameFormat(nameFormat).build(),
new ThreadPoolExecutor.DiscardPolicy() {
@Override
public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {
meter.mark();
}
});
lifeCycle.manage(new ExecutorServiceManager(executor, Duration.seconds(5), nameFormat));
return executor;
}
项目:semantic-metrics
文件:SemanticMetricRegistry.java
private void notifyListenerOfRemovedMetric(
final MetricId name, final Metric metric, final SemanticMetricRegistryListener listener
) {
if (metric instanceof Gauge) {
listener.onGaugeRemoved(name);
} else if (metric instanceof Counter) {
listener.onCounterRemoved(name);
} else if (metric instanceof Histogram) {
listener.onHistogramRemoved(name);
} else if (metric instanceof Meter) {
listener.onMeterRemoved(name);
} else if (metric instanceof Timer) {
listener.onTimerRemoved(name);
} else if (metric instanceof DerivingMeter) {
listener.onDerivingMeterRemoved(name);
} else {
throw new IllegalArgumentException("Unknown metric type: " + metric.getClass());
}
}
项目:metrics-circonus
文件:CirconusReporterTest.java
@Test
public void reportsCounters() throws Exception {
final Counter counter = mock(Counter.class);
when(counter.getCount()).thenReturn(100L);
reporter.report(this.<Gauge>map(),
this.<Counter>map("counter", counter),
this.<Histogram>map(),
this.<Meter>map(),
this.<Timer>map());
final InOrder inOrder = inOrder(transport, request);
inOrder.verify(transport).prepare();
inOrder.verify(request).addGauge(new CirconusGauge("counter", 100L, timestamp, HOST, tags));
inOrder.verify(request).send();
verify(transport).prepare();
verify(request).send();
verifyNoMoreInteractions(transport, request);
}
项目:hawkular-dropwizard-reporter
文件:HawkularReporterITest.java
@Test
public void shouldUseFailoverMaxRequests() throws IOException, InterruptedException {
String metricName = randomName();
HawkularReporter reporter = HawkularReporter.builder(registry, defaultTenant)
.uri("http://invalid:999")
.failoverCacheMaxSize(3)
.build();
Meter meter = registry.meter(metricName);
meter.mark(1000);
Thread.sleep(100);
meter.mark(1000);
reporter.report();
// 6 requests (6 = 5 tags + 1 metric), but majored by 3
assertThat(((JdkHawkularHttpClient) reporter.getHawkularClient()).getFailoverCacheSize()).isEqualTo(3);
}
项目:fili
文件:DefaultRateLimiter.java
/**
* Creates a new RateLimitRequestToken.
*
* @param count The atomic reference that holds the amount of in-flight requests the user owns
* @param userName The user who launched the request
* @param isUIQuery Whether or not this query was generated from the UI
* @param requestLimit The limit of requests the user is allowed to launch
* @param requestMeter Meter tracking the amount of requests that have been launched
* @param rejectMeter Meter tracking the amount of requests that have been rejected
*
* @return a new RateLimitRequestToken, representing an in-flight (or rejected) request that is tracked by the
* RateLimiter
*/
protected RateLimitRequestToken createNewRateLimitRequestToken(AtomicInteger count, String userName,
boolean isUIQuery, int requestLimit, Meter requestMeter, Meter rejectMeter) {
if (!incrementAndCheckCount(globalCount, requestLimitGlobal)) {
rejectRequest(rejectMeter, true, isUIQuery, userName);
return REJECT_REQUEST_TOKEN;
}
// Bind to the user
if (!incrementAndCheckCount(count, requestLimit)) {
// Decrement the global count that had already been incremented
globalCount.decrementAndGet();
rejectRequest(rejectMeter, false, isUIQuery, userName);
return REJECT_REQUEST_TOKEN;
}
// Measure the accepted request and current open connections
requestMeter.mark();
requestGlobalCounter.inc();
// Return new request token
RateLimitCleanupOnRequestComplete callback = generateCleanupClosure(count, userName);
return new CallbackRateLimitRequestToken(true, callback);
}
项目:riposte
文件:SignalFxAwareCodahaleMetricsCollectorTest.java
@DataProvider(value = {
"null",
"0",
"1",
"2"
}, splitBy = "\\|")
@Test
public void getNamedMeter_with_iterable_dimensions_creates_dimensioned_meter_using_sfx_mechanisms(
Integer numDimensions
) {
// given
String meterName = UUID.randomUUID().toString();
List<Pair<String, String>> iterableDims = generateIterableDimensions(numDimensions);
// when
Meter result = sfxImpl.getNamedMeter(meterName, iterableDims);
// then
verifyMetricCreation(MetricBuilder.METERS, meterTaggerMock, meterName, iterableDims, meterMock, result);
}
项目:quarks
文件:MetricsBaseTest.java
private final void rateMeter(String[] data) throws Exception {
Topology t = newTopology();
TStream<String> s = t.strings(data);
s = Metrics.rateMeter(s);
waitUntilComplete(t, s, data);
if (metricRegistry != null) {
SortedMap<String, Meter> meters = metricRegistry.getMeters();
assertEquals(1, meters.size());
Collection<Meter> values = meters.values();
for (Meter v : values) {
assertEquals(data.length, v.getCount());
}
}
}
项目:mongoose-base
文件:CustomMetricRegistry.java
private void notifyListenerOfAddedMetric(
final MetricRegistryListener listener, final Metric metric, final String name
) {
if(metric instanceof Gauge) {
listener.onGaugeAdded(name, (Gauge<?>) metric);
} else if(metric instanceof Counter) {
listener.onCounterAdded(name, (Counter) metric);
} else if(metric instanceof Histogram) {
listener.onHistogramAdded(name, (Histogram) metric);
} else if(metric instanceof Meter) {
listener.onMeterAdded(name, (Meter) metric);
} else if(metric instanceof Timer) {
listener.onTimerAdded(name, (Timer) metric);
} else {
throw new IllegalArgumentException("Unsupported metric type: " + metric.getClass());
}
}
项目:mongoose-base
文件:CustomMetricRegistry.java
private void notifyListenerOfRemovedMetric(
final String name, final Metric metric, final MetricRegistryListener listener
) {
if(metric instanceof Gauge) {
listener.onGaugeRemoved(name);
} else if(metric instanceof Counter) {
listener.onCounterRemoved(name);
} else if(metric instanceof Histogram) {
listener.onHistogramRemoved(name);
} else if(metric instanceof Meter) {
listener.onMeterRemoved(name);
} else if(metric instanceof Timer) {
listener.onTimerRemoved(name);
} else {
throw new IllegalArgumentException("Unsupported metric type: " + metric.getClass());
}
}
项目:outland
文件:MeterTimer.java
default <T> T metric(Timer timer, Meter meter, Supplier<T> supplier) {
Timer.Context time = timer.time();
try {
meter.mark();
return supplier.get();
} finally {
time.stop();
}
}
项目:micrometer
文件:DropwizardFunctionCounter.java
DropwizardFunctionCounter(Id id, Clock clock,
T obj, ToDoubleFunction<T> f) {
super(id);
this.ref = new WeakReference<>(obj);
this.f = f;
this.rate = new DropwizardRate(clock);
this.dropwizardMeter = new Meter(new DropwizardClock(clock)) {
@Override
public double getFifteenMinuteRate() {
count();
return rate.getFifteenMinuteRate();
}
@Override
public double getFiveMinuteRate() {
count();
return rate.getFiveMinuteRate();
}
@Override
public double getOneMinuteRate() {
count();
return rate.getOneMinuteRate();
}
@Override
public long getCount() {
return (long) count();
}
};
}
项目:metrics-feign
文件:FeignOutboundMetricsDecorator.java
public MethodHandlerDecorator(final Method method, final MethodHandler methodHandler,
final ConcurrentMap<Method, Meter> meters,
final ConcurrentMap<Method, ExceptionMeterMetric> exceptionMeters,
final ConcurrentMap<Method, Timer> timers) {
this.method = method;
this.methodHandler = methodHandler;
this.meters = meters;
this.exceptionMeters = exceptionMeters;
this.timers = timers;
}
项目:metrics-feign
文件:FeignOutboundMetricsDecorator.java
@Override
public Object invoke(Object[] argv) throws Throwable {
try {
final Meter meter = this.meters.get(method);
if (meter != null) {
meter.mark();
}
final Timer timer = this.timers.get(method);
if (timer != null) {
this.context = timer.time();
}
return methodHandler.invoke(argv);
} catch (Exception e) {
final FeignOutboundMetricsDecorator.ExceptionMeterMetric metric =
(method != null) ? this.exceptionMeters.get(method) : null;
if (metric != null && (metric.cause.isAssignableFrom(e.getClass()) || (e.getCause() != null
&& metric.cause.isAssignableFrom(e.getCause().getClass())))) {
metric.meter.mark();
}
throw e;
} finally {
if (this.context != null) {
this.context.close();
}
}
}
项目:JInsight
文件:ApptuitReporter.java
@Override
public void report(SortedMap<String, Gauge> gauges, SortedMap<String, Counter> counters,
SortedMap<String, Histogram> histograms, SortedMap<String, Meter> meters,
SortedMap<String, Timer> timers) {
DataPointCollector collector = new DataPointCollector(System.currentTimeMillis() / 1000);
buildReportTimer.time(() -> {
debug("################");
debug(">>>>>>>> Guages <<<<<<<<<");
gauges.forEach(collector::collectGauge);
debug(">>>>>>>> Counters <<<<<<<<<");
counters.forEach(collector::collectCounter);
debug(">>>>>>>> Histograms <<<<<<<<<");
histograms.forEach(collector::collectHistogram);
debug(">>>>>>>> Meters <<<<<<<<<");
meters.forEach(collector::collectMeter);
debug(">>>>>>>> Timers <<<<<<<<<");
timers.forEach(collector::collectTimer);
debug("################");
});
sendReportTimer.time(() -> {
Collection<DataPoint> dataPoints = collector.dataPoints;
dataPointsReporter.put(dataPoints);
//dataPoints.forEach(System.out::println);
});
}
项目:dropwizard-influxdb-reporter
文件:DropwizardTransformerTest.java
@Test
public void testFromMeter() {
final Set<String> fieldKeys = ImmutableSet.of(
"count",
"one-minute",
"five-minute",
"fifteen-minute",
"mean-minute"
);
final DropwizardMeasurementParser parser = mock(DropwizardMeasurementParser.class);
final DropwizardTransformer transformer = transformerWithParser(parser, true);
when(parser.parse("some.metric.name")).thenReturn(
DropwizardMeasurement.create("Measurement", MEASUREMENT_TAGS, Optional.empty())
);
final Meter meter = new Meter();
meter.mark(50L);
meter.mark(64L);
meter.mark(80L);
final InfluxDbMeasurement measurement = transformer.fromMeter("some.metric.name", meter, 90210L);
assertEquals("should parse name from full metric key", "Measurement", measurement.name());
assertEquals("should add global and measurement tags", ALL_TAGS, measurement.tags());
assertEquals("should timestamp measurement", 90210L, measurement.timestamp());
assertEquals("should add all meter fields", fieldKeys, measurement.fields().keySet());
}
项目:logistimo-web-service
文件:MetricsUtil.java
public static Meter getMeter(Class clazz, String key) {
Meter
meter =
_metrics.getMeters() != null ? _metrics.getMeters().get(MetricRegistry.name(clazz, key))
: null;
if (meter == null) {
return _metrics.meter(MetricRegistry.name(clazz, key));
}
return meter;
}
项目:Lagerta
文件:HumanReadableCsvReporter.java
/** */
private void reportMeter(String timestamp, String name, Meter meter) {
report(timestamp,
name,
"count,mean_rate,m1_rate,m5_rate,m15_rate,rate_unit",
"%d,%f,%f,%f,%f,events/%s",
meter.getCount(),
convertRate(meter.getMeanRate()),
convertRate(meter.getOneMinuteRate()),
convertRate(meter.getFiveMinuteRate()),
convertRate(meter.getFifteenMinuteRate()),
getRateUnit());
}
项目:Lagerta
文件:AdvancedReporter.java
@Override public void report(
SortedMap<String, Gauge> gauges,
SortedMap<String, Counter> counters,
SortedMap<String, Histogram> histograms,
SortedMap<String, Meter> meters,
SortedMap<String, Timer> timers
) {
if (firstReportTime < 0) {
firstReportTime = System.currentTimeMillis();
}
if (System.currentTimeMillis() - firstReportTime < warmupDuration) {
return;
}
reportStatistics(gauges, counters, histograms, meters, timers);
}
项目:Lagerta
文件:AdvancedReporter.java
protected abstract void reportStatistics(
SortedMap<String, Gauge> gauges,
SortedMap<String, Counter> counters,
SortedMap<String, Histogram> histograms,
SortedMap<String, Meter> meters,
SortedMap<String, Timer> timers
);
项目:stdds-monitor
文件:StatusController.java
/**
* Receive a message from JMS and update the internal data structure
*
* @param msgType
* Message Type
* @param messageVersion
* the message version (may be null)
* @param traconID
* Tracon ID
* @param messageText
* Message Text
*/
@Transactional
public void receiveMessage(String msgType, String messageVersion, String traconID, String messageText) {
inputLogger.info(msgType + "," + messageVersion + "," + traconID + "," + messageText);
Meter meter = metricRegistry.meter("controller."+traconID+"."+msgType);
meter.mark();
timeOfLastMessageReceipt = System.currentTimeMillis();
gaugeService.submit("controller.lastUpdate", timeOfLastMessageReceipt);
StatusMessageParser parser = null;
// check for versions
if (messageVersion.equals(StatusMessageParserV3.VERSION_NUMBER)) {
log.debug("V3 parser: " + messageText);
parser = new StatusMessageParserV3(traconRepo, notificationRepo);
} else if (messageVersion.equals(StatusMessageParserV4.VERSION_NUMBER)) {
log.debug("V4 parser: " + messageText);
parser = new StatusMessageParserV4(traconRepo, notificationRepo);
} else {
log.error("Unknown version number: " + messageVersion + " for message: " + messageText);
}
if (parser != null) {
parser.parseMessage(msgType, traconID, messageText);
}
}
项目:dropwizard-prometheus
文件:DropwizardMetricsExporter.java
public void writeMeter(String dropwizardName, Meter meter) throws IOException {
String name = sanitizeMetricName(dropwizardName) + "_total";
writer.writeHelp(name, getHelpMessage(dropwizardName, meter));
writer.writeType(name, MetricType.COUNTER);
writer.writeSample(name, emptyMap(), meter.getCount());
writeMetered(dropwizardName, meter);
}
项目:dockerized-microservices
文件:GrpcServerInterceptor.java
/**
* Intercept all GRPC calls
* @param serverCall
* @param metadata
* @param serverCallHandler
* @param <ReqT>
* @param <RespT>
* @return
*/
@Override
public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(final ServerCall<ReqT, RespT> serverCall, Metadata metadata, ServerCallHandler<ReqT, RespT> serverCallHandler) {
Timer.Context timer = metricRegistry.timer(metricName(M_REQ_TIME, serverCall.getMethodDescriptor().getFullMethodName().replace("/", "."))).time();
Histogram histogram = metricRegistry.histogram(metricName(M_RESPONSE_SIZE, serverCall.getMethodDescriptor().getFullMethodName().replace("/", ".")));
SimpleForwardingServerCall<ReqT, RespT> nextCall = new SimpleForwardingServerCall<ReqT, RespT>(serverCall) {
@Override
public void close(Status status, Metadata trailers) {
Meter errorMeter = metricRegistry.meter(metricName(ERROR_METRIC, getMethodDescriptor().getFullMethodName().replace("/", ".")));
if (!status.isOk()) {
errorMeter.mark();
log.error("An error occured with {}", serverCall.getMethodDescriptor());
}
timer.stop();
super.close(status, trailers);
}
@Override
public void sendMessage(RespT message) {
super.sendMessage(message);
if (message instanceof MessageLite) {
histogram.update(((MessageLite) message).getSerializedSize());
log.info("Message sent size = {}", ((MessageLite) message).getSerializedSize());
}
}
};
return serverCallHandler.startCall(nextCall, metadata);
}
项目:athena
文件:MetricsResourceTest.java
/**
* Tests GetAllMetrics method.
*/
@Test
public void testGetAllMetrics() {
Counter onosCounter = new Counter();
onosCounter.inc();
Meter onosMeter = new Meter();
onosMeter.mark();
Timer onosTimer = new Timer();
onosTimer.update(1, TimeUnit.MILLISECONDS);
ImmutableMap<String, Metric> metrics =
new ImmutableMap.Builder<String, Metric>()
.put("onosCounter", onosCounter)
.put("onosMeter", onosMeter)
.put("onosTimer", onosTimer)
.build();
expect(mockMetricsService.getMetrics())
.andReturn(metrics)
.anyTimes();
replay(mockMetricsService);
WebTarget wt = target();
String response = wt.path("metrics").request().get(String.class);
assertThat(response, containsString("{\"metrics\":["));
JsonObject result = Json.parse(response).asObject();
assertThat(result, notNullValue());
JsonArray jsonMetrics = result.get("metrics").asArray();
assertThat(jsonMetrics, notNullValue());
assertThat(jsonMetrics.size(), is(3));
assertTrue(matchesMetric(metrics.get("onosCounter")).matchesSafely(jsonMetrics.get(0).asObject()));
assertTrue(matchesMetric(metrics.get("onosMeter")).matchesSafely(jsonMetrics.get(1).asObject()));
assertTrue(matchesMetric(metrics.get("onosTimer")).matchesSafely(jsonMetrics.get(2).asObject()));
}
项目:athena
文件:MetricsListCommand.java
/**
* Creates a json object for a certain metric.
*
* @param metric metric object
* @return json object
*/
private ObjectNode json(Metric metric) {
ObjectMapper mapper = new ObjectMapper();
ObjectNode objectNode = mapper.createObjectNode();
ObjectNode dataNode = mapper.createObjectNode();
if (metric instanceof Counter) {
dataNode.put(COUNTER, ((Counter) metric).getCount());
objectNode.set(COUNTER, dataNode);
} else if (metric instanceof Gauge) {
objectNode.put(VALUE, ((Gauge) metric).getValue().toString());
objectNode.set(GAUGE, dataNode);
} else if (metric instanceof Meter) {
dataNode.put(COUNTER, ((Meter) metric).getCount());
dataNode.put(MEAN_RATE, ((Meter) metric).getMeanRate());
dataNode.put(ONE_MIN_RATE, ((Meter) metric).getOneMinuteRate());
dataNode.put(FIVE_MIN_RATE, ((Meter) metric).getFiveMinuteRate());
dataNode.put(FIFT_MIN_RATE, ((Meter) metric).getFifteenMinuteRate());
objectNode.set(METER, dataNode);
} else if (metric instanceof Histogram) {
dataNode.put(COUNTER, ((Histogram) metric).getCount());
dataNode.put(MEAN, ((Histogram) metric).getSnapshot().getMean());
dataNode.put(MIN, ((Histogram) metric).getSnapshot().getMin());
dataNode.put(MAX, ((Histogram) metric).getSnapshot().getMax());
dataNode.put(STDDEV, ((Histogram) metric).getSnapshot().getStdDev());
objectNode.set(HISTOGRAM, dataNode);
} else if (metric instanceof Timer) {
dataNode.put(COUNTER, ((Timer) metric).getCount());
dataNode.put(MEAN_RATE, ((Timer) metric).getMeanRate());
dataNode.put(ONE_MIN_RATE, ((Timer) metric).getOneMinuteRate());
dataNode.put(FIVE_MIN_RATE, ((Timer) metric).getFiveMinuteRate());
dataNode.put(FIFT_MIN_RATE, ((Timer) metric).getFifteenMinuteRate());
dataNode.put(MEAN, nanoToMs(((Timer) metric).getSnapshot().getMean()));
dataNode.put(MIN, nanoToMs(((Timer) metric).getSnapshot().getMin()));
dataNode.put(MAX, nanoToMs(((Timer) metric).getSnapshot().getMax()));
dataNode.put(STDDEV, nanoToMs(((Timer) metric).getSnapshot().getStdDev()));
objectNode.set(TIMER, dataNode);
}
return objectNode;
}
项目:athena
文件:SystemMetricsAggregator.java
private Map<ControlMetricType, Meter> getMeterMap(Set<ControlMetricType> types,
MetricsComponent component,
MetricsService service) {
Map<ControlMetricType, Meter> meterMap = Maps.newHashMap();
types.forEach(type -> {
MetricsFeature metricsFeature = component.registerFeature(type.toString());
Meter meter = service.createMeter(component, metricsFeature, DEFAULT_METER_SUFFIX);
meterMap.putIfAbsent(type, meter);
});
return meterMap;
}
项目:athena
文件:IntentEventsMetricsCommand.java
/**
* Produces JSON node for an Event Metric.
*
* @param mapper the JSON object mapper to use
* @param objectNode the JSON object node to use
* @param propertyPrefix the property prefix to use
* @param eventMetric the Event Metric with the data
* @return JSON object node for the Event Metric
*/
private ObjectNode json(ObjectMapper mapper, ObjectNode objectNode,
String propertyPrefix, EventMetric eventMetric) {
String gaugeName = propertyPrefix + "Timestamp";
String meterName = propertyPrefix + "Rate";
Gauge<Long> gauge = eventMetric.lastEventTimestampGauge();
Meter meter = eventMetric.eventRateMeter();
objectNode.set(gaugeName, json(mapper, gauge));
objectNode.set(meterName, json(mapper, meter));
return objectNode;
}