1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.hadoop.hbase.replication.regionserver;
20
21 import org.apache.hadoop.hbase.metrics.MetricRegistryInfo;
22 import org.apache.hadoop.metrics2.lib.MutableFastCounter;
23 import org.apache.hadoop.metrics2.lib.MutableGaugeInt;
24 import org.apache.hadoop.metrics2.lib.MutableGaugeLong;
25 import org.apache.hadoop.metrics2.lib.MutableHistogram;
26
27 public class MetricsReplicationGlobalSourceSource implements MetricsReplicationSourceSource{
28 private final MetricsReplicationSourceImpl rms;
29
30 private final MutableHistogram ageOfLastShippedOpHist;
31 private final MutableGaugeLong sizeOfLogQueueGauge;
32 private final MutableFastCounter logReadInEditsCounter;
33 private final MutableFastCounter logEditsFilteredCounter;
34 private final MutableFastCounter shippedBatchesCounter;
35 private final MutableFastCounter shippedOpsCounter;
36 private final MutableFastCounter shippedBytesCounter;
37 @Deprecated
38 private final MutableFastCounter shippedKBsCounter;
39 private final MutableFastCounter logReadInBytesCounter;
40 private final MutableFastCounter shippedHFilesCounter;
41 private final MutableGaugeLong sizeOfHFileRefsQueueGauge;
42 private final MutableFastCounter unknownFileLengthForClosedWAL;
43 private final MutableFastCounter uncleanlyClosedWAL;
44 private final MutableFastCounter uncleanlyClosedSkippedBytes;
45 private final MutableFastCounter restartWALReading;
46 private final MutableFastCounter repeatedFileBytes;
47 private final MutableFastCounter completedWAL;
48 private final MutableFastCounter completedRecoveryQueue;
49 private final MutableFastCounter failedRecoveryQueue;
50 private final MutableGaugeInt sourceInitializing;
51
52 public MetricsReplicationGlobalSourceSource(MetricsReplicationSourceImpl rms) {
53 this.rms = rms;
54
55 ageOfLastShippedOpHist = rms.getMetricsRegistry().getHistogram(SOURCE_AGE_OF_LAST_SHIPPED_OP);
56
57 sizeOfLogQueueGauge = rms.getMetricsRegistry().getGauge(SOURCE_SIZE_OF_LOG_QUEUE, 0L);
58
59 shippedBatchesCounter = rms.getMetricsRegistry().getCounter(SOURCE_SHIPPED_BATCHES, 0L);
60
61 shippedOpsCounter = rms.getMetricsRegistry().getCounter(SOURCE_SHIPPED_OPS, 0L);
62
63 shippedKBsCounter = rms.getMetricsRegistry().getCounter(SOURCE_SHIPPED_KBS, 0L);
64
65 shippedBytesCounter = rms.getMetricsRegistry().getCounter(SOURCE_SHIPPED_BYTES, 0L);
66
67 logReadInBytesCounter = rms.getMetricsRegistry().getCounter(SOURCE_LOG_READ_IN_BYTES, 0L);
68
69 logReadInEditsCounter = rms.getMetricsRegistry().getCounter(SOURCE_LOG_READ_IN_EDITS, 0L);
70
71 logEditsFilteredCounter = rms.getMetricsRegistry().getCounter(SOURCE_LOG_EDITS_FILTERED, 0L);
72
73 shippedHFilesCounter = rms.getMetricsRegistry().getCounter(SOURCE_SHIPPED_HFILES, 0L);
74
75 sizeOfHFileRefsQueueGauge =
76 rms.getMetricsRegistry().getGauge(SOURCE_SIZE_OF_HFILE_REFS_QUEUE, 0L);
77
78 unknownFileLengthForClosedWAL = rms.getMetricsRegistry().getCounter(SOURCE_CLOSED_LOGS_WITH_UNKNOWN_LENGTH, 0L);
79 uncleanlyClosedWAL = rms.getMetricsRegistry().getCounter(SOURCE_UNCLEANLY_CLOSED_LOGS, 0L);
80 uncleanlyClosedSkippedBytes = rms.getMetricsRegistry().getCounter(SOURCE_UNCLEANLY_CLOSED_IGNORED_IN_BYTES, 0L);
81 restartWALReading = rms.getMetricsRegistry().getCounter(SOURCE_RESTARTED_LOG_READING, 0L);
82 repeatedFileBytes = rms.getMetricsRegistry().getCounter(SOURCE_REPEATED_LOG_FILE_BYTES, 0L);
83 completedWAL = rms.getMetricsRegistry().getCounter(SOURCE_COMPLETED_LOGS, 0L);
84 completedRecoveryQueue = rms.getMetricsRegistry().getCounter(SOURCE_COMPLETED_RECOVERY_QUEUES, 0L);
85 failedRecoveryQueue = rms.getMetricsRegistry()
86 .getCounter(SOURCE_FAILED_RECOVERY_QUEUES, 0L);
87 sourceInitializing = rms.getMetricsRegistry().getGaugeInt(SOURCE_INITIALIZING, 0);
88 }
89
90 @Override public void setLastShippedAge(long age) {
91 ageOfLastShippedOpHist.add(age);
92 }
93
94 @Override public void incrSizeOfLogQueue(int size) {
95 sizeOfLogQueueGauge.incr(size);
96 }
97
98 @Override public void decrSizeOfLogQueue(int size) {
99 sizeOfLogQueueGauge.decr(size);
100 }
101
102 @Override public void incrLogReadInEdits(long size) {
103 logReadInEditsCounter.incr(size);
104 }
105
106 @Override public void incrLogEditsFiltered(long size) {
107 logEditsFilteredCounter.incr(size);
108 }
109
110 @Override public void incrBatchesShipped(int batches) {
111 shippedBatchesCounter.incr(batches);
112 }
113
114 @Override public void incrOpsShipped(long ops) {
115 shippedOpsCounter.incr(ops);
116 }
117
118 @Override public void incrShippedBytes(long size) {
119 shippedBytesCounter.incr(size);
120
121
122 incrementKBsCounter(shippedBytesCounter, shippedKBsCounter);
123 }
124
125 static void incrementKBsCounter(MutableFastCounter bytesCounter, MutableFastCounter kbsCounter) {
126
127 long delta = 0;
128 while(true) {
129 long bytes = bytesCounter.value();
130 delta = (bytes / 1024) - kbsCounter.value();
131 if (delta > 0) {
132 kbsCounter.incr(delta);
133 } else {
134 break;
135 }
136 }
137 }
138
139 @Override public void incrLogReadInBytes(long size) {
140 logReadInBytesCounter.incr(size);
141 }
142
143 @Override public void clear() {
144 }
145
146 @Override
147 public long getLastShippedAge() {
148 return ageOfLastShippedOpHist.getMax();
149 }
150
151 @Override public void incrHFilesShipped(long hfiles) {
152 shippedHFilesCounter.incr(hfiles);
153 }
154
155 @Override
156 public void incrSizeOfHFileRefsQueue(long size) {
157 sizeOfHFileRefsQueueGauge.incr(size);
158 }
159
160 @Override
161 public void decrSizeOfHFileRefsQueue(long size) {
162 sizeOfHFileRefsQueueGauge.decr(size);
163 }
164
165 @Override
166 public int getSizeOfLogQueue() {
167 return (int)sizeOfLogQueueGauge.value();
168 }
169
170 @Override
171 public void incrUnknownFileLengthForClosedWAL() {
172 unknownFileLengthForClosedWAL.incr(1L);
173 }
174 @Override
175 public void incrUncleanlyClosedWALs() {
176 uncleanlyClosedWAL.incr(1L);
177 }
178
179 @Override
180 public long getUncleanlyClosedWALs() {
181 return uncleanlyClosedWAL.value();
182 }
183
184 @Override
185 public void incrBytesSkippedInUncleanlyClosedWALs(final long bytes) {
186 uncleanlyClosedSkippedBytes.incr(bytes);
187 }
188 @Override
189 public void incrRestartedWALReading() {
190 restartWALReading.incr(1L);
191 }
192 @Override
193 public void incrRepeatedFileBytes(final long bytes) {
194 repeatedFileBytes.incr(bytes);
195 }
196 @Override
197 public void incrCompletedWAL() {
198 completedWAL.incr(1L);
199 }
200 @Override
201 public void incrCompletedRecoveryQueue() {
202 completedRecoveryQueue.incr(1L);
203 }
204 @Override
205 public void incrFailedRecoveryQueue() {
206 failedRecoveryQueue.incr(1L);
207 }
208
209 @Override
210 public void setOldestWalAge(long age) {
211
212 }
213
214 @Override
215 public long getOldestWalAge() {
216
217 return 0;
218 }
219
220 @Override
221 public void incrSourceInitializing() {
222 sourceInitializing.incr(1);
223 }
224
225 @Override
226 public void decrSourceInitializing() {
227 sourceInitializing.decr(1);
228 }
229
230 @Override
231 public int getSourceInitializing() {
232 return sourceInitializing.value();
233 }
234
235 @Override
236 public void init() {
237 rms.init();
238 }
239
240 @Override
241 public void setGauge(String gaugeName, long value) {
242 rms.setGauge(gaugeName, value);
243 }
244
245 @Override
246 public void incGauge(String gaugeName, long delta) {
247 rms.incGauge(gaugeName, delta);
248 }
249
250 @Override
251 public void decGauge(String gaugeName, long delta) {
252 rms.decGauge(gaugeName, delta);
253 }
254
255 @Override
256 public void removeMetric(String key) {
257 rms.removeMetric(key);
258 }
259
260 @Override
261 public void incCounters(String counterName, long delta) {
262 rms.incCounters(counterName, delta);
263 }
264
265 @Override
266 public void updateHistogram(String name, long value) {
267 rms.updateHistogram(name, value);
268 }
269
270 @Override
271 public String getMetricsContext() {
272 return rms.getMetricsContext();
273 }
274
275 @Override
276 public String getMetricsDescription() {
277 return rms.getMetricsDescription();
278 }
279
280 @Override
281 public String getMetricsJmxContext() {
282 return rms.getMetricsJmxContext();
283 }
284
285 @Override
286 public String getMetricsName() {
287 return rms.getMetricsName();
288 }
289
290 @Override
291 public MetricRegistryInfo getMetricRegistryInfo() {
292 return new MetricRegistryInfo(getMetricsName(), getMetricsDescription(),
293 getMetricsContext(), getMetricsJmxContext(), true);
294 }
295 }