blob: 84218ef4ae1e9d00d3446c16f3e5e4b33029fa3c [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license
* agreements. See the NOTICE file distributed with this work for additional information regarding
* copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License. You may obtain a
* copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package org.apache.geode.management.internal.beans;
import org.apache.geode.internal.cache.DiskDirectoryStats;
import org.apache.geode.internal.cache.DiskRegionStats;
import org.apache.geode.management.internal.ManagementConstants;
import org.apache.geode.management.internal.beans.stats.AggregateRegionStatsMonitor;
import org.apache.geode.management.internal.beans.stats.MBeanStatsMonitor;
import org.apache.geode.management.internal.beans.stats.StatType;
import org.apache.geode.management.internal.beans.stats.StatsAverageLatency;
import org.apache.geode.management.internal.beans.stats.StatsKey;
import org.apache.geode.management.internal.beans.stats.StatsRate;
public class DiskRegionBridge {
private DiskRegionStats diskRegionStats;
private AggregateRegionStatsMonitor aggregateRegionMonitor;
private MBeanStatsMonitor diskRegionMonitor;
private StatsAverageLatency diskRegionReadsAverageLatency;
private StatsAverageLatency diskRegionWritesAverageLatency;
private StatsRate diskRegionReadsRate;
private StatsRate diskRegionWritesRate;
public static final String DISK_REGION_MONITOR = "DiskRegionMonitor";
private static final String REGION_MONITOR = "MemberLevelRegionMonitor";
public DiskRegionBridge(DiskRegionStats stats) {
this.diskRegionStats = stats;
this.aggregateRegionMonitor = new AggregateRegionStatsMonitor(REGION_MONITOR);
this.diskRegionMonitor = new MBeanStatsMonitor(DISK_REGION_MONITOR);
addDiskRegionStats(diskRegionStats);
this.configureDiskRegionMetrics();
}
private Number getDiskRegionStatistic(String statName) {
if (diskRegionStats != null) {
return diskRegionStats.getStats().get(statName);
} else {
return ManagementConstants.ZERO;
}
}
public void stopMonitor() {
diskRegionMonitor.stopListener();
aggregateRegionMonitor.stopListener();
}
public void addDirectoryStats(DiskDirectoryStats diskDirStats) {
aggregateRegionMonitor.addStatisticsToMonitor(diskDirStats.getStats());
}
public void addDiskRegionStats(DiskRegionStats diskRegionStats) {
diskRegionMonitor.addStatisticsToMonitor(diskRegionStats.getStats());
}
private void configureDiskRegionMetrics() {
diskRegionReadsRate = new StatsRate(StatsKey.DISK_READS, StatType.LONG_TYPE, diskRegionMonitor);
diskRegionWritesRate =
new StatsRate(StatsKey.DISK_WRITES, StatType.LONG_TYPE, diskRegionMonitor);
diskRegionReadsAverageLatency = new StatsAverageLatency(StatsKey.DISK_READS, StatType.LONG_TYPE,
StatsKey.DISK_REGION_READ_TIME, diskRegionMonitor);
diskRegionWritesAverageLatency = new StatsAverageLatency(StatsKey.DISK_WRITES,
StatType.LONG_TYPE, StatsKey.DISK_REGION_WRITE_TIMES, diskRegionMonitor);
}
public float getDiskReadsRate() {
return diskRegionReadsRate.getRate();
}
public float getDiskWritesRate() {
return diskRegionWritesRate.getRate();
}
public long getDiskReadsAverageLatency() {
return diskRegionReadsAverageLatency.getAverageLatency();
}
public long getDiskWritesAverageLatency() {
return diskRegionWritesAverageLatency.getAverageLatency();
}
public long getTotalDiskWritesProgress() {
return getDiskRegionStatistic(StatsKey.DISK_REGION_WRITE_IN_PROGRESS).longValue();
}
public long getTotalDiskEntriesInVM() {
return getDiskRegionStatistic(StatsKey.DISK_REGION_ENTRIES_IN_VM).longValue();
}
public long getTotalEntriesOnlyOnDisk() {
return getDiskRegionStatistic(StatsKey.DISK_REGION_ENTRIES_IN_DISK).longValue();
}
public long getDiskUsage() {
long diskSpaceUsage = aggregateRegionMonitor.getDiskSpace();
return diskSpaceUsage;
}
public long getDiskTaskWaiting() {
return ManagementConstants.NOT_AVAILABLE_LONG;
}
}