Author: mreutegg
Date: Wed Aug 21 07:10:05 2019
New Revision: 1865601
URL: http://svn.apache.org/viewvc?rev=1865601&view=rev
Log:
OAK-8564: Add metric for MongoDB total and used disk space
Modified:
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreMetrics.java
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreMetricsTest.java
Modified:
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreMetrics.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreMetrics.java?rev=1865601&r1=1865600&r2=1865601&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreMetrics.java
(original)
+++
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreMetrics.java
Wed Aug 21 07:10:05 2019
@@ -79,6 +79,9 @@ public final class MongoDocumentStoreMet
updateCounter(getCounter(c, "storageSize"), stats.storageSize);
updateCounter(getCounter(c, "totalIndexSize"),
stats.totalIndexSize);
}
+ DatabaseStats dbStats = getDBStats();
+ updateCounter(getDBCounter("fsUsedSize"), dbStats.fsUsedSize);
+ updateCounter(getDBCounter("fsTotalSize"), dbStats.fsTotalSize);
} catch (MongoException e) {
LOG.warn("Updating counters failed: {}", e.toString());
}
@@ -99,16 +102,34 @@ public final class MongoDocumentStoreMet
return stats;
}
+ private DatabaseStats getDBStats() throws MongoException {
+ DatabaseStats stats = new DatabaseStats();
+ BasicDBObject result = new BasicDBObject(db.runCommand(new
org.bson.Document("dbStats", 1)));
+ stats.fsUsedSize = result.getLong("fsUsedSize", 0);
+ stats.fsTotalSize = result.getLong("fsTotalSize", 0);
+ return stats;
+ }
+
private CounterStats getCounter(Collection<? extends Document> c,
String name) {
String counterName = "MongoDB." + c.toString() + "." + name;
return statsProvider.getCounterStats(counterName, METRICS_ONLY);
}
+ private CounterStats getDBCounter(String name) {
+ String counterName = "MongoDB." + name;
+ return statsProvider.getCounterStats(counterName, METRICS_ONLY);
+ }
+
private static final class CollectionStats {
long count;
long size;
long storageSize;
long totalIndexSize;
}
+
+ private static final class DatabaseStats {
+ long fsUsedSize;
+ long fsTotalSize;
+ }
}
Modified:
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreMetricsTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreMetricsTest.java?rev=1865601&r1=1865600&r2=1865601&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreMetricsTest.java
(original)
+++
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStoreMetricsTest.java
Wed Aug 21 07:10:05 2019
@@ -33,7 +33,9 @@ import org.junit.Test;
import static
org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentNodeStoreBuilder.newMongoDocumentNodeStoreBuilder;
import static org.apache.jackrabbit.oak.stats.StatsOptions.METRICS_ONLY;
+import static org.hamcrest.Matchers.greaterThan;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import static org.junit.Assume.assumeNotNull;
@@ -58,7 +60,13 @@ public class MongoDocumentStoreMetricsTe
newMongoDocumentNodeStoreBuilder());
try {
MongoDocumentStoreMetrics metrics = new
MongoDocumentStoreMetrics(store, statsProvider);
+ assertEquals(0, getCount("MongoDB.fsUsedSize"));
+ assertEquals(0, getCount("MongoDB.fsTotalSize"));
+
metrics.run();
+ assertThat(getCount("MongoDB.fsUsedSize"), greaterThan(0L));
+ assertThat(getCount("MongoDB.fsTotalSize"), greaterThan(0L));
+
// document for root node
assertEquals(1, getCount("MongoDB.nodes.count"));
// one cluster node