[rhq] Branch 'feature/hadoop-plugin' - modules/plugins
lkrejci
lkrejci at fedoraproject.org
Thu Aug 2 11:58:34 UTC 2012
modules/plugins/hadoop/src/main/java/org/rhq/plugins/hadoop/HadoopServerComponent.java | 34 +++++++---
modules/plugins/hadoop/src/main/resources/META-INF/rhq-plugin.xml | 18 ++++-
2 files changed, 41 insertions(+), 11 deletions(-)
New commits:
commit 067a73451b1b37b9c77191847749fb7afd5b88d7
Author: Lukas Krejci <lkrejci at redhat.com>
Date: Thu Aug 2 13:56:23 2012 +0200
* added events support to the rest of the hadoop resource types
* renamed "DataNode" to "Hadoop DataNode"
* Tied event polling registration to the avail check because we are only able to find out the name of the log if the hadoop server is running.
diff --git a/modules/plugins/hadoop/src/main/java/org/rhq/plugins/hadoop/HadoopServerComponent.java b/modules/plugins/hadoop/src/main/java/org/rhq/plugins/hadoop/HadoopServerComponent.java
index f6911b9..cb36798 100644
--- a/modules/plugins/hadoop/src/main/java/org/rhq/plugins/hadoop/HadoopServerComponent.java
+++ b/modules/plugins/hadoop/src/main/java/org/rhq/plugins/hadoop/HadoopServerComponent.java
@@ -45,6 +45,7 @@ import org.rhq.core.pluginapi.inventory.ResourceContext;
import org.rhq.core.pluginapi.measurement.MeasurementFacet;
import org.rhq.core.pluginapi.operation.OperationFacet;
import org.rhq.core.pluginapi.operation.OperationResult;
+import org.rhq.core.system.ProcessInfo;
import org.rhq.plugins.jmx.JMXComponent;
import org.rhq.plugins.jmx.JMXServerComponent;
@@ -60,25 +61,21 @@ public class HadoopServerComponent extends JMXServerComponent<ResourceComponent<
private HadoopOperationsDelegate operationsDelegate;
+ private boolean eventsRegistered;
+
@Override
@SuppressWarnings({ "rawtypes", "unchecked" })
public void start(ResourceContext context) throws Exception {
super.start(context);
configurationDelegate = new HadoopServerConfigurationDelegate(context);
this.operationsDelegate = new HadoopOperationsDelegate(context);
-
- EventContext events = context.getEventContext();
- if (events != null) {
- File logFile = determineLogFile();
- int interval = Integer.parseInt(context.getPluginConfiguration().getSimpleValue(LOG_POLLING_INTERVAL_PROPERTY, "60"));
- events.registerEventPoller(new LogFileEventPoller(events, LOG_EVENT_TYPE, logFile, new Log4JLogEntryProcessor(LOG_EVENT_TYPE, logFile)), interval);
- }
}
@Override
public void stop() {
EventContext events = getResourceContext().getEventContext();
- if (events != null) {
+ if (events != null && eventsRegistered) {
+ eventsRegistered = false;
events.unregisterEventPoller(LOG_EVENT_TYPE);
}
super.stop();
@@ -90,7 +87,26 @@ public class HadoopServerComponent extends JMXServerComponent<ResourceComponent<
*/
@Override
public AvailabilityType getAvailability() {
- return getResourceContext().getNativeProcess().isRunning() ? AvailabilityType.UP : AvailabilityType.DOWN;
+ ProcessInfo process = getResourceContext().getNativeProcess();
+
+ AvailabilityType ret = process == null ? AvailabilityType.DOWN : (process.isRunning() ? AvailabilityType.UP : AvailabilityType.DOWN);
+
+ EventContext events = getResourceContext().getEventContext();
+ if (events != null) {
+ if (ret == AvailabilityType.UP) {
+ if (!eventsRegistered) {
+ File logFile = determineLogFile();
+ int interval = Integer.parseInt(getResourceContext().getPluginConfiguration().getSimpleValue(LOG_POLLING_INTERVAL_PROPERTY, "60"));
+ events.registerEventPoller(new LogFileEventPoller(events, LOG_EVENT_TYPE, logFile, new Log4JLogEntryProcessor(LOG_EVENT_TYPE, logFile)), interval);
+ eventsRegistered = true;
+ }
+ } else if (eventsRegistered) {
+ eventsRegistered = false;
+ events.unregisterEventPoller(LOG_EVENT_TYPE);
+ }
+ }
+
+ return ret;
}
@Override
diff --git a/modules/plugins/hadoop/src/main/resources/META-INF/rhq-plugin.xml b/modules/plugins/hadoop/src/main/resources/META-INF/rhq-plugin.xml
index ef420e6..7e75fa3 100644
--- a/modules/plugins/hadoop/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/hadoop/src/main/resources/META-INF/rhq-plugin.xml
@@ -7,7 +7,7 @@
<!-- NameNode (http://wiki.apache.org/hadoop/NameNode) -->
<server name="Hadoop NameNode" discovery="HadoopServerDiscovery" class="HadoopServerComponent">
<plugin-configuration>
- <c:simple-property name="hadoop.home.dir" displayName="Home Directory"/>
+ <c:simple-property name="hadoop.home.dir" displayName="Home Directory" default="*** SHOULD HAVE BEEN AUTODETECTED ***"/>
<c:simple-property name="_mainClass" displayName="Main Class" readOnly="true"
default="org.apache.hadoop.hdfs.server.namenode.NameNode"/>
<c:simple-property name="logPollingInterval" default="60"
@@ -85,6 +85,8 @@
<plugin-configuration>
<c:simple-property name="_mainClass" displayName="Main Class" readOnly="true"
default="org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode"/>
+ <c:simple-property name="hadoop.home.dir" displayName="Home Directory" default="*** SHOULD HAVE BEEN AUTODETECTED ***"/>
+ <c:simple-property name="logPollingInterval" default="60" description="The interval for log file polling in seconds."/>
</plugin-configuration>
<process-scan name="SecondaryNameNode" query="process|basename|match=^java.*,arg|-Dproc_secondarynamenode|match=.*"/>
@@ -99,13 +101,16 @@
<c:simple-property name="operationResult" description="Outcome of stopping the SecondaryNameNode"/>
</results>
</operation>
+
+ <event name="logEntry" description="an entry in a log file"/>
</server>
<!-- DataNode (http://wiki.apache.org/hadoop/DataNode) -->
- <server name="DataNode" discovery="HadoopServerDiscovery" class="HadoopServerComponent">
+ <server name="Hadoop DataNode" discovery="HadoopServerDiscovery" class="HadoopServerComponent">
<plugin-configuration>
<c:simple-property name="_mainClass" displayName="Main Class" readOnly="true"
default="org.apache.hadoop.hdfs.server.datanode.DataNode"/>
+ <c:simple-property name="logPollingInterval" default="60" description="The interval for log file polling in seconds."/>
</plugin-configuration>
<process-scan name="DataNode" query="process|basename|match=^java.*,arg|*|match=.*proc_datanode.*"/>
@@ -128,6 +133,8 @@
<metric property="Hadoop:service=DataNode,name=FSDatasetState*:StorageInfo" dataType="trait" displayType="summary"/>
<metric property="Hadoop:service=DataNode,name=RpcActivitForPort*:NumOpenConnections" displayName="Number of Open Connections"/>
+ <event name="logEntry" description="an entry in a log file"/>
+
<resource-configuration>
<c:simple-property name="conf/hdfs-site.xml:dfs.data.dir" displayName="Storage Directory"
description="Comma separated list of paths on the local filesystem of a DataNode where it should store its blocks." required="false"/>
@@ -137,9 +144,11 @@
<!-- JobTracker (http://wiki.apache.org/hadoop/JobTracker) -->
<server name="Hadoop JobTracker" discovery="HadoopServerDiscovery" class="HadoopServerComponent">
<plugin-configuration>
+ <c:simple-property name="hadoop.home.dir" displayName="Home Directory" default="*** SHOULD HAVE BEEN AUTODETECTED ***"/>
<c:simple-property name="baseObjectName" defaultValue="hadoop:service=JobTracker"/>
<c:simple-property name="_mainClass" displayName="Main Class" readOnly="true"
default="org.apache.hadoop.mapred.JobTracker"/>
+ <c:simple-property name="logPollingInterval" default="60" description="The interval for log file polling in seconds."/>
</plugin-configuration>
<process-scan name="JobTracker" query="process|basename|match=^java.*,arg|-Dproc_jobtracker|match=.*"/>
@@ -191,6 +200,8 @@
<metric property="Hadoop:service=JobTracker,name=JobTrackerMetrics:trackers_graylisted" displayName="Graylisted Nodes"/>
<metric property="Hadoop:service=JobTracker,name=JobTrackerMetrics:trackers_decommissioned" displayName="Excluded Nodes"/>
+ <event name="logEntry" description="an entry in a log file"/>
+
<resource-configuration>
<c:simple-property name="conf/mapred-site.xml:mapred.job.tracker" displayName="Host And Port" description="Host or IP and port of JobTracker. host:port pair." required="false"/>
<c:simple-property name="conf/mapred-site.xml:mapred.system.dir" displayName="System Files Location" description="Path on the HDFS where where the MapReduce framework stores system files e.g. /hadoop/mapred/system/. This is in the default filesystem (HDFS) and must be accessible from both the server and client machines." required="false"/>
@@ -204,8 +215,10 @@
<!-- TaskTracker (http://wiki.apache.org/hadoop/TaskTracker) -->
<server name="Hadoop TaskTracker" discovery="HadoopServerDiscovery" class="HadoopServerComponent">
<plugin-configuration>
+ <c:simple-property name="hadoop.home.dir" displayName="Home Directory" default="*** SHOULD HAVE BEEN AUTODETECTED ***"/>
<c:simple-property name="_mainClass" displayName="Main Class" readOnly="true"
default="org.apache.hadoop.mapred.TaskTracker"/>
+ <c:simple-property name="logPollingInterval" default="60" description="The interval for log file polling in seconds."/>
</plugin-configuration>
<process-scan name="TaskTracker" query="process|basename|match=^java.*,arg|-Dproc_tasktracker|match=.*"/>
@@ -233,5 +246,6 @@
<metric property="Hadoop:service=TaskTracker,name=TaskTrackerInfo:JobTrackerUrl" displayName="Tasks Completed"
dataType="trait"/>
+ <event name="logEntry" description="an entry in a log file"/>
</server>
</plugin>
More information about the rhq-commits
mailing list