1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.hadoop.hbase.regionserver;
20
21 import org.apache.commons.logging.Log;
22 import org.apache.commons.logging.LogFactory;
23 import org.apache.hadoop.hbase.metrics.BaseSourceImpl;
24 import org.apache.hadoop.metrics2.MetricsCollector;
25 import org.apache.hadoop.metrics2.MetricsRecordBuilder;
26
27 import java.util.TreeSet;
28
29 public class MetricsRegionAggregateSourceImpl extends BaseSourceImpl
30 implements MetricsRegionAggregateSource {
31
32 private final Log LOG = LogFactory.getLog(this.getClass());
33
34 private final TreeSet<MetricsRegionSourceImpl> regionSources =
35 new TreeSet<MetricsRegionSourceImpl>();
36
37 public MetricsRegionAggregateSourceImpl() {
38 this(METRICS_NAME, METRICS_DESCRIPTION, METRICS_CONTEXT, METRICS_JMX_CONTEXT);
39 }
40
41
42 public MetricsRegionAggregateSourceImpl(String metricsName,
43 String metricsDescription,
44 String metricsContext,
45 String metricsJmxContext) {
46 super(metricsName, metricsDescription, metricsContext, metricsJmxContext);
47 }
48
49 @Override
50 public void register(MetricsRegionSource source) {
51 regionSources.add((MetricsRegionSourceImpl) source);
52 }
53
54 @Override
55 public void deregister(MetricsRegionSource source) {
56 regionSources.remove(source);
57 }
58
59
60
61
62
63
64
65
66
67 @Override
68 public void getMetrics(MetricsCollector collector, boolean all) {
69
70
71 MetricsRecordBuilder mrb = collector.addRecord(metricsName)
72 .setContext(metricsContext);
73
74 if (regionSources != null) {
75 for (MetricsRegionSourceImpl regionMetricSource : regionSources) {
76 regionMetricSource.snapshot(mrb, all);
77 }
78 }
79
80 metricsRegistry.snapshot(mrb, all);
81 }
82 }