HBASE-27188 Report maxStoreFileCount in jmx (#4609)
Signed-off-by: Andrew Purtell <apurtell@apache.org>
This commit is contained in:
parent
779c4e2316
commit
6e66e78177
|
@ -581,6 +581,8 @@ public interface MetricsRegionServerSource extends BaseSource, JvmPauseMonitorSo
|
|||
String RPC_MUTATE_REQUEST_COUNT = "rpcMutateRequestCount";
|
||||
String RPC_MUTATE_REQUEST_COUNT_DESC =
|
||||
"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_DESC =
|
||||
"Average region size over the RegionServer including memstore and storefile sizes.";
|
||||
|
|
|
@ -483,6 +483,8 @@ public class MetricsRegionServerSourceImpl extends BaseSourceImpl
|
|||
.addGauge(Interns.info(WALFILE_COUNT, WALFILE_COUNT_DESC), rsWrap.getNumWALFiles())
|
||||
.addGauge(Interns.info(WALFILE_SIZE, WALFILE_SIZE_DESC), rsWrap.getWALFileSize())
|
||||
.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(STOREFILE_SIZE, STOREFILE_SIZE_DESC), rsWrap.getStoreFileSize())
|
||||
.addGauge(Interns.info(STOREFILE_SIZE_GROWTH_RATE, STOREFILE_SIZE_GROWTH_RATE_DESC),
|
||||
|
|
|
@ -91,6 +91,11 @@ public interface MetricsRegionServerWrapper {
|
|||
*/
|
||||
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.
|
||||
*/
|
||||
|
|
|
@ -299,6 +299,10 @@ public class MetricsTableSourceImpl implements MetricsTableSource {
|
|||
Interns.info(tableNamePrefix + MetricsRegionServerSource.STOREFILE_COUNT,
|
||||
MetricsRegionServerSource.STOREFILE_COUNT_DESC),
|
||||
tableWrapperAgg.getNumStoreFiles(tableName.getNameAsString()));
|
||||
mrb.addGauge(
|
||||
Interns.info(tableNamePrefix + MetricsRegionServerSource.MAX_STOREFILE_COUNT,
|
||||
MetricsRegionServerSource.MAX_STOREFILE_COUNT_DESC),
|
||||
tableWrapperAgg.getMaxStoreFiles(tableName.getNameAsString()));
|
||||
mrb.addGauge(
|
||||
Interns.info(tableNamePrefix + MetricsRegionServerSource.STOREFILE_SIZE,
|
||||
MetricsRegionServerSource.STOREFILE_SIZE_DESC),
|
||||
|
|
|
@ -88,6 +88,11 @@ public interface MetricsTableWrapperAggregate {
|
|||
*/
|
||||
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
|
||||
*/
|
||||
|
|
|
@ -82,6 +82,11 @@ public class MetricsTableWrapperStub implements MetricsTableWrapperAggregate {
|
|||
return 33;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getMaxStoreFiles(String table) {
|
||||
return 8;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getMaxStoreFileAge(String table) {
|
||||
return 44;
|
||||
|
|
|
@ -82,6 +82,7 @@ class MetricsRegionServerWrapperImpl implements MetricsRegionServerWrapper {
|
|||
private volatile long offHeapMemstoreSize = 0;
|
||||
private volatile long storeFileSize = 0;
|
||||
private volatile double storeFileSizeGrowthRate = 0;
|
||||
private volatile long maxStoreFileCount = 0;
|
||||
private volatile long maxStoreFileAge = 0;
|
||||
private volatile long minStoreFileAge = 0;
|
||||
private volatile long avgStoreFileAge = 0;
|
||||
|
@ -480,6 +481,11 @@ class MetricsRegionServerWrapperImpl implements MetricsRegionServerWrapper {
|
|||
return numStoreFiles;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getMaxStoreFiles() {
|
||||
return maxStoreFileCount;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getMaxStoreFileAge() {
|
||||
return maxStoreFileAge;
|
||||
|
@ -763,6 +769,7 @@ class MetricsRegionServerWrapperImpl implements MetricsRegionServerWrapper {
|
|||
long tempNumStores = 0, tempNumStoreFiles = 0, tempStoreFileSize = 0;
|
||||
long tempMemstoreSize = 0, tempOnHeapMemstoreSize = 0, tempOffHeapMemstoreSize = 0;
|
||||
long tempMaxStoreFileAge = 0, tempNumReferenceFiles = 0;
|
||||
long tempMaxStoreFileCount = 0;
|
||||
long avgAgeNumerator = 0, numHFiles = 0;
|
||||
long tempMinStoreFileAge = Long.MAX_VALUE;
|
||||
long tempFilteredReadRequestsCount = 0, tempCpRequestsCount = 0;
|
||||
|
@ -846,6 +853,8 @@ class MetricsRegionServerWrapperImpl implements MetricsRegionServerWrapper {
|
|||
tempOffHeapMemstoreSize += store.getMemStoreSize().getOffHeapSize();
|
||||
tempStoreFileSize += store.getStorefilesSize();
|
||||
|
||||
tempMaxStoreFileCount = Math.max(tempMaxStoreFileCount, store.getStorefilesCount());
|
||||
|
||||
OptionalLong storeMaxStoreFileAge = store.getMaxStoreFileAge();
|
||||
if (
|
||||
storeMaxStoreFileAge.isPresent()
|
||||
|
@ -952,6 +961,7 @@ class MetricsRegionServerWrapperImpl implements MetricsRegionServerWrapper {
|
|||
onHeapMemstoreSize = tempOnHeapMemstoreSize;
|
||||
offHeapMemstoreSize = tempOffHeapMemstoreSize;
|
||||
storeFileSize = tempStoreFileSize;
|
||||
maxStoreFileCount = tempMaxStoreFileCount;
|
||||
maxStoreFileAge = tempMaxStoreFileAge;
|
||||
if (regionCount > 0) {
|
||||
averageRegionSize = (memstoreSize + storeFileSize) / regionCount;
|
||||
|
|
|
@ -75,6 +75,7 @@ public class MetricsTableWrapperAggregateImpl implements MetricsTableWrapperAggr
|
|||
familyName = store.getColumnFamilyName();
|
||||
|
||||
mt.storeFileCount += store.getStorefilesCount();
|
||||
mt.maxStoreFileCount = Math.max(mt.maxStoreFileCount, store.getStorefilesCount());
|
||||
mt.memstoreSize += (store.getMemStoreSize().getDataSize()
|
||||
+ store.getMemStoreSize().getHeapSize() + store.getMemStoreSize().getOffHeapSize());
|
||||
mt.storeFileSize += store.getStorefilesSize();
|
||||
|
@ -263,6 +264,15 @@ public class MetricsTableWrapperAggregateImpl implements MetricsTableWrapperAggr
|
|||
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
|
||||
public long getMaxStoreFileAge(String table) {
|
||||
MetricsTableValues metricsTable = metricsTableMap.get(TableName.valueOf(table));
|
||||
|
@ -334,6 +344,7 @@ public class MetricsTableWrapperAggregateImpl implements MetricsTableWrapperAggr
|
|||
long regionCount;
|
||||
long storeCount;
|
||||
long storeFileCount;
|
||||
long maxStoreFileCount;
|
||||
long storeFileSize;
|
||||
long maxStoreFileAge;
|
||||
long minStoreFileAge = Long.MAX_VALUE;
|
||||
|
|
|
@ -62,6 +62,11 @@ public class MetricsRegionServerWrapperStub implements MetricsRegionServerWrappe
|
|||
return 300;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getMaxStoreFiles() {
|
||||
return 23;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getMemStoreSize() {
|
||||
return 1025;
|
||||
|
|
|
@ -72,6 +72,7 @@ public class TestMetricsRegionServer {
|
|||
HELPER.assertGauge("regionServerStartTime", 100, serverSource);
|
||||
HELPER.assertGauge("regionCount", 101, serverSource);
|
||||
HELPER.assertGauge("storeCount", 2, serverSource);
|
||||
HELPER.assertGauge("maxStoreFileCount", 23, serverSource);
|
||||
HELPER.assertGauge("maxStoreFileAge", 2, serverSource);
|
||||
HELPER.assertGauge("minStoreFileAge", 2, serverSource);
|
||||
HELPER.assertGauge("avgStoreFileAge", 2, serverSource);
|
||||
|
|
|
@ -91,6 +91,7 @@ public class TestMetricsTableAggregate {
|
|||
HELPER.assertGauge(pre + "regionCount", 11, agg);
|
||||
HELPER.assertGauge(pre + "storeCount", 22, agg);
|
||||
HELPER.assertGauge(pre + "storeFileCount", 33, agg);
|
||||
HELPER.assertGauge(pre + "maxStoreFileCount", 8, agg);
|
||||
HELPER.assertGauge(pre + "maxStoreFileAge", 44, agg);
|
||||
HELPER.assertGauge(pre + "minStoreFileAge", 55, agg);
|
||||
HELPER.assertGauge(pre + "avgStoreFileAge", 66, agg);
|
||||
|
|
Loading…
Reference in New Issue