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