Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions hadoop-hdds/common/src/main/resources/ozone-default.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2055,6 +2055,15 @@
file. Unit could be defined with postfix (ns,ms,s,m,h,d)
</description>
</property>
<property>
<name>ozone.om.snapshot.directory.metrics.update.interval</name>
<value>5m</value>
<tag>OZONE, OM</tag>
<description>Time interval used to update the space consumption stats of the
Ozone Manager snapshot directories. Background thread periodically saves these
stats. Unit could be defined with postfix (ns,ms,s,m,h,d)
</description>
</property>
<property>
<name>ozone.security.enabled</name>
<value>false</value>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,10 @@ public final class OMConfigKeys {
public static final boolean
OZONE_OM_SNAPSHOT_ROCKSDB_METRICS_ENABLED_DEFAULT = false;

public static final String OZONE_OM_SNAPSHOT_DIRECTORY_METRICS_UPDATE_INTERVAL =
"ozone.om.snapshot.directory.metrics.update.interval";
public static final String OZONE_OM_SNAPSHOT_DIRECTORY_METRICS_UPDATE_INTERVAL_DEFAULT = "5m";

/**
* OM Ratis related configurations.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,15 @@

import com.google.common.annotations.VisibleForTesting;
import org.apache.hadoop.hdds.annotation.InterfaceAudience;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
import org.apache.hadoop.hdds.utils.DBCheckpointMetrics;
import org.apache.hadoop.metrics2.MetricsSystem;
import org.apache.hadoop.metrics2.annotation.Metric;
import org.apache.hadoop.metrics2.annotation.Metrics;
import org.apache.hadoop.metrics2.lib.DefaultMetricsSystem;
import org.apache.hadoop.metrics2.lib.MutableCounterLong;
import org.apache.hadoop.metrics2.lib.MutableGaugeInt;
import org.apache.hadoop.ozone.om.snapshot.OMSnapshotDirectoryMetrics;

/**
* This class is for maintaining Ozone Manager statistics.
Expand Down Expand Up @@ -245,6 +247,7 @@ public class OMMetrics implements OmMetadataReaderMetrics {
private @Metric MutableCounterLong ecBucketCreateTotal;
private @Metric MutableCounterLong ecBucketCreateFailsTotal;
private final DBCheckpointMetrics dbCheckpointMetrics;
private OMSnapshotDirectoryMetrics snapshotDirectoryMetrics;

public OMMetrics() {
dbCheckpointMetrics = DBCheckpointMetrics.create("OM Metrics");
Expand All @@ -261,6 +264,39 @@ public DBCheckpointMetrics getDBCheckpointMetrics() {
return dbCheckpointMetrics;
}

/**
* @return an instance of OMSnapshotDirectoryMetrics.
* @throws IllegalStateException if the metric is null
*/
public OMSnapshotDirectoryMetrics getSnapshotDirectoryMetrics() throws IllegalStateException {
if (snapshotDirectoryMetrics == null) {
throw new IllegalStateException(
"SnapshotDirectoryMetrics not initialized. Call startSnapshotDirectoryMetrics() first.");
}
return snapshotDirectoryMetrics;
}

/**
* Starts periodic updates for snapshot directory metrics.
* Creates the metrics instance if it doesn't exist.
*
* @param configuration OzoneConfiguration for reading update interval
* @param metadataManager OMMetadataManager for accessing snapshot directories
*/
public void startSnapshotDirectoryMetrics(OzoneConfiguration configuration,
OMMetadataManager metadataManager) {
if (snapshotDirectoryMetrics == null) {
snapshotDirectoryMetrics = OMSnapshotDirectoryMetrics.create("OM Metrics", metadataManager);
}
snapshotDirectoryMetrics.start(configuration);
}

public void stopSnapshotDirectoryMetrics() {
if (snapshotDirectoryMetrics != null) {
snapshotDirectoryMetrics.stop();
}
}

public void incNumS3BucketCreates() {
numBucketOps.incr();
numBucketS3Creates.incr();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1868,6 +1868,10 @@ public void start() throws IOException {
metricsTimer = new Timer();
metricsTimer.schedule(scheduleOMMetricsWriteTask, 0, period);

LOG.info("Starting OmSnapshotDirectoryMetrics");

metrics.startSnapshotDirectoryMetrics(configuration, getMetadataManager());

try {
scmTopologyClient.start(configuration);
} catch (IOException ex) {
Expand Down Expand Up @@ -1950,6 +1954,10 @@ public void restart() throws IOException {
metricsTimer = new Timer();
metricsTimer.schedule(scheduleOMMetricsWriteTask, 0, period);

// Restart snapshot directory metrics updates
metrics.stopSnapshotDirectoryMetrics();
metrics.startSnapshotDirectoryMetrics(configuration, getMetadataManager());

initializeRatisServer(false);
if (omRatisServer != null) {
omRatisServer.start();
Expand Down Expand Up @@ -2425,6 +2433,7 @@ public boolean stop() {
stopTrashEmptier();
metadataManager.stop();
omSnapshotManager.close();
metrics.stopSnapshotDirectoryMetrics();
metrics.unRegister();
omClientProtocolMetrics.unregister();
unregisterMXBean();
Expand Down
Loading