blob: 64b79963670620d9730f9e3ac6037a17af0a4df6 [file] [log] [blame]
Ray Milkey26921af2014-06-30 16:27:40 -07001package net.onrc.onos.core.metrics;
2
3import com.codahale.metrics.Gauge;
4import com.codahale.metrics.MetricRegistry;
5import com.codahale.metrics.Timer;
6import com.codahale.metrics.Counter;
7import com.codahale.metrics.Meter;
8import com.codahale.metrics.Histogram;
9import org.restlet.representation.Representation;
10import org.restlet.resource.Get;
11import org.restlet.resource.ServerResource;
12
13import java.util.ArrayList;
14import java.util.List;
15import java.util.Map;
16
17/**
18 * REST APIs for Metrics objects.
19 */
20public class MetricsResource extends ServerResource {
21
22 /**
23 * REST API to get all of the system's metrics.
24 *
25 * @return a Representation object containing the metrics
26 */
27 @Get("json")
28 @SuppressWarnings("rawtypes")
29 public Representation retrieve() throws Exception {
30 final MetricRegistry registry = OnosMetrics.getMetricsRegistry();
31 final MetricsObjectResource result = new MetricsObjectResource();
32
33 final List<MetricsObjectResource.TimerObjectResource> timers =
34 new ArrayList<>();
35 final List<MetricsObjectResource.GaugeObjectResource> gauges =
36 new ArrayList<>();
37 final List<MetricsObjectResource.CounterObjectResource> counters =
38 new ArrayList<>();
39 final List<MetricsObjectResource.MeterObjectResource> meters =
40 new ArrayList<>();
41 final List<MetricsObjectResource.HistogramObjectResource> histograms =
42 new ArrayList<>();
43
44 for (final Map.Entry<String, Timer> timer :
45 registry.getTimers().entrySet()) {
46 timers.add(new MetricsObjectResource.TimerObjectResource(
47 timer.getKey(), timer.getValue()));
48 }
49 result.setTimers(timers);
50
51 for (final Map.Entry<String, Gauge> gauge :
52 registry.getGauges().entrySet()) {
53 gauges.add(new MetricsObjectResource.GaugeObjectResource(
54 gauge.getKey(), gauge.getValue()));
55 }
56 result.setGauges(gauges);
57
58 for (final Map.Entry<String, Counter> counter :
59 registry.getCounters().entrySet()) {
60 counters.add(new MetricsObjectResource.CounterObjectResource(
61 counter.getKey(), counter.getValue()));
62 }
63 result.setCounters(counters);
64
65 for (final Map.Entry<String, Meter> meter :
66 registry.getMeters().entrySet()) {
67 meters.add(new MetricsObjectResource.MeterObjectResource(
68 meter.getKey(), meter.getValue()));
69 }
70 result.setMeters(meters);
71
72 for (final Map.Entry<String, Histogram> histogram :
73 registry.getHistograms().entrySet()) {
74 histograms.add(new MetricsObjectResource.HistogramObjectResource(
75 histogram.getKey(), histogram.getValue()));
76 }
77 result.setHistograms(histograms);
78
79 return toRepresentation(result, null);
80 }
81
82}