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

[ambari-logsearch] branch master updated: AMBARI-24935. Log Search: enable/disable request audit logging for jetty (#35)

This is an automated email from the ASF dual-hosted git repository.

oleewere pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ambari-logsearch.git


The following commit(s) were added to refs/heads/master by this push:
     new 93f4386  AMBARI-24935. Log Search: enable/disable request audit logging for jetty (#35)
93f4386 is described below

commit 93f4386f8e10590a8d382837fbc3b65f2e5899ed
Author: Olivér Szabó <ol...@gmail.com>
AuthorDate: Wed Nov 21 17:06:58 2018 +0100

    AMBARI-24935. Log Search: enable/disable request audit logging for jetty (#35)
    
    * AMBARI-24935. Log Search: enable/disable request audit logging for jetty.
    
    * Remove unused import
---
 .../ambari/logsearch/conf/LogSearchHttpConfig.java | 18 ++++++++++++++++
 .../conf/LogSearchWebServerCustomizer.java         | 24 ++++++++++++++++++++--
 .../src/main/resources/log4j2.yml                  |  8 ++++----
 3 files changed, 44 insertions(+), 6 deletions(-)

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 39d8095..37bc732 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 @@ public class LogSearchHttpConfig {
   @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 class LogSearchHttpConfig {
   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 fb83829..1ca0a81 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.boot.web.server.WebServerFactoryCustomizer;
 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 class LogSearchWebServerCustomizer implements WebServerFactoryCustomizer<
   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 class LogSearchWebServerCustomizer implements WebServerFactoryCustomizer<
     } 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 81a26cd..65064e6 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: