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.hadoop.hbase.metrics.BaseSourceImpl;
22 import org.apache.hadoop.metrics2.MetricHistogram;
23 import org.apache.hadoop.metrics2.MetricsBuilder;
24 import org.apache.hadoop.metrics2.MetricsRecordBuilder;
25 import org.apache.hadoop.metrics2.lib.MetricMutableCounterLong;
26
27
28
29
30
31
32 public class MetricsRegionServerSourceImpl
33 extends BaseSourceImpl implements MetricsRegionServerSource {
34
35 final MetricsRegionServerWrapper rsWrap;
36 private final MetricHistogram putHisto;
37 private final MetricHistogram deleteHisto;
38 private final MetricHistogram getHisto;
39 private final MetricHistogram incrementHisto;
40 private final MetricHistogram appendHisto;
41 private final MetricMutableCounterLong slowPut;
42 private final MetricMutableCounterLong slowDelete;
43 private final MetricMutableCounterLong slowGet;
44 private final MetricMutableCounterLong slowIncrement;
45 private final MetricMutableCounterLong slowAppend;
46
47 public MetricsRegionServerSourceImpl(MetricsRegionServerWrapper rsWrap) {
48 this(METRICS_NAME, METRICS_DESCRIPTION, METRICS_CONTEXT, METRICS_JMX_CONTEXT, rsWrap);
49 }
50
51 public MetricsRegionServerSourceImpl(String metricsName,
52 String metricsDescription,
53 String metricsContext,
54 String metricsJmxContext,
55 MetricsRegionServerWrapper rsWrap) {
56 super(metricsName, metricsDescription, metricsContext, metricsJmxContext);
57 this.rsWrap = rsWrap;
58
59 putHisto = getMetricsRegistry().newHistogram(MUTATE_KEY);
60 slowPut = getMetricsRegistry().newCounter(SLOW_MUTATE_KEY, SLOW_MUTATE_DESC, 0l);
61
62 deleteHisto = getMetricsRegistry().newHistogram(DELETE_KEY);
63 slowDelete = getMetricsRegistry().newCounter(SLOW_DELETE_KEY, SLOW_DELETE_DESC, 0l);
64
65 getHisto = getMetricsRegistry().newHistogram(GET_KEY);
66 slowGet = getMetricsRegistry().newCounter(SLOW_GET_KEY, SLOW_GET_DESC, 0l);
67
68 incrementHisto = getMetricsRegistry().newHistogram(INCREMENT_KEY);
69 slowIncrement = getMetricsRegistry().newCounter(SLOW_INCREMENT_KEY, SLOW_INCREMENT_DESC, 0l);
70
71 appendHisto = getMetricsRegistry().newHistogram(APPEND_KEY);
72 slowAppend = getMetricsRegistry().newCounter(SLOW_APPEND_KEY, SLOW_APPEND_DESC, 0l);
73 }
74
75 @Override
76 public void updatePut(long t) {
77 putHisto.add(t);
78 }
79
80 @Override
81 public void updateDelete(long t) {
82 deleteHisto.add(t);
83 }
84
85 @Override
86 public void updateGet(long t) {
87 getHisto.add(t);
88 }
89
90 @Override
91 public void updateIncrement(long t) {
92 incrementHisto.add(t);
93 }
94
95 @Override
96 public void updateAppend(long t) {
97 appendHisto.add(t);
98 }
99
100 @Override
101 public void incrSlowPut() {
102 slowPut.incr();
103 }
104
105 @Override
106 public void incrSlowDelete() {
107 slowDelete.incr();
108 }
109
110 @Override
111 public void incrSlowGet() {
112 slowGet.incr();
113 }
114
115 @Override
116 public void incrSlowIncrement() {
117 slowIncrement.incr();
118 }
119
120 @Override
121 public void incrSlowAppend() {
122 slowAppend.incr();
123 }
124
125
126
127
128
129
130
131
132
133 @Override
134 public void getMetrics(MetricsBuilder metricsBuilder, boolean all) {
135
136 MetricsRecordBuilder mrb = metricsBuilder.addRecord(metricsName)
137 .setContext(metricsContext);
138
139
140 if (rsWrap != null) {
141 mrb.addGauge(REGION_COUNT, REGION_COUNT_DESC, rsWrap.getNumOnlineRegions())
142 .addGauge(STORE_COUNT, STORE_COUNT_DESC, rsWrap.getNumStores())
143 .addGauge(STOREFILE_COUNT, STOREFILE_COUNT_DESC, rsWrap.getNumStoreFiles())
144 .addGauge(MEMSTORE_SIZE, MEMSTORE_SIZE_DESC, rsWrap.getMemstoreSize())
145 .addGauge(STOREFILE_SIZE, STOREFILE_SIZE_DESC, rsWrap.getStoreFileSize())
146 .addGauge(RS_START_TIME_NAME, RS_START_TIME_DESC, rsWrap.getStartCode())
147 .addCounter(TOTAL_REQUEST_COUNT, TOTAL_REQUEST_COUNT_DESC, rsWrap.getTotalRequestCount())
148 .addCounter(READ_REQUEST_COUNT, READ_REQUEST_COUNT_DESC, rsWrap.getReadRequestsCount())
149 .addCounter(WRITE_REQUEST_COUNT, WRITE_REQUEST_COUNT_DESC, rsWrap.getWriteRequestsCount())
150 .addCounter(CHECK_MUTATE_FAILED_COUNT,
151 CHECK_MUTATE_FAILED_COUNT_DESC,
152 rsWrap.getCheckAndMutateChecksFailed())
153 .addCounter(CHECK_MUTATE_PASSED_COUNT,
154 CHECK_MUTATE_PASSED_COUNT_DESC,
155 rsWrap.getCheckAndMutateChecksPassed())
156 .addGauge(STOREFILE_INDEX_SIZE, STOREFILE_INDEX_SIZE_DESC, rsWrap.getStoreFileIndexSize())
157 .addGauge(STATIC_INDEX_SIZE, STATIC_INDEX_SIZE_DESC, rsWrap.getTotalStaticIndexSize())
158 .addGauge(STATIC_BLOOM_SIZE, STATIC_BLOOM_SIZE_DESC, rsWrap.getTotalStaticBloomSize())
159 .addGauge(NUMBER_OF_PUTS_WITHOUT_WAL,
160 NUMBER_OF_PUTS_WITHOUT_WAL_DESC,
161 rsWrap.getNumPutsWithoutWAL())
162 .addGauge(DATA_SIZE_WITHOUT_WAL,
163 DATA_SIZE_WITHOUT_WAL_DESC,
164 rsWrap.getDataInMemoryWithoutWAL())
165 .addGauge(PERCENT_FILES_LOCAL, PERCENT_FILES_LOCAL_DESC, rsWrap.getPercentFileLocal())
166 .addGauge(COMPACTION_QUEUE_LENGTH,
167 COMPACTION_QUEUE_LENGTH_DESC,
168 rsWrap.getCompactionQueueSize())
169 .addGauge(FLUSH_QUEUE_LENGTH, FLUSH_QUEUE_LENGTH_DESC, rsWrap.getFlushQueueSize())
170 .addGauge(BLOCK_CACHE_FREE_SIZE, BLOCK_CACHE_FREE_DESC, rsWrap.getBlockCacheFreeSize())
171 .addGauge(BLOCK_CACHE_COUNT, BLOCK_CACHE_COUNT_DESC, rsWrap.getBlockCacheCount())
172 .addGauge(BLOCK_CACHE_SIZE, BLOCK_CACHE_SIZE_DESC, rsWrap.getBlockCacheSize())
173 .addCounter(BLOCK_CACHE_HIT_COUNT,
174 BLOCK_CACHE_HIT_COUNT_DESC,
175 rsWrap.getBlockCacheHitCount())
176 .addCounter(BLOCK_CACHE_MISS_COUNT,
177 BLOCK_COUNT_MISS_COUNT_DESC,
178 rsWrap.getBlockCacheMissCount())
179 .addCounter(BLOCK_CACHE_EVICTION_COUNT,
180 BLOCK_CACHE_EVICTION_COUNT_DESC,
181 rsWrap.getBlockCacheEvictedCount())
182 .addGauge(BLOCK_CACHE_HIT_PERCENT,
183 BLOCK_CACHE_HIT_PERCENT_DESC,
184 rsWrap.getBlockCacheHitPercent())
185 .addGauge(BLOCK_CACHE_EXPRESS_HIT_PERCENT,
186 BLOCK_CACHE_EXPRESS_HIT_PERCENT_DESC,
187 rsWrap.getBlockCacheHitCachingPercent())
188 .addCounter(UPDATES_BLOCKED_TIME, UPDATES_BLOCKED_DESC, rsWrap.getUpdatesBlockedTime())
189 .tag(ZOOKEEPER_QUORUM_NAME, ZOOKEEPER_QUORUM_DESC, rsWrap.getZookeeperQuorum())
190 .tag(SERVER_NAME_NAME, SERVER_NAME_DESC, rsWrap.getServerName())
191 .tag(CLUSTER_ID_NAME, CLUSTER_ID_DESC, rsWrap.getClusterId());
192 }
193
194 metricsRegistry.snapshot(mrb, all);
195 }
196
197
198 }