You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by GitBox <gi...@apache.org> on 2018/11/21 16:07:00 UTC

[GitHub] oleewere closed pull request #35: AMBARI-24935. Log Search: enable/disable request audit logging for jetty

oleewere closed pull request #35: AMBARI-24935. Log Search: enable/disable request audit logging for jetty
URL: https://github.com/apache/ambari-logsearch/pull/35
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/LogSearchHttpConfig.java b/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/LogSearchHttpConfig.java
index 39d809545f..37bc7326fe 100644
--- a/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/LogSearchHttpConfig.java
+++ b/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/LogSearchHttpConfig.java
@@ -67,6 +67,16 @@
   @Value("${logsearch.session.timeout:30}")
   private Integer sessionTimeout;
 
+  @LogSearchPropertyDescription(
+    name = "logsearch.jetty.access.log.enabled",
+    description = "Enable jetty access logs",
+    examples = {"true"},
+    defaultValue = "false",
+    sources = {LOGSEARCH_PROPERTIES_FILE}
+  )
+  @Value("${logsearch.jetty.access.log.enabled:false}")
+  private boolean useAccessLogs;
+
   public String getProtocol() {
     return protocol;
   }
@@ -98,4 +108,12 @@ public Integer getSessionTimeout() {
   public void setSessionTimeout(Integer sessionTimeout) {
     this.sessionTimeout = sessionTimeout;
   }
+
+  public boolean isUseAccessLogs() {
+    return useAccessLogs;
+  }
+
+  public void setUseAccessLogs(boolean useAccessLogs) {
+    this.useAccessLogs = useAccessLogs;
+  }
 }
diff --git a/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/LogSearchWebServerCustomizer.java b/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/LogSearchWebServerCustomizer.java
index fb838299eb..1ca0a81067 100644
--- a/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/LogSearchWebServerCustomizer.java
+++ b/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/LogSearchWebServerCustomizer.java
@@ -19,7 +19,11 @@
 package org.apache.ambari.logsearch.conf;
 
 import org.apache.ambari.logsearch.configurer.SslConfigurer;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.config.Configuration;
 import org.eclipse.jetty.server.Connector;
+import org.eclipse.jetty.server.NCSARequestLog;
 import org.eclipse.jetty.server.ServerConnector;
 import org.eclipse.jetty.util.ssl.SslContextFactory;
 import org.springframework.boot.autoconfigure.web.ServerProperties;
@@ -29,15 +33,16 @@
 import org.springframework.stereotype.Component;
 
 import javax.inject.Inject;
+import java.nio.file.Paths;
 import java.time.Duration;
+import java.util.List;
+import java.util.Map;
 
 import static org.apache.ambari.logsearch.common.LogSearchConstants.LOGSEARCH_SESSION_ID;
 
 @Component
 public class LogSearchWebServerCustomizer implements WebServerFactoryCustomizer<JettyServletWebServerFactory> {
 
-  private static final Integer SESSION_TIMEOUT = 30;
-
   @Inject
   private ServerProperties serverProperties;
 
@@ -51,6 +56,7 @@
   public void customize(JettyServletWebServerFactory webServerFactory) {
     serverProperties.getServlet().getSession().setTimeout(Duration.ofMinutes(logSearchHttpConfig.getSessionTimeout()));
     serverProperties.getServlet().getSession().getCookie().setName(LOGSEARCH_SESSION_ID);
+
     if ("https".equals(logSearchHttpConfig.getProtocol())) {
       sslConfigurer.ensureStorePasswords();
       sslConfigurer.loadKeystore();
@@ -63,5 +69,19 @@ public void customize(JettyServletWebServerFactory webServerFactory) {
     } else {
       webServerFactory.setPort(logSearchHttpConfig.getHttpPort());
     }
+    if (logSearchHttpConfig.isUseAccessLogs()) {
+      webServerFactory.addServerCustomizers((JettyServerCustomizer) server -> {
+        LoggerContext context = (LoggerContext) LogManager.getContext(false);
+        Configuration configuration = context.getConfiguration();
+        String logDir = configuration.getStrSubstitutor().getVariableResolver().lookup("log-path");
+        String logFileNameSuffix = "logsearch-jetty-yyyy_mm_dd.request.log";
+        String logFileName = logDir == null ? logFileNameSuffix : Paths.get(logDir, logFileNameSuffix).toString();
+        NCSARequestLog requestLog = new NCSARequestLog(logFileName);
+        requestLog.setAppend(true);
+        requestLog.setExtended(false);
+        requestLog.setLogTimeZone("GMT");
+        server.setRequestLog(requestLog);
+      });
+    }
   }
 }
diff --git a/ambari-logsearch-server/src/main/resources/log4j2.yml b/ambari-logsearch-server/src/main/resources/log4j2.yml
index 81a26cd0a9..65064e616f 100644
--- a/ambari-logsearch-server/src/main/resources/log4j2.yml
+++ b/ambari-logsearch-server/src/main/resources/log4j2.yml
@@ -52,8 +52,8 @@ Configutation:
       DefaultRollOverStrategy:
         max: 10
     - name: AuditFile_Appender
-      fileName: ${log-path}/logsearch-audit.json
-      filePattern: "logsearch-audit.json.%d{yyyy-MM-dd-hh-mm}.gz"
+      fileName: ${log-path}/logsearch-solr-audit.json
+      filePattern: "logsearch-solr-audit.json.%d{yyyy-MM-dd-hh-mm}.gz"
       ignoreExceptions: false
       LogSearchJsonLayout:
         charset: UTF-8
@@ -63,8 +63,8 @@ Configutation:
       DefaultRollOverStrategy:
         max: 10
     - name: PerformanceFile_Appender
-      fileName: ${log-path}/logsearch-performance.json
-      filePattern: "logsearch-perf.json.%d{yyyy-MM-dd-hh-mm}.gz"
+      fileName: ${log-path}/logsearch-solr-performance.json
+      filePattern: "logsearch-solr-performance.json.%d{yyyy-MM-dd-hh-mm}.gz"
       LogSearchJsonLayout:
         charset: UTF-8
       Policies:


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services