浏览代码

AMBARI-4712. Fix Hive Metastore alert issues (ncole)

Nate Cole 11 年之前
父节点
当前提交
8d9b031e87

+ 5 - 2
ambari-server/src/main/java/org/apache/ambari/server/controller/nagios/NagiosPropertyProvider.java

@@ -247,11 +247,14 @@ public class NagiosPropertyProvider extends BaseProvider implements PropertyProv
         map.put("actual_status", NagiosAlert.getStatusString(alert.getStatus()));
         
         String longOut = alert.getLongPluginOutput();
-        if (null != longOut && longOut.startsWith(PASSIVE_TOKEN)) {
+        int index = (null == longOut) ? -1 : longOut.indexOf(PASSIVE_TOKEN);
+        if (-1 != index) {
           int actualStatus = 3;
           try {
             int len = PASSIVE_TOKEN.length();
-            actualStatus = Integer.parseInt(longOut.substring(len, len+1));
+            
+            actualStatus = Integer.parseInt(longOut.substring(
+                index + len, index + len+1));
           } catch (Exception e) {
             // do nothing
           }

+ 22 - 2
ambari-server/src/main/resources/stacks/HDP/1.3.2/services/NAGIOS/package/files/check_wrapper.sh

@@ -2,7 +2,15 @@
 
 function real_service() {
   desc=$NAGIOS_SERVICEGROUPNAME
-  eval "$1='$NAGIOS_SERVICEGROUPNAME'"
+  case "$desc" in
+    HIVE-METASTORE)
+      desc="HIVE"
+    ;;
+    *)
+    ;;
+  esac
+
+  eval "$1='$desc'"
 }
 
 function real_component() {
@@ -17,6 +25,18 @@ function real_component() {
     REGIONSERVER)
       realCompName="HBASE_REGIONSERVER"
     ;;
+    HIVE-METASTORE)
+      realCompName="HIVE_METASTORE"
+    ;;
+    FLUME)
+      realCompName="FLUME_SERVER"
+    ;;
+    HUE)
+      realCompName="HUE_SERVER"
+    ;;
+    WEBHCAT)
+      realCompName="WEBHCAT_SERVER"
+    ;;
     *)
       realCompName=$compName
     ;;
@@ -46,7 +66,7 @@ if [ ! -f /var/nagios/ignore.dat ]; then
 else
   count=`grep $NAGIOS_HOSTNAME /var/nagios/ignore.dat | grep $real_service_var | grep $real_comp_var | wc -l`
   if [ "$count" -ne "0" ]; then
-    echo "$wrapper_output\nAMBARIPASSIVE=${wrapper_result}"
+    echo "$wrapper_output\nAMBARIPASSIVE=${wrapper_result}" | sed 's/^[ \t]*//g'
     exit 0
   else
     echo "$wrapper_output"

+ 22 - 2
ambari-server/src/main/resources/stacks/HDP/2.0.6/services/NAGIOS/package/files/check_wrapper.sh

@@ -2,7 +2,15 @@
 
 function real_service() {
   desc=$NAGIOS_SERVICEGROUPNAME
-  eval "$1='$NAGIOS_SERVICEGROUPNAME'"
+  case "$desc" in
+    HIVE-METASTORE)
+      desc="HIVE"
+    ;;
+    *)
+    ;;
+  esac
+
+  eval "$1='$desc'"
 }
 
 function real_component() {
@@ -20,6 +28,18 @@ function real_component() {
     JOBHISTORY)
       realCompName="MAPREDUCE2"
     ;;
+    HIVE-METASTORE)
+      realCompName="HIVE_METASTORE"
+    ;;
+    FLUME)
+      realCompName="FLUME_SERVER"
+    ;;
+    HUE)
+      realCompName="HUE_SERVER"
+    ;;
+    WEBHCAT)
+      realCompName="WEBHCAT_SERVER"
+    ;;
     *)
       realCompName=$compName
     ;;
@@ -49,7 +69,7 @@ if [ ! -f /var/nagios/ignore.dat ]; then
 else
   count=`grep $NAGIOS_HOSTNAME /var/nagios/ignore.dat | grep $real_service_var | grep $real_comp_var | wc -l`
   if [ "$count" -ne "0" ]; then
-    echo "$wrapper_output\nAMBARIPASSIVE=${wrapper_result}"
+    echo "$wrapper_output\nAMBARIPASSIVE=${wrapper_result}" | sed 's/^[ \t]*//g'
     exit 0
   else
     echo "$wrapper_output"

+ 52 - 1
ambari-server/src/test/java/org/apache/ambari/server/controller/nagios/NagiosPropertyProviderTest.java

@@ -151,7 +151,6 @@ public class NagiosPropertyProviderTest {
   @Test
   public void testNagiosServiceAlerts() throws Exception {
 
-    
     TestStreamProvider streamProvider = new TestStreamProvider("nagios_alerts.txt");
 
     NagiosPropertyProvider npp = new NagiosPropertyProvider(Resource.Type.Service,
@@ -431,6 +430,58 @@ public class NagiosPropertyProviderTest {
     Assert.assertEquals(Integer.valueOf(1), summary.get("PASSIVE"));
   }
   
+  @Test
+  public void testNagiosHostAlertsSubstringPassiveMarker() throws Exception {
+    
+    TestStreamProvider streamProvider = new TestStreamProvider("nagios_alerts.txt");
+
+    NagiosPropertyProvider npp = new NagiosPropertyProvider(Resource.Type.Host,
+        streamProvider,
+        "Hosts/cluster_name",
+        "Hosts/host_name");
+    npp.forceReset();
+    
+    Resource resource = new ResourceImpl(Resource.Type.Host);
+    resource.setProperty("Hosts/cluster_name", "c1");
+    resource.setProperty("Hosts/host_name", "c6404.ambari.apache.org");
+    
+    // request with an empty set should get all supported properties
+    Request request = PropertyHelper.getReadRequest(Collections.<String>emptySet(), new HashMap<String, TemporalInfo>());
+
+    Set<Resource> set = npp.populateResources(Collections.singleton(resource), request, null);
+    Assert.assertEquals(1, set.size());
+    
+    Resource res = set.iterator().next();
+    
+    Map<String, Map<String, Object>> values = res.getPropertiesMap();
+    
+    Assert.assertTrue(values.containsKey("alerts"));
+    Assert.assertTrue(values.containsKey("alerts/summary"));
+    Assert.assertTrue(values.get("alerts").containsKey("detail"));
+    Assert.assertTrue(List.class.isInstance(values.get("alerts").get("detail")));
+    
+    List<?> list = (List<?>) values.get("alerts").get("detail");
+    Assert.assertEquals(Integer.valueOf(1), Integer.valueOf(list.size()));
+    for (Object o : list) {
+      Assert.assertTrue(Map.class.isInstance(o));
+      Map<?, ?> map = (Map<?, ?>) o;
+      Assert.assertTrue(map.containsKey("host_name"));
+      String host = map.get("host_name").toString();
+      Assert.assertEquals("c6404.ambari.apache.org", host);
+    }
+    
+    Map<String, Object> summary = values.get("alerts/summary");
+    Assert.assertTrue(summary.containsKey("OK"));
+    Assert.assertTrue(summary.containsKey("WARNING"));
+    Assert.assertTrue(summary.containsKey("CRITICAL"));
+    Assert.assertTrue(summary.containsKey("PASSIVE"));
+    
+    Assert.assertEquals(Integer.valueOf(0), summary.get("OK"));
+    Assert.assertEquals(Integer.valueOf(0), summary.get("WARNING"));
+    Assert.assertEquals(Integer.valueOf(0), summary.get("CRITICAL"));
+    Assert.assertEquals(Integer.valueOf(1), summary.get("PASSIVE"));
+  }   
+  
   private static class GuiceModule implements Module {
 
     private Properties properties = new Properties();

文件差异内容过多而无法显示
+ 15 - 0
ambari-server/src/test/resources/nagios_alerts.txt


部分文件因为文件数量过多而无法显示