001/** 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018 019package org.apache.hadoop.hbase.regionserver; 020 021import org.apache.hadoop.hbase.metrics.BaseSourceImpl; 022import org.apache.hadoop.hbase.metrics.Interns; 023import org.apache.hadoop.metrics2.MetricHistogram; 024import org.apache.hadoop.metrics2.MetricsCollector; 025import org.apache.hadoop.metrics2.MetricsRecordBuilder; 026import org.apache.hadoop.metrics2.lib.MutableFastCounter; 027import org.apache.yetus.audience.InterfaceAudience; 028 029/** 030 * Hadoop2 implementation of MetricsRegionServerSource. 031 * 032 * Implements BaseSource through BaseSourceImpl, following the pattern 033 */ 034@InterfaceAudience.Private 035public class MetricsRegionServerSourceImpl 036 extends BaseSourceImpl implements MetricsRegionServerSource { 037 038 final MetricsRegionServerWrapper rsWrap; 039 private final MetricHistogram putHisto; 040 private final MetricHistogram putBatchHisto; 041 private final MetricHistogram deleteHisto; 042 private final MetricHistogram deleteBatchHisto; 043 private final MetricHistogram checkAndDeleteHisto; 044 private final MetricHistogram checkAndPutHisto; 045 private final MetricHistogram checkAndMutateHisto; 046 private final MetricHistogram getHisto; 047 private final MetricHistogram incrementHisto; 048 private final MetricHistogram appendHisto; 049 private final MetricHistogram replayHisto; 050 private final MetricHistogram scanSizeHisto; 051 private final MetricHistogram scanTimeHisto; 052 053 private final MutableFastCounter slowPut; 054 private final MutableFastCounter slowDelete; 055 private final MutableFastCounter slowGet; 056 private final MutableFastCounter slowIncrement; 057 private final MutableFastCounter slowAppend; 058 059 // split related metrics 060 private final MutableFastCounter splitRequest; 061 private final MutableFastCounter splitSuccess; 062 private final MetricHistogram splitTimeHisto; 063 064 // flush related metrics 065 private final MetricHistogram flushTimeHisto; 066 private final MetricHistogram flushMemstoreSizeHisto; 067 private final MetricHistogram flushOutputSizeHisto; 068 private final MutableFastCounter flushedMemstoreBytes; 069 private final MutableFastCounter flushedOutputBytes; 070 071 // compaction related metrics 072 private final MetricHistogram compactionTimeHisto; 073 private final MetricHistogram compactionInputFileCountHisto; 074 private final MetricHistogram compactionInputSizeHisto; 075 private final MetricHistogram compactionOutputFileCountHisto; 076 private final MetricHistogram compactionOutputSizeHisto; 077 private final MutableFastCounter compactedInputBytes; 078 private final MutableFastCounter compactedOutputBytes; 079 080 private final MetricHistogram majorCompactionTimeHisto; 081 private final MetricHistogram majorCompactionInputFileCountHisto; 082 private final MetricHistogram majorCompactionInputSizeHisto; 083 private final MetricHistogram majorCompactionOutputFileCountHisto; 084 private final MetricHistogram majorCompactionOutputSizeHisto; 085 private final MutableFastCounter majorCompactedInputBytes; 086 private final MutableFastCounter majorCompactedOutputBytes; 087 088 // pause monitor metrics 089 private final MutableFastCounter infoPauseThresholdExceeded; 090 private final MutableFastCounter warnPauseThresholdExceeded; 091 private final MetricHistogram pausesWithGc; 092 private final MetricHistogram pausesWithoutGc; 093 094 public MetricsRegionServerSourceImpl(MetricsRegionServerWrapper rsWrap) { 095 this(METRICS_NAME, METRICS_DESCRIPTION, METRICS_CONTEXT, METRICS_JMX_CONTEXT, rsWrap); 096 } 097 098 public MetricsRegionServerSourceImpl(String metricsName, 099 String metricsDescription, 100 String metricsContext, 101 String metricsJmxContext, 102 MetricsRegionServerWrapper rsWrap) { 103 super(metricsName, metricsDescription, metricsContext, metricsJmxContext); 104 this.rsWrap = rsWrap; 105 106 putHisto = getMetricsRegistry().newTimeHistogram(PUT_KEY); 107 putBatchHisto = getMetricsRegistry().newTimeHistogram(PUT_BATCH_KEY); 108 slowPut = getMetricsRegistry().newCounter(SLOW_PUT_KEY, SLOW_PUT_DESC, 0L); 109 110 deleteHisto = getMetricsRegistry().newTimeHistogram(DELETE_KEY); 111 slowDelete = getMetricsRegistry().newCounter(SLOW_DELETE_KEY, SLOW_DELETE_DESC, 0L); 112 113 deleteBatchHisto = getMetricsRegistry().newTimeHistogram(DELETE_BATCH_KEY); 114 checkAndDeleteHisto = getMetricsRegistry().newTimeHistogram(CHECK_AND_DELETE_KEY); 115 checkAndPutHisto = getMetricsRegistry().newTimeHistogram(CHECK_AND_PUT_KEY); 116 checkAndMutateHisto = getMetricsRegistry().newTimeHistogram(CHECK_AND_MUTATE_KEY); 117 118 getHisto = getMetricsRegistry().newTimeHistogram(GET_KEY); 119 slowGet = getMetricsRegistry().newCounter(SLOW_GET_KEY, SLOW_GET_DESC, 0L); 120 121 incrementHisto = getMetricsRegistry().newTimeHistogram(INCREMENT_KEY); 122 slowIncrement = getMetricsRegistry().newCounter(SLOW_INCREMENT_KEY, SLOW_INCREMENT_DESC, 0L); 123 124 appendHisto = getMetricsRegistry().newTimeHistogram(APPEND_KEY); 125 slowAppend = getMetricsRegistry().newCounter(SLOW_APPEND_KEY, SLOW_APPEND_DESC, 0L); 126 127 replayHisto = getMetricsRegistry().newTimeHistogram(REPLAY_KEY); 128 scanSizeHisto = getMetricsRegistry().newSizeHistogram(SCAN_SIZE_KEY); 129 scanTimeHisto = getMetricsRegistry().newTimeHistogram(SCAN_TIME_KEY); 130 131 flushTimeHisto = getMetricsRegistry().newTimeHistogram(FLUSH_TIME, FLUSH_TIME_DESC); 132 flushMemstoreSizeHisto = getMetricsRegistry() 133 .newSizeHistogram(FLUSH_MEMSTORE_SIZE, FLUSH_MEMSTORE_SIZE_DESC); 134 flushOutputSizeHisto = getMetricsRegistry().newSizeHistogram(FLUSH_OUTPUT_SIZE, 135 FLUSH_OUTPUT_SIZE_DESC); 136 flushedOutputBytes = getMetricsRegistry().newCounter(FLUSHED_OUTPUT_BYTES, 137 FLUSHED_OUTPUT_BYTES_DESC, 0L); 138 flushedMemstoreBytes = getMetricsRegistry().newCounter(FLUSHED_MEMSTORE_BYTES, 139 FLUSHED_MEMSTORE_BYTES_DESC, 0L); 140 141 compactionTimeHisto = getMetricsRegistry() 142 .newTimeHistogram(COMPACTION_TIME, COMPACTION_TIME_DESC); 143 compactionInputFileCountHisto = getMetricsRegistry() 144 .newHistogram(COMPACTION_INPUT_FILE_COUNT, COMPACTION_INPUT_FILE_COUNT_DESC); 145 compactionInputSizeHisto = getMetricsRegistry() 146 .newSizeHistogram(COMPACTION_INPUT_SIZE, COMPACTION_INPUT_SIZE_DESC); 147 compactionOutputFileCountHisto = getMetricsRegistry() 148 .newHistogram(COMPACTION_OUTPUT_FILE_COUNT, COMPACTION_OUTPUT_FILE_COUNT_DESC); 149 compactionOutputSizeHisto = getMetricsRegistry() 150 .newSizeHistogram(COMPACTION_OUTPUT_SIZE, COMPACTION_OUTPUT_SIZE_DESC); 151 compactedInputBytes = getMetricsRegistry() 152 .newCounter(COMPACTED_INPUT_BYTES, COMPACTED_INPUT_BYTES_DESC, 0L); 153 compactedOutputBytes = getMetricsRegistry() 154 .newCounter(COMPACTED_OUTPUT_BYTES, COMPACTED_OUTPUT_BYTES_DESC, 0L); 155 156 majorCompactionTimeHisto = getMetricsRegistry() 157 .newTimeHistogram(MAJOR_COMPACTION_TIME, MAJOR_COMPACTION_TIME_DESC); 158 majorCompactionInputFileCountHisto = getMetricsRegistry() 159 .newHistogram(MAJOR_COMPACTION_INPUT_FILE_COUNT, MAJOR_COMPACTION_INPUT_FILE_COUNT_DESC); 160 majorCompactionInputSizeHisto = getMetricsRegistry() 161 .newSizeHistogram(MAJOR_COMPACTION_INPUT_SIZE, MAJOR_COMPACTION_INPUT_SIZE_DESC); 162 majorCompactionOutputFileCountHisto = getMetricsRegistry() 163 .newHistogram(MAJOR_COMPACTION_OUTPUT_FILE_COUNT, MAJOR_COMPACTION_OUTPUT_FILE_COUNT_DESC); 164 majorCompactionOutputSizeHisto = getMetricsRegistry() 165 .newSizeHistogram(MAJOR_COMPACTION_OUTPUT_SIZE, MAJOR_COMPACTION_OUTPUT_SIZE_DESC); 166 majorCompactedInputBytes = getMetricsRegistry() 167 .newCounter(MAJOR_COMPACTED_INPUT_BYTES, MAJOR_COMPACTED_INPUT_BYTES_DESC, 0L); 168 majorCompactedOutputBytes = getMetricsRegistry() 169 .newCounter(MAJOR_COMPACTED_OUTPUT_BYTES, MAJOR_COMPACTED_OUTPUT_BYTES_DESC, 0L); 170 171 splitTimeHisto = getMetricsRegistry().newTimeHistogram(SPLIT_KEY); 172 splitRequest = getMetricsRegistry().newCounter(SPLIT_REQUEST_KEY, SPLIT_REQUEST_DESC, 0L); 173 splitSuccess = getMetricsRegistry().newCounter(SPLIT_SUCCESS_KEY, SPLIT_SUCCESS_DESC, 0L); 174 175 // pause monitor metrics 176 infoPauseThresholdExceeded = getMetricsRegistry().newCounter(INFO_THRESHOLD_COUNT_KEY, 177 INFO_THRESHOLD_COUNT_DESC, 0L); 178 warnPauseThresholdExceeded = getMetricsRegistry().newCounter(WARN_THRESHOLD_COUNT_KEY, 179 WARN_THRESHOLD_COUNT_DESC, 0L); 180 pausesWithGc = getMetricsRegistry().newTimeHistogram(PAUSE_TIME_WITH_GC_KEY); 181 pausesWithoutGc = getMetricsRegistry().newTimeHistogram(PAUSE_TIME_WITHOUT_GC_KEY); 182 } 183 184 @Override 185 public void updatePut(long t) { 186 putHisto.add(t); 187 } 188 189 @Override 190 public void updateDelete(long t) { 191 deleteHisto.add(t); 192 } 193 194 @Override 195 public void updateGet(long t) { 196 getHisto.add(t); 197 } 198 199 @Override 200 public void updateIncrement(long t) { 201 incrementHisto.add(t); 202 } 203 204 @Override 205 public void updateAppend(long t) { 206 appendHisto.add(t); 207 } 208 209 @Override 210 public void updateReplay(long t) { 211 replayHisto.add(t); 212 } 213 214 @Override 215 public void updateScanSize(long scanSize) { 216 scanSizeHisto.add(scanSize); 217 } 218 219 @Override 220 public void updateScanTime(long t) { 221 scanTimeHisto.add(t); 222 } 223 224 @Override 225 public void incrSlowPut() { 226 slowPut.incr(); 227 } 228 229 @Override 230 public void incrSlowDelete() { 231 slowDelete.incr(); 232 } 233 234 @Override 235 public void incrSlowGet() { 236 slowGet.incr(); 237 } 238 239 @Override 240 public void incrSlowIncrement() { 241 slowIncrement.incr(); 242 } 243 244 @Override 245 public void incrSlowAppend() { 246 slowAppend.incr(); 247 } 248 249 @Override 250 public void incrSplitRequest() { 251 splitRequest.incr(); 252 } 253 254 @Override 255 public void incrSplitSuccess() { 256 splitSuccess.incr(); 257 } 258 259 @Override 260 public void updateSplitTime(long t) { 261 splitTimeHisto.add(t); 262 } 263 264 @Override 265 public void updateFlushTime(long t) { 266 flushTimeHisto.add(t); 267 } 268 269 @Override 270 public void updateFlushMemStoreSize(long bytes) { 271 flushMemstoreSizeHisto.add(bytes); 272 flushedMemstoreBytes.incr(bytes); 273 } 274 275 @Override 276 public void updateFlushOutputSize(long bytes) { 277 flushOutputSizeHisto.add(bytes); 278 flushedOutputBytes.incr(bytes); 279 } 280 281 @Override 282 public void updateCompactionTime(boolean isMajor, long t) { 283 compactionTimeHisto.add(t); 284 if (isMajor) { 285 majorCompactionTimeHisto.add(t); 286 } 287 } 288 289 @Override 290 public void updateCompactionInputFileCount(boolean isMajor, long c) { 291 compactionInputFileCountHisto.add(c); 292 if (isMajor) { 293 majorCompactionInputFileCountHisto.add(c); 294 } 295 } 296 297 @Override 298 public void updateCompactionInputSize(boolean isMajor, long bytes) { 299 compactionInputSizeHisto.add(bytes); 300 compactedInputBytes.incr(bytes); 301 if (isMajor) { 302 majorCompactionInputSizeHisto.add(bytes); 303 majorCompactedInputBytes.incr(bytes); 304 } 305 } 306 307 @Override 308 public void updateCompactionOutputFileCount(boolean isMajor, long c) { 309 compactionOutputFileCountHisto.add(c); 310 if (isMajor) { 311 majorCompactionOutputFileCountHisto.add(c); 312 } 313 } 314 315 @Override 316 public void updateCompactionOutputSize(boolean isMajor, long bytes) { 317 compactionOutputSizeHisto.add(bytes); 318 compactedOutputBytes.incr(bytes); 319 if (isMajor) { 320 majorCompactionOutputSizeHisto.add(bytes); 321 majorCompactedOutputBytes.incr(bytes); 322 } 323 } 324 325 /** 326 * Yes this is a get function that doesn't return anything. Thanks Hadoop for breaking all 327 * expectations of java programmers. Instead of returning anything Hadoop metrics expects 328 * getMetrics to push the metrics into the collector. 329 * 330 * @param metricsCollector Collector to accept metrics 331 * @param all push all or only changed? 332 */ 333 @Override 334 public void getMetrics(MetricsCollector metricsCollector, boolean all) { 335 MetricsRecordBuilder mrb = metricsCollector.addRecord(metricsName); 336 337 // rsWrap can be null because this function is called inside of init. 338 if (rsWrap != null) { 339 addGaugesToMetricsRecordBuilder(mrb) 340 .addCounter(Interns.info(TOTAL_REQUEST_COUNT, TOTAL_REQUEST_COUNT_DESC), 341 rsWrap.getTotalRequestCount()) 342 .addCounter(Interns.info(TOTAL_ROW_ACTION_REQUEST_COUNT, 343 TOTAL_ROW_ACTION_REQUEST_COUNT_DESC), rsWrap.getTotalRowActionRequestCount()) 344 .addCounter(Interns.info(READ_REQUEST_COUNT, READ_REQUEST_COUNT_DESC), 345 rsWrap.getReadRequestsCount()) 346 .addCounter(Interns.info(FILTERED_READ_REQUEST_COUNT, 347 FILTERED_READ_REQUEST_COUNT_DESC), rsWrap.getFilteredReadRequestsCount()) 348 .addCounter(Interns.info(WRITE_REQUEST_COUNT, WRITE_REQUEST_COUNT_DESC), 349 rsWrap.getWriteRequestsCount()) 350 .addCounter(Interns.info(RPC_GET_REQUEST_COUNT, RPC_GET_REQUEST_COUNT_DESC), 351 rsWrap.getRpcGetRequestsCount()) 352 .addCounter(Interns.info(RPC_FULL_SCAN_REQUEST_COUNT, RPC_FULL_SCAN_REQUEST_COUNT_DESC), 353 rsWrap.getRpcFullScanRequestsCount()) 354 .addCounter(Interns.info(RPC_SCAN_REQUEST_COUNT, RPC_SCAN_REQUEST_COUNT_DESC), 355 rsWrap.getRpcScanRequestsCount()) 356 .addCounter(Interns.info(RPC_MULTI_REQUEST_COUNT, RPC_MULTI_REQUEST_COUNT_DESC), 357 rsWrap.getRpcMultiRequestsCount()) 358 .addCounter(Interns.info(RPC_MUTATE_REQUEST_COUNT, RPC_MUTATE_REQUEST_COUNT_DESC), 359 rsWrap.getRpcMutateRequestsCount()) 360 .addCounter(Interns.info(CHECK_MUTATE_FAILED_COUNT, CHECK_MUTATE_FAILED_COUNT_DESC), 361 rsWrap.getCheckAndMutateChecksFailed()) 362 .addCounter(Interns.info(CHECK_MUTATE_PASSED_COUNT, CHECK_MUTATE_PASSED_COUNT_DESC), 363 rsWrap.getCheckAndMutateChecksPassed()) 364 .addCounter(Interns.info(BLOCK_CACHE_HIT_COUNT, BLOCK_CACHE_HIT_COUNT_DESC), 365 rsWrap.getBlockCacheHitCount()) 366 .addCounter(Interns.info(BLOCK_CACHE_PRIMARY_HIT_COUNT, 367 BLOCK_CACHE_PRIMARY_HIT_COUNT_DESC), rsWrap.getBlockCachePrimaryHitCount()) 368 .addCounter(Interns.info(BLOCK_CACHE_MISS_COUNT, BLOCK_COUNT_MISS_COUNT_DESC), 369 rsWrap.getBlockCacheMissCount()) 370 .addCounter(Interns.info(BLOCK_CACHE_PRIMARY_MISS_COUNT, 371 BLOCK_COUNT_PRIMARY_MISS_COUNT_DESC), rsWrap.getBlockCachePrimaryMissCount()) 372 .addCounter(Interns.info(BLOCK_CACHE_EVICTION_COUNT, BLOCK_CACHE_EVICTION_COUNT_DESC), 373 rsWrap.getBlockCacheEvictedCount()) 374 .addCounter(Interns.info(BLOCK_CACHE_PRIMARY_EVICTION_COUNT, 375 BLOCK_CACHE_PRIMARY_EVICTION_COUNT_DESC), 376 rsWrap.getBlockCachePrimaryEvictedCount()) 377 .addCounter(Interns.info(BLOCK_CACHE_FAILED_INSERTION_COUNT, 378 BLOCK_CACHE_FAILED_INSERTION_COUNT_DESC), 379 rsWrap.getBlockCacheFailedInsertions()) 380 .addCounter(Interns.info(BLOCK_CACHE_DATA_MISS_COUNT, ""), 381 rsWrap.getDataMissCount()) 382 .addCounter(Interns.info(BLOCK_CACHE_LEAF_INDEX_MISS_COUNT, ""), 383 rsWrap.getLeafIndexMissCount()) 384 .addCounter(Interns.info(BLOCK_CACHE_BLOOM_CHUNK_MISS_COUNT, ""), 385 rsWrap.getBloomChunkMissCount()) 386 .addCounter(Interns.info(BLOCK_CACHE_META_MISS_COUNT, ""), 387 rsWrap.getMetaMissCount()) 388 .addCounter(Interns.info(BLOCK_CACHE_ROOT_INDEX_MISS_COUNT, ""), 389 rsWrap.getRootIndexMissCount()) 390 .addCounter(Interns.info(BLOCK_CACHE_INTERMEDIATE_INDEX_MISS_COUNT, ""), 391 rsWrap.getIntermediateIndexMissCount()) 392 .addCounter(Interns.info(BLOCK_CACHE_FILE_INFO_MISS_COUNT, ""), 393 rsWrap.getFileInfoMissCount()) 394 .addCounter(Interns.info(BLOCK_CACHE_GENERAL_BLOOM_META_MISS_COUNT, ""), 395 rsWrap.getGeneralBloomMetaMissCount()) 396 .addCounter(Interns.info(BLOCK_CACHE_DELETE_FAMILY_BLOOM_MISS_COUNT, ""), 397 rsWrap.getDeleteFamilyBloomMissCount()) 398 .addCounter(Interns.info(BLOCK_CACHE_TRAILER_MISS_COUNT, ""), 399 rsWrap.getTrailerMissCount()) 400 .addCounter(Interns.info(BLOCK_CACHE_DATA_HIT_COUNT, ""), 401 rsWrap.getDataHitCount()) 402 .addCounter(Interns.info(BLOCK_CACHE_LEAF_INDEX_HIT_COUNT, ""), 403 rsWrap.getLeafIndexHitCount()) 404 .addCounter(Interns.info(BLOCK_CACHE_BLOOM_CHUNK_HIT_COUNT, ""), 405 rsWrap.getBloomChunkHitCount()) 406 .addCounter(Interns.info(BLOCK_CACHE_META_HIT_COUNT, ""), 407 rsWrap.getMetaHitCount()) 408 .addCounter(Interns.info(BLOCK_CACHE_ROOT_INDEX_HIT_COUNT, ""), 409 rsWrap.getRootIndexHitCount()) 410 .addCounter(Interns.info(BLOCK_CACHE_INTERMEDIATE_INDEX_HIT_COUNT, ""), 411 rsWrap.getIntermediateIndexHitCount()) 412 .addCounter(Interns.info(BLOCK_CACHE_FILE_INFO_HIT_COUNT, ""), 413 rsWrap.getFileInfoHitCount()) 414 .addCounter(Interns.info(BLOCK_CACHE_GENERAL_BLOOM_META_HIT_COUNT, ""), 415 rsWrap.getGeneralBloomMetaHitCount()) 416 .addCounter(Interns.info(BLOCK_CACHE_DELETE_FAMILY_BLOOM_HIT_COUNT, ""), 417 rsWrap.getDeleteFamilyBloomHitCount()) 418 .addCounter(Interns.info(BLOCK_CACHE_TRAILER_HIT_COUNT, ""), 419 rsWrap.getTrailerHitCount()) 420 .addCounter(Interns.info(UPDATES_BLOCKED_TIME, UPDATES_BLOCKED_DESC), 421 rsWrap.getUpdatesBlockedTime()) 422 .addCounter(Interns.info(FLUSHED_CELLS, FLUSHED_CELLS_DESC), 423 rsWrap.getFlushedCellsCount()) 424 .addCounter(Interns.info(COMPACTED_CELLS, COMPACTED_CELLS_DESC), 425 rsWrap.getCompactedCellsCount()) 426 .addCounter(Interns.info(MAJOR_COMPACTED_CELLS, MAJOR_COMPACTED_CELLS_DESC), 427 rsWrap.getMajorCompactedCellsCount()) 428 .addCounter(Interns.info(FLUSHED_CELLS_SIZE, FLUSHED_CELLS_SIZE_DESC), 429 rsWrap.getFlushedCellsSize()) 430 .addCounter(Interns.info(COMPACTED_CELLS_SIZE, COMPACTED_CELLS_SIZE_DESC), 431 rsWrap.getCompactedCellsSize()) 432 .addCounter(Interns.info(MAJOR_COMPACTED_CELLS_SIZE, MAJOR_COMPACTED_CELLS_SIZE_DESC), 433 rsWrap.getMajorCompactedCellsSize()) 434 .addCounter(Interns.info(CELLS_COUNT_COMPACTED_FROM_MOB, 435 CELLS_COUNT_COMPACTED_FROM_MOB_DESC), rsWrap.getCellsCountCompactedFromMob()) 436 .addCounter(Interns.info(CELLS_COUNT_COMPACTED_TO_MOB, 437 CELLS_COUNT_COMPACTED_TO_MOB_DESC), rsWrap.getCellsCountCompactedToMob()) 438 .addCounter(Interns.info(CELLS_SIZE_COMPACTED_FROM_MOB, 439 CELLS_SIZE_COMPACTED_FROM_MOB_DESC), rsWrap.getCellsSizeCompactedFromMob()) 440 .addCounter(Interns.info(CELLS_SIZE_COMPACTED_TO_MOB, 441 CELLS_SIZE_COMPACTED_TO_MOB_DESC), rsWrap.getCellsSizeCompactedToMob()) 442 .addCounter(Interns.info(MOB_FLUSH_COUNT, MOB_FLUSH_COUNT_DESC), 443 rsWrap.getMobFlushCount()) 444 .addCounter(Interns.info(MOB_FLUSHED_CELLS_COUNT, MOB_FLUSHED_CELLS_COUNT_DESC), 445 rsWrap.getMobFlushedCellsCount()) 446 .addCounter(Interns.info(MOB_FLUSHED_CELLS_SIZE, MOB_FLUSHED_CELLS_SIZE_DESC), 447 rsWrap.getMobFlushedCellsSize()) 448 .addCounter(Interns.info(MOB_SCAN_CELLS_COUNT, MOB_SCAN_CELLS_COUNT_DESC), 449 rsWrap.getMobScanCellsCount()) 450 .addCounter(Interns.info(MOB_SCAN_CELLS_SIZE, MOB_SCAN_CELLS_SIZE_DESC), 451 rsWrap.getMobScanCellsSize()) 452 .addCounter(Interns.info(MOB_FILE_CACHE_ACCESS_COUNT, 453 MOB_FILE_CACHE_ACCESS_COUNT_DESC), rsWrap.getMobFileCacheAccessCount()) 454 .addCounter(Interns.info(MOB_FILE_CACHE_MISS_COUNT, MOB_FILE_CACHE_MISS_COUNT_DESC), 455 rsWrap.getMobFileCacheMissCount()) 456 .addCounter(Interns.info(MOB_FILE_CACHE_EVICTED_COUNT, 457 MOB_FILE_CACHE_EVICTED_COUNT_DESC), rsWrap.getMobFileCacheEvictedCount()) 458 .addCounter(Interns.info(HEDGED_READS, HEDGED_READS_DESC), rsWrap.getHedgedReadOps()) 459 .addCounter(Interns.info(HEDGED_READ_WINS, HEDGED_READ_WINS_DESC), 460 rsWrap.getHedgedReadWins()) 461 .addCounter(Interns.info(HEDGED_READ_IN_CUR_THREAD, HEDGED_READ_IN_CUR_THREAD_DESC), 462 rsWrap.getHedgedReadOpsInCurThread()) 463 .addCounter(Interns.info(BLOCKED_REQUESTS_COUNT, BLOCKED_REQUESTS_COUNT_DESC), 464 rsWrap.getBlockedRequestsCount()) 465 .tag(Interns.info(ZOOKEEPER_QUORUM_NAME, ZOOKEEPER_QUORUM_DESC), 466 rsWrap.getZookeeperQuorum()) 467 .tag(Interns.info(SERVER_NAME_NAME, SERVER_NAME_DESC), rsWrap.getServerName()) 468 .tag(Interns.info(CLUSTER_ID_NAME, CLUSTER_ID_DESC), rsWrap.getClusterId()); 469 } 470 471 metricsRegistry.snapshot(mrb, all); 472 473 // source is registered in supers constructor, sometimes called before the whole initialization. 474 if (metricsAdapter != null) { 475 // snapshot MetricRegistry as well 476 metricsAdapter.snapshotAllMetrics(registry, mrb); 477 } 478 } 479 480 private MetricsRecordBuilder addGaugesToMetricsRecordBuilder(MetricsRecordBuilder mrb) { 481 return mrb.addGauge(Interns.info(REGION_COUNT, REGION_COUNT_DESC), rsWrap.getNumOnlineRegions()) 482 .addGauge(Interns.info(STORE_COUNT, STORE_COUNT_DESC), rsWrap.getNumStores()) 483 .addGauge(Interns.info(WALFILE_COUNT, WALFILE_COUNT_DESC), rsWrap.getNumWALFiles()) 484 .addGauge(Interns.info(WALFILE_SIZE, WALFILE_SIZE_DESC), rsWrap.getWALFileSize()) 485 .addGauge(Interns.info(STOREFILE_COUNT, STOREFILE_COUNT_DESC), 486 rsWrap.getNumStoreFiles()) 487 .addGauge(Interns.info(MEMSTORE_SIZE, MEMSTORE_SIZE_DESC), rsWrap.getMemStoreSize()) 488 .addGauge(Interns.info(STOREFILE_SIZE, STOREFILE_SIZE_DESC), rsWrap.getStoreFileSize()) 489 .addGauge(Interns.info(MAX_STORE_FILE_AGE, MAX_STORE_FILE_AGE_DESC), 490 rsWrap.getMaxStoreFileAge()) 491 .addGauge(Interns.info(MIN_STORE_FILE_AGE, MIN_STORE_FILE_AGE_DESC), 492 rsWrap.getMinStoreFileAge()) 493 .addGauge(Interns.info(AVG_STORE_FILE_AGE, AVG_STORE_FILE_AGE_DESC), 494 rsWrap.getAvgStoreFileAge()) 495 .addGauge(Interns.info(NUM_REFERENCE_FILES, NUM_REFERENCE_FILES_DESC), 496 rsWrap.getNumReferenceFiles()) 497 .addGauge(Interns.info(RS_START_TIME_NAME, RS_START_TIME_DESC), rsWrap.getStartCode()) 498 .addGauge(Interns.info(AVERAGE_REGION_SIZE, AVERAGE_REGION_SIZE_DESC), 499 rsWrap.getAverageRegionSize()) 500 .addGauge(Interns.info(STOREFILE_INDEX_SIZE, STOREFILE_INDEX_SIZE_DESC), 501 rsWrap.getStoreFileIndexSize()) 502 .addGauge(Interns.info(STATIC_INDEX_SIZE, STATIC_INDEX_SIZE_DESC), 503 rsWrap.getTotalStaticIndexSize()) 504 .addGauge(Interns.info(STATIC_BLOOM_SIZE, STATIC_BLOOM_SIZE_DESC), 505 rsWrap.getTotalStaticBloomSize()) 506 .addGauge(Interns.info(NUMBER_OF_MUTATIONS_WITHOUT_WAL, 507 NUMBER_OF_MUTATIONS_WITHOUT_WAL_DESC), rsWrap.getNumMutationsWithoutWAL()) 508 .addGauge(Interns.info(DATA_SIZE_WITHOUT_WAL, DATA_SIZE_WITHOUT_WAL_DESC), 509 rsWrap.getDataInMemoryWithoutWAL()) 510 .addGauge(Interns.info(PERCENT_FILES_LOCAL, PERCENT_FILES_LOCAL_DESC), 511 rsWrap.getPercentFileLocal()) 512 .addGauge(Interns.info(PERCENT_FILES_LOCAL_SECONDARY_REGIONS, 513 PERCENT_FILES_LOCAL_SECONDARY_REGIONS_DESC), 514 rsWrap.getPercentFileLocalSecondaryRegions()) 515 .addGauge(Interns.info(TOTAL_BYTES_READ, 516 TOTAL_BYTES_READ_DESC), 517 rsWrap.getTotalBytesRead()) 518 .addGauge(Interns.info(LOCAL_BYTES_READ, 519 LOCAL_BYTES_READ_DESC), 520 rsWrap.getLocalBytesRead()) 521 .addGauge(Interns.info(SHORTCIRCUIT_BYTES_READ, 522 SHORTCIRCUIT_BYTES_READ_DESC), 523 rsWrap.getShortCircuitBytesRead()) 524 .addGauge(Interns.info(ZEROCOPY_BYTES_READ, 525 ZEROCOPY_BYTES_READ_DESC), 526 rsWrap.getZeroCopyBytesRead()) 527 .addGauge(Interns.info(SPLIT_QUEUE_LENGTH, SPLIT_QUEUE_LENGTH_DESC), 528 rsWrap.getSplitQueueSize()) 529 .addGauge(Interns.info(COMPACTION_QUEUE_LENGTH, COMPACTION_QUEUE_LENGTH_DESC), 530 rsWrap.getCompactionQueueSize()) 531 .addGauge(Interns.info(SMALL_COMPACTION_QUEUE_LENGTH, 532 SMALL_COMPACTION_QUEUE_LENGTH_DESC), rsWrap.getSmallCompactionQueueSize()) 533 .addGauge(Interns.info(LARGE_COMPACTION_QUEUE_LENGTH, 534 LARGE_COMPACTION_QUEUE_LENGTH_DESC), rsWrap.getLargeCompactionQueueSize()) 535 .addGauge(Interns.info(FLUSH_QUEUE_LENGTH, FLUSH_QUEUE_LENGTH_DESC), 536 rsWrap.getFlushQueueSize()) 537 .addGauge(Interns.info(BLOCK_CACHE_FREE_SIZE, BLOCK_CACHE_FREE_DESC), 538 rsWrap.getBlockCacheFreeSize()) 539 .addGauge(Interns.info(BLOCK_CACHE_COUNT, BLOCK_CACHE_COUNT_DESC), 540 rsWrap.getBlockCacheCount()) 541 .addGauge(Interns.info(BLOCK_CACHE_SIZE, BLOCK_CACHE_SIZE_DESC), 542 rsWrap.getBlockCacheSize()) 543 .addGauge(Interns.info(BLOCK_CACHE_HIT_PERCENT, BLOCK_CACHE_HIT_PERCENT_DESC), 544 rsWrap.getBlockCacheHitPercent()) 545 .addGauge(Interns.info(BLOCK_CACHE_EXPRESS_HIT_PERCENT, 546 BLOCK_CACHE_EXPRESS_HIT_PERCENT_DESC), rsWrap.getBlockCacheHitCachingPercent()) 547 .addGauge(Interns.info(L1_CACHE_HIT_COUNT, L1_CACHE_HIT_COUNT_DESC), 548 rsWrap.getL1CacheHitCount()) 549 .addGauge(Interns.info(L1_CACHE_MISS_COUNT, L1_CACHE_MISS_COUNT_DESC), 550 rsWrap.getL1CacheMissCount()) 551 .addGauge(Interns.info(L1_CACHE_HIT_RATIO, L1_CACHE_HIT_RATIO_DESC), 552 rsWrap.getL1CacheHitRatio()) 553 .addGauge(Interns.info(L1_CACHE_MISS_RATIO, L1_CACHE_MISS_RATIO_DESC), 554 rsWrap.getL1CacheMissRatio()) 555 .addGauge(Interns.info(L2_CACHE_HIT_COUNT, L2_CACHE_HIT_COUNT_DESC), 556 rsWrap.getL2CacheHitCount()) 557 .addGauge(Interns.info(L2_CACHE_MISS_COUNT, L2_CACHE_MISS_COUNT_DESC), 558 rsWrap.getL2CacheMissCount()) 559 .addGauge(Interns.info(L2_CACHE_HIT_RATIO, L2_CACHE_HIT_RATIO_DESC), 560 rsWrap.getL2CacheHitRatio()) 561 .addGauge(Interns.info(L2_CACHE_MISS_RATIO, L2_CACHE_MISS_RATIO_DESC), 562 rsWrap.getL2CacheMissRatio()) 563 .addGauge(Interns.info(MOB_FILE_CACHE_COUNT, MOB_FILE_CACHE_COUNT_DESC), 564 rsWrap.getMobFileCacheCount()) 565 .addGauge(Interns.info(MOB_FILE_CACHE_HIT_PERCENT, MOB_FILE_CACHE_HIT_PERCENT_DESC), 566 rsWrap.getMobFileCacheHitPercent()) 567 .addGauge(Interns.info(READ_REQUEST_RATE_PER_SECOND, READ_REQUEST_RATE_DESC), 568 rsWrap.getReadRequestsRatePerSecond()) 569 .addGauge(Interns.info(WRITE_REQUEST_RATE_PER_SECOND, WRITE_REQUEST_RATE_DESC), 570 rsWrap.getWriteRequestsRatePerSecond()) 571 .addGauge(Interns.info(BYTE_BUFF_ALLOCATOR_HEAP_ALLOCATION_BYTES, 572 BYTE_BUFF_ALLOCATOR_HEAP_ALLOCATION_BYTES_DESC), 573 rsWrap.getByteBuffAllocatorHeapAllocationBytes()) 574 .addGauge(Interns.info(BYTE_BUFF_ALLOCATOR_POOL_ALLOCATION_BYTES, 575 BYTE_BUFF_ALLOCATOR_POOL_ALLOCATION_BYTES_DESC), 576 rsWrap.getByteBuffAllocatorPoolAllocationBytes()) 577 .addGauge(Interns.info(BYTE_BUFF_ALLOCATOR_HEAP_ALLOCATION_RATIO, 578 BYTE_BUFF_ALLOCATOR_HEAP_ALLOCATION_RATIO_DESC), 579 rsWrap.getByteBuffAllocatorHeapAllocRatio()) 580 .addGauge(Interns.info(BYTE_BUFF_ALLOCATOR_TOTAL_BUFFER_COUNT, 581 BYTE_BUFF_ALLOCATOR_TOTAL_BUFFER_COUNT_DESC), 582 rsWrap.getByteBuffAllocatorTotalBufferCount()) 583 .addGauge(Interns.info(BYTE_BUFF_ALLOCATOR_USED_BUFFER_COUNT, 584 BYTE_BUFF_ALLOCATOR_USED_BUFFER_COUNT_DESC), 585 rsWrap.getByteBuffAllocatorUsedBufferCount()); 586 } 587 588 @Override 589 public void incInfoThresholdExceeded(int count) { 590 infoPauseThresholdExceeded.incr(count); 591 } 592 593 @Override 594 public void incWarnThresholdExceeded(int count) { 595 warnPauseThresholdExceeded.incr(count); 596 } 597 598 @Override 599 public void updatePauseTimeWithGc(long t) { 600 pausesWithGc.add(t); 601 } 602 603 @Override 604 public void updatePauseTimeWithoutGc(long t) { 605 pausesWithoutGc.add(t); 606 } 607 608 @Override 609 public void updateDeleteBatch(long t) { 610 deleteBatchHisto.add(t); 611 } 612 613 @Override 614 public void updateCheckAndDelete(long t) { 615 checkAndDeleteHisto.add(t); 616 } 617 618 @Override 619 public void updateCheckAndPut(long t) { 620 checkAndPutHisto.add(t); 621 } 622 623 @Override 624 public void updateCheckAndMutate(long t) { 625 checkAndMutateHisto.add(t); 626 } 627 628 @Override 629 public void updatePutBatch(long t) { 630 putBatchHisto.add(t); 631 } 632}