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