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