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