Просмотр исходного кода

AMBARI-20744. Log Search: Add get clusters endpoint for service and audit logs (oleewere)

oleewere 8 лет назад
Родитель
Сommit
66ca95d4a3

+ 2 - 0
ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/doc/DocConstants.java

@@ -48,6 +48,7 @@ public class DocConstants {
   }
 
   public class AuditOperationDescriptions {
+    public static final String GET_AUDIT_CLUSTERS_OD = "Get all of the clusters for audit logs";
     public static final String GET_AUDIT_SCHEMA_FIELD_LIST_OD = "Get list of schema fields in audit collection";
     public static final String GET_AUDIT_LOGS_OD = "Get the list of logs details";
     public static final String PURGE_AUDIT_LOGS_OD = "Purge service logs based by criteria";
@@ -77,6 +78,7 @@ public class DocConstants {
   }
 
   public class ServiceOperationDescriptions {
+    public static final String GET_SERVICE_CLUSTERS_OD = "Get all of the clusters for service logs";
     public static final String SEARCH_LOGS_OD = "Searching logs entry";
     public static final String PURGE_LOGS_OD = "Purge service logs based by criteria";
     public static final String GET_HOSTS_OD = "Get the list of service hosts currently active or having data in Solr";

+ 5 - 0
ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/manager/AuditLogsManager.java

@@ -70,6 +70,7 @@ import org.springframework.data.solr.core.query.SimpleFacetQuery;
 import org.springframework.data.solr.core.query.SimpleQuery;
 
 import static org.apache.ambari.logsearch.solr.SolrConstants.AuditLogConstants.AUDIT_COMPONENT;
+import static org.apache.ambari.logsearch.solr.SolrConstants.CommonLogConstants.CLUSTER;
 
 @Named
 public class AuditLogsManager extends ManagerBase<SolrAuditLogData, AuditLogResponse> {
@@ -220,4 +221,8 @@ public class AuditLogsManager extends ManagerBase<SolrAuditLogData, AuditLogResp
     UpdateResponse updateResponse = auditSolrDao.deleteByQuery(solrQuery, "/audit/logs");
     return new StatusMessage(updateResponse.getStatus());
   }
+
+  public List<String> getClusters() {
+    return getClusters(auditSolrDao, CLUSTER, "/audit/logs/clusters");
+  }
 }

+ 30 - 0
ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/manager/ManagerBase.java

@@ -23,17 +23,25 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
+import com.google.common.collect.Lists;
+import org.apache.ambari.logsearch.common.LogSearchConstants;
+import org.apache.ambari.logsearch.model.response.GroupListResponse;
 import org.apache.ambari.logsearch.model.response.LogData;
 import org.apache.ambari.logsearch.model.response.LogSearchResponse;
 import org.apache.ambari.logsearch.dao.SolrDaoBase;
+import org.apache.ambari.logsearch.util.SolrUtil;
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.log4j.Logger;
 import org.apache.solr.client.solrj.SolrQuery;
+import org.apache.solr.client.solrj.response.FacetField;
 import org.apache.solr.client.solrj.response.QueryResponse;
 import org.apache.solr.common.SolrDocumentList;
 import org.springframework.data.solr.core.DefaultQueryParser;
 import org.springframework.data.solr.core.query.SimpleQuery;
 import org.springframework.data.solr.core.query.SolrDataQuery;
 
+import static org.apache.ambari.logsearch.solr.SolrConstants.CommonLogConstants.CLUSTER;
+
 public abstract class ManagerBase<LOG_DATA_TYPE extends LogData, SEARCH_RESPONSE extends LogSearchResponse> extends JsonManagerBase {
   private static final Logger logger = Logger.getLogger(ManagerBase.class);
 
@@ -92,4 +100,26 @@ public abstract class ManagerBase<LOG_DATA_TYPE extends LogData, SEARCH_RESPONSE
   protected abstract List<LOG_DATA_TYPE> convertToSolrBeans(QueryResponse response);
 
   protected abstract SEARCH_RESPONSE createLogSearchResponse();
+
+  protected List<String> getClusters(SolrDaoBase solrDaoBase, String clusterField, String event) {
+    List<String> clusterResponse = Lists.newArrayList();
+    SolrQuery solrQuery = new SolrQuery();
+    solrQuery.setQuery("*:*");
+    SolrUtil.setFacetField(solrQuery, clusterField);
+    SolrUtil.setFacetSort(solrQuery, LogSearchConstants.FACET_INDEX);
+
+    QueryResponse response = solrDaoBase.process(solrQuery, event);
+    if (response == null) {
+      return clusterResponse;
+    }
+    List<FacetField> clusterFields = response.getFacetFields();
+    if (CollectionUtils.isNotEmpty(clusterFields)) {
+      FacetField clusterFacets = clusterFields.get(0);
+      for (FacetField.Count clusterCount : clusterFacets.getValues()) {
+        clusterResponse.add(clusterCount.getName());
+      }
+    }
+    return clusterResponse;
+  }
+
 }

+ 5 - 0
ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/manager/ServiceLogsManager.java

@@ -72,6 +72,7 @@ import org.apache.ambari.logsearch.model.response.ServiceLogResponse;
 import org.apache.ambari.logsearch.converter.BaseServiceLogRequestQueryConverter;
 import org.apache.ambari.logsearch.converter.ServiceLogTruncatedRequestQueryConverter;
 import org.apache.ambari.logsearch.solr.ResponseDataGenerator;
+import org.apache.ambari.logsearch.solr.SolrConstants;
 import org.apache.ambari.logsearch.solr.model.SolrComponentTypeLogData;
 import org.apache.ambari.logsearch.solr.model.SolrHostLogData;
 import org.apache.ambari.logsearch.solr.model.SolrServiceLogData;
@@ -614,4 +615,8 @@ public class ServiceLogsManager extends ManagerBase<SolrServiceLogData, ServiceL
     UpdateResponse updateResponse = serviceLogsSolrDao.deleteByQuery(solrQuery, "/service/logs");
     return new StatusMessage(updateResponse.getStatus());
   }
+
+  public List<String> getClusters() {
+    return getClusters(serviceLogsSolrDao, CLUSTER, "/service/logs/clusters");
+  }
 }

+ 10 - 0
ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/rest/AuditLogsResource.java

@@ -44,6 +44,8 @@ import org.apache.ambari.logsearch.model.request.impl.AuditLogRequest;
 import org.apache.ambari.logsearch.manager.AuditLogsManager;
 import org.springframework.context.annotation.Scope;
 
+import java.util.List;
+
 import static org.apache.ambari.logsearch.doc.DocConstants.AuditOperationDescriptions.*;
 
 @Api(value = "audit/logs", description = "Audit log operations")
@@ -117,4 +119,12 @@ public class AuditLogsResource {
     return auditLogsManager.getServiceLoad(request);
   }
 
+  @GET
+  @Path("/clusters")
+  @Produces({"application/json"})
+  @ApiOperation(GET_AUDIT_CLUSTERS_OD)
+  public List<String> getClustersForServiceLog() {
+    return auditLogsManager.getClusters();
+  }
+
 }

+ 11 - 0
ambari-logsearch/ambari-logsearch-portal/src/main/java/org/apache/ambari/logsearch/rest/ServiceLogsResource.java

@@ -58,6 +58,8 @@ import org.apache.ambari.logsearch.model.response.ServiceLogResponse;
 import org.apache.ambari.logsearch.manager.ServiceLogsManager;
 import org.springframework.context.annotation.Scope;
 
+import java.util.List;
+
 import static org.apache.ambari.logsearch.doc.DocConstants.ServiceOperationDescriptions.*;
 
 @Api(value = "service/logs", description = "Service log operations")
@@ -219,4 +221,13 @@ public class ServiceLogsResource {
   public HostLogFilesResponse getHostLogFiles(@Valid @BeanParam HostLogFilesRequest request) {
     return serviceLogsManager.getHostLogFileData(request);
   }
+
+  @GET
+  @Path("/clusters")
+  @Produces({"application/json"})
+  @ApiOperation(GET_SERVICE_CLUSTERS_OD)
+  public List<String> getClustersForServiceLog() {
+    return serviceLogsManager.getClusters();
+  }
+
 }