HBASE-27188 Report maxStoreFileCount in jmx (#4609)

Signed-off-by: Andrew Purtell <apurtell@apache.org>
This commit is contained in:
Bryan Beaudreault 2022-07-11 22:11:58 -04:00 committed by GitHub
parent 779c4e2316
commit 6e66e78177
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 51 additions and 0 deletions

View File

@ -581,6 +581,8 @@ public interface MetricsRegionServerSource extends BaseSource, JvmPauseMonitorSo
String RPC_MUTATE_REQUEST_COUNT = "rpcMutateRequestCount"; String RPC_MUTATE_REQUEST_COUNT = "rpcMutateRequestCount";
String RPC_MUTATE_REQUEST_COUNT_DESC = String RPC_MUTATE_REQUEST_COUNT_DESC =
"Number of rpc mutation requests this RegionServer has answered."; "Number of rpc mutation requests this RegionServer has answered.";
String MAX_STOREFILE_COUNT = "maxStoreFileCount";
String MAX_STOREFILE_COUNT_DESC = "Max store file count across all regions";
String AVERAGE_REGION_SIZE = "averageRegionSize"; String AVERAGE_REGION_SIZE = "averageRegionSize";
String AVERAGE_REGION_SIZE_DESC = String AVERAGE_REGION_SIZE_DESC =
"Average region size over the RegionServer including memstore and storefile sizes."; "Average region size over the RegionServer including memstore and storefile sizes.";

View File

@ -483,6 +483,8 @@ public class MetricsRegionServerSourceImpl extends BaseSourceImpl
.addGauge(Interns.info(WALFILE_COUNT, WALFILE_COUNT_DESC), rsWrap.getNumWALFiles()) .addGauge(Interns.info(WALFILE_COUNT, WALFILE_COUNT_DESC), rsWrap.getNumWALFiles())
.addGauge(Interns.info(WALFILE_SIZE, WALFILE_SIZE_DESC), rsWrap.getWALFileSize()) .addGauge(Interns.info(WALFILE_SIZE, WALFILE_SIZE_DESC), rsWrap.getWALFileSize())
.addGauge(Interns.info(STOREFILE_COUNT, STOREFILE_COUNT_DESC), rsWrap.getNumStoreFiles()) .addGauge(Interns.info(STOREFILE_COUNT, STOREFILE_COUNT_DESC), rsWrap.getNumStoreFiles())
.addGauge(Interns.info(MAX_STOREFILE_COUNT, MAX_STOREFILE_COUNT_DESC),
rsWrap.getMaxStoreFiles())
.addGauge(Interns.info(MEMSTORE_SIZE, MEMSTORE_SIZE_DESC), rsWrap.getMemStoreSize()) .addGauge(Interns.info(MEMSTORE_SIZE, MEMSTORE_SIZE_DESC), rsWrap.getMemStoreSize())
.addGauge(Interns.info(STOREFILE_SIZE, STOREFILE_SIZE_DESC), rsWrap.getStoreFileSize()) .addGauge(Interns.info(STOREFILE_SIZE, STOREFILE_SIZE_DESC), rsWrap.getStoreFileSize())
.addGauge(Interns.info(STOREFILE_SIZE_GROWTH_RATE, STOREFILE_SIZE_GROWTH_RATE_DESC), .addGauge(Interns.info(STOREFILE_SIZE_GROWTH_RATE, STOREFILE_SIZE_GROWTH_RATE_DESC),

View File

@ -91,6 +91,11 @@ public interface MetricsRegionServerWrapper {
*/ */
long getNumStoreFiles(); long getNumStoreFiles();
/**
* Get the max number of store files across all regions of this region server.
*/
long getMaxStoreFiles();
/** /**
* Get the size of the memstore on this region server. * Get the size of the memstore on this region server.
*/ */

View File

@ -299,6 +299,10 @@ public class MetricsTableSourceImpl implements MetricsTableSource {
Interns.info(tableNamePrefix + MetricsRegionServerSource.STOREFILE_COUNT, Interns.info(tableNamePrefix + MetricsRegionServerSource.STOREFILE_COUNT,
MetricsRegionServerSource.STOREFILE_COUNT_DESC), MetricsRegionServerSource.STOREFILE_COUNT_DESC),
tableWrapperAgg.getNumStoreFiles(tableName.getNameAsString())); tableWrapperAgg.getNumStoreFiles(tableName.getNameAsString()));
mrb.addGauge(
Interns.info(tableNamePrefix + MetricsRegionServerSource.MAX_STOREFILE_COUNT,
MetricsRegionServerSource.MAX_STOREFILE_COUNT_DESC),
tableWrapperAgg.getMaxStoreFiles(tableName.getNameAsString()));
mrb.addGauge( mrb.addGauge(
Interns.info(tableNamePrefix + MetricsRegionServerSource.STOREFILE_SIZE, Interns.info(tableNamePrefix + MetricsRegionServerSource.STOREFILE_SIZE,
MetricsRegionServerSource.STOREFILE_SIZE_DESC), MetricsRegionServerSource.STOREFILE_SIZE_DESC),

View File

@ -88,6 +88,11 @@ public interface MetricsTableWrapperAggregate {
*/ */
long getNumStoreFiles(String table); long getNumStoreFiles(String table);
/**
* Get the max number of store files across all regions of this table
*/
long getMaxStoreFiles(String table);
/** /**
* @return Max age of store files for this table * @return Max age of store files for this table
*/ */

View File

@ -82,6 +82,11 @@ public class MetricsTableWrapperStub implements MetricsTableWrapperAggregate {
return 33; return 33;
} }
@Override
public long getMaxStoreFiles(String table) {
return 8;
}
@Override @Override
public long getMaxStoreFileAge(String table) { public long getMaxStoreFileAge(String table) {
return 44; return 44;

View File

@ -82,6 +82,7 @@ class MetricsRegionServerWrapperImpl implements MetricsRegionServerWrapper {
private volatile long offHeapMemstoreSize = 0; private volatile long offHeapMemstoreSize = 0;
private volatile long storeFileSize = 0; private volatile long storeFileSize = 0;
private volatile double storeFileSizeGrowthRate = 0; private volatile double storeFileSizeGrowthRate = 0;
private volatile long maxStoreFileCount = 0;
private volatile long maxStoreFileAge = 0; private volatile long maxStoreFileAge = 0;
private volatile long minStoreFileAge = 0; private volatile long minStoreFileAge = 0;
private volatile long avgStoreFileAge = 0; private volatile long avgStoreFileAge = 0;
@ -480,6 +481,11 @@ class MetricsRegionServerWrapperImpl implements MetricsRegionServerWrapper {
return numStoreFiles; return numStoreFiles;
} }
@Override
public long getMaxStoreFiles() {
return maxStoreFileCount;
}
@Override @Override
public long getMaxStoreFileAge() { public long getMaxStoreFileAge() {
return maxStoreFileAge; return maxStoreFileAge;
@ -763,6 +769,7 @@ class MetricsRegionServerWrapperImpl implements MetricsRegionServerWrapper {
long tempNumStores = 0, tempNumStoreFiles = 0, tempStoreFileSize = 0; long tempNumStores = 0, tempNumStoreFiles = 0, tempStoreFileSize = 0;
long tempMemstoreSize = 0, tempOnHeapMemstoreSize = 0, tempOffHeapMemstoreSize = 0; long tempMemstoreSize = 0, tempOnHeapMemstoreSize = 0, tempOffHeapMemstoreSize = 0;
long tempMaxStoreFileAge = 0, tempNumReferenceFiles = 0; long tempMaxStoreFileAge = 0, tempNumReferenceFiles = 0;
long tempMaxStoreFileCount = 0;
long avgAgeNumerator = 0, numHFiles = 0; long avgAgeNumerator = 0, numHFiles = 0;
long tempMinStoreFileAge = Long.MAX_VALUE; long tempMinStoreFileAge = Long.MAX_VALUE;
long tempFilteredReadRequestsCount = 0, tempCpRequestsCount = 0; long tempFilteredReadRequestsCount = 0, tempCpRequestsCount = 0;
@ -846,6 +853,8 @@ class MetricsRegionServerWrapperImpl implements MetricsRegionServerWrapper {
tempOffHeapMemstoreSize += store.getMemStoreSize().getOffHeapSize(); tempOffHeapMemstoreSize += store.getMemStoreSize().getOffHeapSize();
tempStoreFileSize += store.getStorefilesSize(); tempStoreFileSize += store.getStorefilesSize();
tempMaxStoreFileCount = Math.max(tempMaxStoreFileCount, store.getStorefilesCount());
OptionalLong storeMaxStoreFileAge = store.getMaxStoreFileAge(); OptionalLong storeMaxStoreFileAge = store.getMaxStoreFileAge();
if ( if (
storeMaxStoreFileAge.isPresent() storeMaxStoreFileAge.isPresent()
@ -952,6 +961,7 @@ class MetricsRegionServerWrapperImpl implements MetricsRegionServerWrapper {
onHeapMemstoreSize = tempOnHeapMemstoreSize; onHeapMemstoreSize = tempOnHeapMemstoreSize;
offHeapMemstoreSize = tempOffHeapMemstoreSize; offHeapMemstoreSize = tempOffHeapMemstoreSize;
storeFileSize = tempStoreFileSize; storeFileSize = tempStoreFileSize;
maxStoreFileCount = tempMaxStoreFileCount;
maxStoreFileAge = tempMaxStoreFileAge; maxStoreFileAge = tempMaxStoreFileAge;
if (regionCount > 0) { if (regionCount > 0) {
averageRegionSize = (memstoreSize + storeFileSize) / regionCount; averageRegionSize = (memstoreSize + storeFileSize) / regionCount;

View File

@ -75,6 +75,7 @@ public class MetricsTableWrapperAggregateImpl implements MetricsTableWrapperAggr
familyName = store.getColumnFamilyName(); familyName = store.getColumnFamilyName();
mt.storeFileCount += store.getStorefilesCount(); mt.storeFileCount += store.getStorefilesCount();
mt.maxStoreFileCount = Math.max(mt.maxStoreFileCount, store.getStorefilesCount());
mt.memstoreSize += (store.getMemStoreSize().getDataSize() mt.memstoreSize += (store.getMemStoreSize().getDataSize()
+ store.getMemStoreSize().getHeapSize() + store.getMemStoreSize().getOffHeapSize()); + store.getMemStoreSize().getHeapSize() + store.getMemStoreSize().getOffHeapSize());
mt.storeFileSize += store.getStorefilesSize(); mt.storeFileSize += store.getStorefilesSize();
@ -263,6 +264,15 @@ public class MetricsTableWrapperAggregateImpl implements MetricsTableWrapperAggr
return metricsTable.storeFileCount; return metricsTable.storeFileCount;
} }
@Override
public long getMaxStoreFiles(String table) {
MetricsTableValues metricsTable = metricsTableMap.get(TableName.valueOf(table));
if (metricsTable == null) {
return 0;
}
return metricsTable.maxStoreFileCount;
}
@Override @Override
public long getMaxStoreFileAge(String table) { public long getMaxStoreFileAge(String table) {
MetricsTableValues metricsTable = metricsTableMap.get(TableName.valueOf(table)); MetricsTableValues metricsTable = metricsTableMap.get(TableName.valueOf(table));
@ -334,6 +344,7 @@ public class MetricsTableWrapperAggregateImpl implements MetricsTableWrapperAggr
long regionCount; long regionCount;
long storeCount; long storeCount;
long storeFileCount; long storeFileCount;
long maxStoreFileCount;
long storeFileSize; long storeFileSize;
long maxStoreFileAge; long maxStoreFileAge;
long minStoreFileAge = Long.MAX_VALUE; long minStoreFileAge = Long.MAX_VALUE;

View File

@ -62,6 +62,11 @@ public class MetricsRegionServerWrapperStub implements MetricsRegionServerWrappe
return 300; return 300;
} }
@Override
public long getMaxStoreFiles() {
return 23;
}
@Override @Override
public long getMemStoreSize() { public long getMemStoreSize() {
return 1025; return 1025;

View File

@ -72,6 +72,7 @@ public class TestMetricsRegionServer {
HELPER.assertGauge("regionServerStartTime", 100, serverSource); HELPER.assertGauge("regionServerStartTime", 100, serverSource);
HELPER.assertGauge("regionCount", 101, serverSource); HELPER.assertGauge("regionCount", 101, serverSource);
HELPER.assertGauge("storeCount", 2, serverSource); HELPER.assertGauge("storeCount", 2, serverSource);
HELPER.assertGauge("maxStoreFileCount", 23, serverSource);
HELPER.assertGauge("maxStoreFileAge", 2, serverSource); HELPER.assertGauge("maxStoreFileAge", 2, serverSource);
HELPER.assertGauge("minStoreFileAge", 2, serverSource); HELPER.assertGauge("minStoreFileAge", 2, serverSource);
HELPER.assertGauge("avgStoreFileAge", 2, serverSource); HELPER.assertGauge("avgStoreFileAge", 2, serverSource);

View File

@ -91,6 +91,7 @@ public class TestMetricsTableAggregate {
HELPER.assertGauge(pre + "regionCount", 11, agg); HELPER.assertGauge(pre + "regionCount", 11, agg);
HELPER.assertGauge(pre + "storeCount", 22, agg); HELPER.assertGauge(pre + "storeCount", 22, agg);
HELPER.assertGauge(pre + "storeFileCount", 33, agg); HELPER.assertGauge(pre + "storeFileCount", 33, agg);
HELPER.assertGauge(pre + "maxStoreFileCount", 8, agg);
HELPER.assertGauge(pre + "maxStoreFileAge", 44, agg); HELPER.assertGauge(pre + "maxStoreFileAge", 44, agg);
HELPER.assertGauge(pre + "minStoreFileAge", 55, agg); HELPER.assertGauge(pre + "minStoreFileAge", 55, agg);
HELPER.assertGauge(pre + "avgStoreFileAge", 66, agg); HELPER.assertGauge(pre + "avgStoreFileAge", 66, agg);