modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementCompressionManagerBean.java
| 1
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/instrumentation/MeasurementMonitor.java
| 14 ++--
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/instrumentation/MeasurementMonitorMBean.java
| 2
modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java
| 29 +++++++++-
modules/plugins/rhq-storage/pom.xml
| 7 ++
modules/plugins/rhq-storage/src/main/java/org/rhq/plugins/storage/StorageNodeDiscoveryComponent.java
| 17 +++++
modules/plugins/rhq-storage/src/main/resources/rhq-storage.properties
| 2
7 files changed, 60 insertions(+), 12 deletions(-)
New commits:
commit d3917363da8cb7cda1500ee7f195c7b1a333650d
Author: John Sanda <jsanda(a)redhat.com>
Date: Thu Oct 24 21:23:51 2013 -0400
[BZ 1022775] get the compression time metric from MetricsServer
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementCompressionManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementCompressionManagerBean.java
index d08daef..7e1f6f2 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementCompressionManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementCompressionManagerBean.java
@@ -264,7 +264,6 @@ public class MeasurementCompressionManagerBean implements
MeasurementCompression
watch.reset();
rows = insStmt.executeUpdate();
-
MeasurementMonitor.getMBean().incrementMeasurementCompressionTime(watch.getElapsed());
} finally {
JDBCUtil.safeClose(conn, insStmt, null);
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/instrumentation/MeasurementMonitor.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/instrumentation/MeasurementMonitor.java
index 93feca3..f36840c 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/instrumentation/MeasurementMonitor.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/instrumentation/MeasurementMonitor.java
@@ -24,6 +24,7 @@ import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.ejb.ConcurrencyManagement;
import javax.ejb.ConcurrencyManagementType;
+import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Singleton;
import javax.ejb.Startup;
@@ -34,8 +35,10 @@ import javax.management.MBeanServerInvocationHandler;
import javax.management.ObjectName;
import org.rhq.core.util.ObjectNameFactory;
+import org.rhq.enterprise.server.storage.StorageClientManagerBean;
import org.rhq.enterprise.server.util.JMXUtil;
import org.rhq.enterprise.server.util.LookupUtil;
+import org.rhq.server.metrics.MetricsServer;
/**
* @author Greg Hinkle
@@ -48,6 +51,9 @@ import org.rhq.enterprise.server.util.LookupUtil;
public class MeasurementMonitor implements MeasurementMonitorMBean {
private static final ObjectName OBJECT_NAME =
ObjectNameFactory.create("rhq:service=MeasurementMonitor");
+ @EJB
+ private StorageClientManagerBean storageClientManager;
+
private AtomicLong measurementInsertTime = new AtomicLong();
private AtomicLong measurementsInserted = new AtomicLong();
@@ -64,8 +70,6 @@ public class MeasurementMonitor implements MeasurementMonitorMBean {
private AtomicLong fullAvailabilityReports = new AtomicLong();
- private AtomicLong compressionTime = new AtomicLong();
-
private AtomicLong purgeTime = new AtomicLong();
private AtomicLong baselineCalculationTime = new AtomicLong();
@@ -179,11 +183,7 @@ public class MeasurementMonitor implements MeasurementMonitorMBean {
}
public long getMeasurementCompressionTime() {
- return compressionTime.get();
- }
-
- public void incrementMeasurementCompressionTime(long delta) {
- this.compressionTime.addAndGet(delta);
+ return storageClientManager.getMetricsServer().getTotalAggregationTime();
}
public long getPurgeTime() {
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/instrumentation/MeasurementMonitorMBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/instrumentation/MeasurementMonitorMBean.java
index df7b05c..f3d5a1e 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/instrumentation/MeasurementMonitorMBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/instrumentation/MeasurementMonitorMBean.java
@@ -47,8 +47,6 @@ public interface MeasurementMonitorMBean {
long getMeasurementCompressionTime();
- void incrementMeasurementCompressionTime(long delta);
-
long getBaselineCalculationTime();
void incrementBaselineCalculationTime(long delta);
diff --git
a/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java
b/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java
index d13106f..f030ce7 100644
---
a/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java
+++
b/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java
@@ -33,10 +33,13 @@ import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.concurrent.Semaphore;
+import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicLong;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Row;
+import com.google.common.base.Stopwatch;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
@@ -74,6 +77,8 @@ public class MetricsServer {
private Long mostRecentRawDataPriorToStartup;
+ private AtomicLong totalAggregationTime = new AtomicLong();
+
public void setDAO(MetricsDAO dao) {
this.dao = dao;
}
@@ -142,6 +147,14 @@ public class MetricsServer {
return dao.findLatestRawMetric(scheduleId);
}
+ /**
+ * @return The total aggregation time in milliseconds since server start. This
property is updated after each of
+ * raw, one hour, and six hour data are aggregated.
+ */
+ public long getTotalAggregationTime() {
+ return totalAggregationTime.get();
+ }
+
public Iterable<MeasurementDataNumericHighLowComposite> findDataForResource(int
scheduleId, long beginTime,
long endTime, int numberOfBuckets) {
@@ -391,7 +404,7 @@ public class MetricsServer {
}
}
- private Iterable<AggregateNumericMetric> calculateAggregates(long startTime) {
+ private List<AggregateNumericMetric> calculateAggregates(long startTime) {
DateTime dt = new DateTime(startTime);
DateTime currentHour = dateTimeService.getTimeSlice(dt,
configuration.getRawTimeSliceDuration());
DateTime lastHour = currentHour.minus(configuration.getRawTimeSliceDuration());
@@ -419,15 +432,20 @@ public class MetricsServer {
// The last step in the work flow is to update the metrics
// index for the newly persisted aggregates.
- Iterable<AggregateNumericMetric> newOneHourAggregates = null;
+ List<AggregateNumericMetric> newOneHourAggregates = null;
+ Stopwatch stopwatch = new Stopwatch().start();
List<AggregateNumericMetric> updatedSchedules =
aggregateRawData(lastHour);
newOneHourAggregates = updatedSchedules;
if (!updatedSchedules.isEmpty()) {
dao.deleteMetricsIndexEntries(MetricsTable.ONE_HOUR, lastHour.getMillis());
updateMetricsIndex(MetricsTable.SIX_HOUR, updatedSchedules,
configuration.getOneHourTimeSliceDuration());
}
+ stopwatch.stop();
+ totalAggregationTime.addAndGet(stopwatch.elapsed(TimeUnit.MILLISECONDS));
+ stopwatch.reset();
+ stopwatch.start();
updatedSchedules = calculateAggregates(MetricsTable.ONE_HOUR,
MetricsTable.SIX_HOUR, sixHourTimeSlice,
configuration.getOneHourTimeSliceDuration());
if (!updatedSchedules.isEmpty()) {
@@ -435,12 +453,19 @@ public class MetricsServer {
updateMetricsIndex(MetricsTable.TWENTY_FOUR_HOUR, updatedSchedules,
configuration.getSixHourTimeSliceDuration());
}
+ stopwatch.stop();
+ totalAggregationTime.addAndGet(stopwatch.elapsed(TimeUnit.MILLISECONDS));
+ stopwatch.reset();
+ stopwatch.start();
updatedSchedules = calculateAggregates(MetricsTable.SIX_HOUR,
MetricsTable.TWENTY_FOUR_HOUR,
twentyFourHourTimeSlice, configuration.getSixHourTimeSliceDuration());
if (!updatedSchedules.isEmpty()) {
dao.deleteMetricsIndexEntries(MetricsTable.TWENTY_FOUR_HOUR,
twentyFourHourTimeSlice);
}
+ stopwatch.stop();
+ totalAggregationTime.addAndGet(stopwatch.elapsed(TimeUnit.MILLISECONDS));
+ stopwatch.reset();
return newOneHourAggregates;
}
commit 7e9a84a8c22aa3725b5d38bc4761a89cc85017a5
Author: John Sanda <jsanda(a)redhat.com>
Date: Thu Oct 24 21:21:27 2013 -0400
[BZ 1021660] set the version and description fields during discovery
diff --git a/modules/plugins/rhq-storage/pom.xml b/modules/plugins/rhq-storage/pom.xml
index bf3eabd..885ab14 100644
--- a/modules/plugins/rhq-storage/pom.xml
+++ b/modules/plugins/rhq-storage/pom.xml
@@ -85,6 +85,13 @@
</dependencies>
<build>
+ <resources>
+ <resource>
+ <directory>src/main/resources</directory>
+ <filtering>true</filtering>
+ </resource>
+ </resources>
+
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
diff --git
a/modules/plugins/rhq-storage/src/main/java/org/rhq/plugins/storage/StorageNodeDiscoveryComponent.java
b/modules/plugins/rhq-storage/src/main/java/org/rhq/plugins/storage/StorageNodeDiscoveryComponent.java
index c0f7b6c..d07118d 100644
---
a/modules/plugins/rhq-storage/src/main/java/org/rhq/plugins/storage/StorageNodeDiscoveryComponent.java
+++
b/modules/plugins/rhq-storage/src/main/java/org/rhq/plugins/storage/StorageNodeDiscoveryComponent.java
@@ -22,9 +22,14 @@
*/
package org.rhq.plugins.storage;
+import java.io.IOException;
import java.util.HashSet;
+import java.util.Properties;
import java.util.Set;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.domain.resource.ResourceUpgradeReport;
@@ -38,6 +43,8 @@ import org.rhq.plugins.cassandra.CassandraNodeDiscoveryComponent;
*/
public class StorageNodeDiscoveryComponent extends CassandraNodeDiscoveryComponent {
+ private final Log log = LogFactory.getLog(StorageNodeDiscoveryComponent.class);
+
private static final String RESOURCE_NAME = "RHQ Storage Node";
@SuppressWarnings({ "rawtypes" })
@@ -57,6 +64,16 @@ public class StorageNodeDiscoveryComponent extends
CassandraNodeDiscoveryCompone
discoveredResource.setResourceKey(resourceKey);
discoveredResource.setResourceName(resourceName);
+ try {
+ Properties properties = new Properties();
+
properties.load(getClass().getResourceAsStream("/rhq-storage.properties"));
+
+
discoveredResource.setResourceDescription(properties.getProperty("rhq.storage.description"));
+
discoveredResource.setResourceVersion(properties.getProperty("rhq.storage.version"));
+ } catch (IOException e) {
+ log.warn("Failed to load rhq-storage.properties. Some resource
details will not be set.", e);
+ }
+
storageNodes.add(discoveredResource);
}
}
diff --git a/modules/plugins/rhq-storage/src/main/resources/rhq-storage.properties
b/modules/plugins/rhq-storage/src/main/resources/rhq-storage.properties
new file mode 100644
index 0000000..7a5733c
--- /dev/null
+++ b/modules/plugins/rhq-storage/src/main/resources/rhq-storage.properties
@@ -0,0 +1,2 @@
+rhq.storage.description=RHQ Storage Node
+rhq.storage.version=${project.version}
\ No newline at end of file