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: