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 MetricHistogram replayHisto;
42 private final MetricHistogram scanNextHisto;
43
44 private final MetricMutableCounterLong slowPut;
45 private final MetricMutableCounterLong slowDelete;
46 private final MetricMutableCounterLong slowGet;
47 private final MetricMutableCounterLong slowIncrement;
48 private final MetricMutableCounterLong slowAppend;
49 private final MetricMutableCounterLong splitRequest;
50 private final MetricMutableCounterLong splitSuccess;
51
52 private final MetricHistogram splitTimeHisto;
53 private final MetricHistogram flushTimeHisto;
54
55 public MetricsRegionServerSourceImpl(MetricsRegionServerWrapper rsWrap) {
56 this(METRICS_NAME, METRICS_DESCRIPTION, METRICS_CONTEXT, METRICS_JMX_CONTEXT, rsWrap);
57 }
58
59 public MetricsRegionServerSourceImpl(String metricsName,
60 String metricsDescription,
61 String metricsContext,
62 String metricsJmxContext,
63 MetricsRegionServerWrapper rsWrap) {
64 super(metricsName, metricsDescription, metricsContext, metricsJmxContext);
65 this.rsWrap = rsWrap;
66
67 putHisto = getMetricsRegistry().newHistogram(MUTATE_KEY);
68 slowPut = getMetricsRegistry().newCounter(SLOW_MUTATE_KEY, SLOW_MUTATE_DESC, 0l);
69
70 deleteHisto = getMetricsRegistry().newHistogram(DELETE_KEY);
71 slowDelete = getMetricsRegistry().newCounter(SLOW_DELETE_KEY, SLOW_DELETE_DESC, 0l);
72
73 getHisto = getMetricsRegistry().newHistogram(GET_KEY);
74 slowGet = getMetricsRegistry().newCounter(SLOW_GET_KEY, SLOW_GET_DESC, 0l);
75
76 incrementHisto = getMetricsRegistry().newHistogram(INCREMENT_KEY);
77 slowIncrement = getMetricsRegistry().newCounter(SLOW_INCREMENT_KEY, SLOW_INCREMENT_DESC, 0l);
78
79 appendHisto = getMetricsRegistry().newHistogram(APPEND_KEY);
80 slowAppend = getMetricsRegistry().newCounter(SLOW_APPEND_KEY, SLOW_APPEND_DESC, 0l);
81
82 replayHisto = getMetricsRegistry().newHistogram(REPLAY_KEY);
83 scanNextHisto = getMetricsRegistry().newHistogram(SCAN_NEXT_KEY);
84
85 splitTimeHisto = getMetricsRegistry().newHistogram(SPLIT_KEY);
86 flushTimeHisto = getMetricsRegistry().newHistogram(FLUSH_KEY);
87
88 splitRequest = getMetricsRegistry().newCounter(SPLIT_REQUEST_KEY, SPLIT_REQUEST_DESC, 0l);
89 splitSuccess = getMetricsRegistry().newCounter(SPLIT_SUCCESS_KEY, SPLIT_SUCCESS_DESC, 0l);
90 }
91
92 @Override
93 public void updatePut(long t) {
94 putHisto.add(t);
95 }
96
97 @Override
98 public void updateDelete(long t) {
99 deleteHisto.add(t);
100 }
101
102 @Override
103 public void updateGet(long t) {
104 getHisto.add(t);
105 }
106
107 @Override
108 public void updateIncrement(long t) {
109 incrementHisto.add(t);
110 }
111
112 @Override
113 public void updateAppend(long t) {
114 appendHisto.add(t);
115 }
116
117 @Override
118 public void updateReplay(long t) {
119 replayHisto.add(t);
120 }
121
122 @Override
123 public void updateScannerNext(long scanSize) {
124 scanNextHisto.add(scanSize);
125 }
126
127 @Override
128 public void incrSlowPut() {
129 slowPut.incr();
130 }
131
132 @Override
133 public void incrSlowDelete() {
134 slowDelete.incr();
135 }
136
137 @Override
138 public void incrSlowGet() {
139 slowGet.incr();
140 }
141
142 @Override
143 public void incrSlowIncrement() {
144 slowIncrement.incr();
145 }
146
147 @Override
148 public void incrSlowAppend() {
149 slowAppend.incr();
150 }
151
152 @Override
153 public void incrSplitRequest() {
154 splitRequest.incr();
155 }
156
157 @Override
158 public void incrSplitSuccess() {
159 splitSuccess.incr();
160 }
161
162 @Override
163 public void updateSplitTime(long t) {
164 splitTimeHisto.add(t);
165 }
166
167 @Override
168 public void updateFlushTime(long t) {
169 flushTimeHisto.add(t);
170 }
171
172
173
174
175
176
177
178
179
180 @Override
181 public void getMetrics(MetricsBuilder metricsBuilder, boolean all) {
182
183 MetricsRecordBuilder mrb = metricsBuilder.addRecord(metricsName);
184
185
186 if (rsWrap != null) {
187 mrb.addGauge(REGION_COUNT, REGION_COUNT_DESC, rsWrap.getNumOnlineRegions())
188 .addGauge(STORE_COUNT, STORE_COUNT_DESC, rsWrap.getNumStores())
189 .addGauge(HLOGFILE_COUNT, HLOGFILE_COUNT_DESC, rsWrap.getNumHLogFiles())
190 .addGauge(HLOGFILE_SIZE, HLOGFILE_SIZE_DESC, rsWrap.getHLogFileSize())
191 .addGauge(STOREFILE_COUNT, STOREFILE_COUNT_DESC, rsWrap.getNumStoreFiles())
192 .addGauge(MEMSTORE_SIZE, MEMSTORE_SIZE_DESC, rsWrap.getMemstoreSize())
193 .addGauge(STOREFILE_SIZE, STOREFILE_SIZE_DESC, rsWrap.getStoreFileSize())
194 .addGauge(RS_START_TIME_NAME, RS_START_TIME_DESC, rsWrap.getStartCode())
195 .addCounter(TOTAL_REQUEST_COUNT, TOTAL_REQUEST_COUNT_DESC, rsWrap.getTotalRequestCount())
196 .addCounter(READ_REQUEST_COUNT, READ_REQUEST_COUNT_DESC, rsWrap.getReadRequestsCount())
197 .addCounter(WRITE_REQUEST_COUNT, WRITE_REQUEST_COUNT_DESC, rsWrap.getWriteRequestsCount())
198 .addCounter(CHECK_MUTATE_FAILED_COUNT,
199 CHECK_MUTATE_FAILED_COUNT_DESC,
200 rsWrap.getCheckAndMutateChecksFailed())
201 .addCounter(CHECK_MUTATE_PASSED_COUNT,
202 CHECK_MUTATE_PASSED_COUNT_DESC,
203 rsWrap.getCheckAndMutateChecksPassed())
204 .addGauge(STOREFILE_INDEX_SIZE, STOREFILE_INDEX_SIZE_DESC, rsWrap.getStoreFileIndexSize())
205 .addGauge(STATIC_INDEX_SIZE, STATIC_INDEX_SIZE_DESC, rsWrap.getTotalStaticIndexSize())
206 .addGauge(STATIC_BLOOM_SIZE, STATIC_BLOOM_SIZE_DESC, rsWrap.getTotalStaticBloomSize())
207 .addGauge(NUMBER_OF_MUTATIONS_WITHOUT_WAL,
208 NUMBER_OF_MUTATIONS_WITHOUT_WAL_DESC,
209 rsWrap.getNumMutationsWithoutWAL())
210 .addGauge(DATA_SIZE_WITHOUT_WAL,
211 DATA_SIZE_WITHOUT_WAL_DESC,
212 rsWrap.getDataInMemoryWithoutWAL())
213 .addGauge(PERCENT_FILES_LOCAL, PERCENT_FILES_LOCAL_DESC, rsWrap.getPercentFileLocal())
214 .addGauge(COMPACTION_QUEUE_LENGTH,
215 COMPACTION_QUEUE_LENGTH_DESC,
216 rsWrap.getCompactionQueueSize())
217 .addGauge(LARGE_COMPACTION_QUEUE_LENGTH,
218 COMPACTION_QUEUE_LENGTH_DESC,
219 rsWrap.getLargeCompactionQueueSize())
220 .addGauge(SMALL_COMPACTION_QUEUE_LENGTH,
221 COMPACTION_QUEUE_LENGTH_DESC,
222 rsWrap.getSmallCompactionQueueSize())
223 .addGauge(FLUSH_QUEUE_LENGTH, FLUSH_QUEUE_LENGTH_DESC, rsWrap.getFlushQueueSize())
224 .addGauge(BLOCK_CACHE_FREE_SIZE, BLOCK_CACHE_FREE_DESC, rsWrap.getBlockCacheFreeSize())
225 .addGauge(BLOCK_CACHE_COUNT, BLOCK_CACHE_COUNT_DESC, rsWrap.getBlockCacheCount())
226 .addGauge(BLOCK_CACHE_SIZE, BLOCK_CACHE_SIZE_DESC, rsWrap.getBlockCacheSize())
227 .addCounter(BLOCK_CACHE_HIT_COUNT,
228 BLOCK_CACHE_HIT_COUNT_DESC,
229 rsWrap.getBlockCacheHitCount())
230 .addCounter(BLOCK_CACHE_MISS_COUNT,
231 BLOCK_COUNT_MISS_COUNT_DESC,
232 rsWrap.getBlockCacheMissCount())
233 .addCounter(BLOCK_CACHE_EVICTION_COUNT,
234 BLOCK_CACHE_EVICTION_COUNT_DESC,
235 rsWrap.getBlockCacheEvictedCount())
236 .addGauge(BLOCK_CACHE_HIT_PERCENT,
237 BLOCK_CACHE_HIT_PERCENT_DESC,
238 rsWrap.getBlockCacheHitPercent())
239 .addGauge(BLOCK_CACHE_EXPRESS_HIT_PERCENT,
240 BLOCK_CACHE_EXPRESS_HIT_PERCENT_DESC,
241 rsWrap.getBlockCacheHitCachingPercent())
242 .addCounter(UPDATES_BLOCKED_TIME, UPDATES_BLOCKED_DESC, rsWrap.getUpdatesBlockedTime())
243 .addCounter(FLUSHED_CELLS, FLUSHED_CELLS_DESC, rsWrap.getFlushedCellsCount())
244 .addCounter(COMPACTED_CELLS, COMPACTED_CELLS_DESC, rsWrap.getCompactedCellsCount())
245 .addCounter(MAJOR_COMPACTED_CELLS, MAJOR_COMPACTED_CELLS_DESC,
246 rsWrap.getMajorCompactedCellsCount())
247 .addCounter(FLUSHED_CELLS_SIZE, FLUSHED_CELLS_SIZE_DESC, rsWrap.getFlushedCellsSize())
248 .addCounter(COMPACTED_CELLS_SIZE, COMPACTED_CELLS_SIZE_DESC,
249 rsWrap.getCompactedCellsSize())
250 .addCounter(MAJOR_COMPACTED_CELLS_SIZE, MAJOR_COMPACTED_CELLS_SIZE_DESC,
251 rsWrap.getMajorCompactedCellsSize())
252
253 .addCounter(BLOCKED_REQUESTS_COUNT, BLOCKED_REQUESTS_COUNT_DESC,
254 rsWrap.getBlockedRequestsCount())
255
256 .tag(ZOOKEEPER_QUORUM_NAME, ZOOKEEPER_QUORUM_DESC, rsWrap.getZookeeperQuorum())
257 .tag(SERVER_NAME_NAME, SERVER_NAME_DESC, rsWrap.getServerName())
258 .tag(CLUSTER_ID_NAME, CLUSTER_ID_DESC, rsWrap.getClusterId());
259 }
260
261 metricsRegistry.snapshot(mrb, all);
262 }
263
264
265 }