You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by jo...@apache.org on 2021/12/14 17:15:29 UTC
[nifi] 11/15: Revert "NIFI-9394 Removed RequestLogger and TimerFilter"
This is an automated email from the ASF dual-hosted git repository.
joewitt pushed a commit to branch support/nifi-1.15
in repository https://gitbox.apache.org/repos/asf/nifi.git
commit 7208cc8b2287927a58bc16262114365e1fbe1900
Author: Joe Witt <jo...@apache.org>
AuthorDate: Tue Dec 14 10:07:40 2021 -0700
Revert "NIFI-9394 Removed RequestLogger and TimerFilter"
This reverts commit 73b32464303bb75e89b01a7c817f059e52f03d5b.
---
.../src/main/resources/conf/logback.xml | 3 +
.../org/apache/nifi/web/filter/RequestLogger.java | 77 ++++++++++++++++++++++
.../org/apache/nifi/web/filter/TimerFilter.java | 72 ++++++++++++++++++++
.../nifi-web-api/src/main/webapp/WEB-INF/web.xml | 16 +++++
.../resources/conf/clustered/node1/logback.xml | 3 +
.../resources/conf/clustered/node2/logback.xml | 3 +
.../src/test/resources/conf/default/logback.xml | 3 +
.../src/test/resources/conf/logback.xml | 3 +
.../src/test/resources/upgrade/conf/logback.xml | 3 +
9 files changed, 183 insertions(+)
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-resources/src/main/resources/conf/logback.xml b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-resources/src/main/resources/conf/logback.xml
index e6e50e4..93a9afa 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-resources/src/main/resources/conf/logback.xml
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-resources/src/main/resources/conf/logback.xml
@@ -157,6 +157,9 @@
<logger name="org.apache.nifi.cluster.authorization" level="INFO" additivity="false">
<appender-ref ref="USER_FILE"/>
</logger>
+ <logger name="org.apache.nifi.web.filter.RequestLogger" level="INFO" additivity="false">
+ <appender-ref ref="USER_FILE"/>
+ </logger>
<logger name="org.apache.nifi.web.api.AccessResource" level="INFO" additivity="false">
<appender-ref ref="USER_FILE"/>
</logger>
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/filter/RequestLogger.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/filter/RequestLogger.java
new file mode 100644
index 0000000..bb30a1e
--- /dev/null
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/filter/RequestLogger.java
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.web.filter;
+
+import java.io.IOException;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.nifi.authorization.user.NiFiUserUtils;
+import org.apache.nifi.logging.NiFiLog;
+import org.apache.nifi.authorization.user.NiFiUser;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * A filter to log requests.
+ *
+ */
+public class RequestLogger implements Filter {
+
+ private static final Logger logger = new NiFiLog(LoggerFactory.getLogger(RequestLogger.class));
+
+ @Override
+ public void doFilter(final ServletRequest req, final ServletResponse resp, final FilterChain filterChain)
+ throws IOException, ServletException {
+
+ final HttpServletRequest request = (HttpServletRequest) req;
+
+ // only log http requests has https requests are logged elsewhere
+ if ("http".equalsIgnoreCase(request.getScheme())) {
+ final NiFiUser user = NiFiUserUtils.getNiFiUser();
+
+ // get the user details for the log message
+ String identity = "<no user found>";
+ if (user != null) {
+ identity = user.getIdentity();
+ }
+
+ // log the request attempt - response details will be logged later
+ logger.info(String.format("Attempting request for (%s) %s %s (source ip: %s)", identity, request.getMethod(),
+ request.getRequestURL().toString(), request.getRemoteAddr()));
+ }
+
+ // continue the filter chain
+ filterChain.doFilter(req, resp);
+ }
+
+ @Override
+ public void init(final FilterConfig config) {
+ }
+
+ @Override
+ public void destroy() {
+ }
+
+}
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/filter/TimerFilter.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/filter/TimerFilter.java
new file mode 100644
index 0000000..a522fa5
--- /dev/null
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/filter/TimerFilter.java
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.web.filter;
+
+import java.io.IOException;
+import java.util.concurrent.TimeUnit;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.nifi.cluster.coordination.http.replication.RequestReplicator;
+import org.apache.nifi.logging.NiFiLog;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * A filter to time requests.
+ *
+ */
+public class TimerFilter implements Filter {
+
+ private static final Logger logger = new NiFiLog(LoggerFactory.getLogger(TimerFilter.class));
+
+ @Override
+ public void doFilter(final ServletRequest req, final ServletResponse resp, final FilterChain filterChain)
+ throws IOException, ServletException {
+
+ final HttpServletRequest request = (HttpServletRequest) req;
+
+ final long start = System.nanoTime();
+ try {
+ filterChain.doFilter(req, resp);
+ } finally {
+ final long stop = System.nanoTime();
+ final String requestId = ((HttpServletRequest) req).getHeader(RequestReplicator.REQUEST_TRANSACTION_ID_HEADER);
+ final String replicationHeader = ((HttpServletRequest) req).getHeader(RequestReplicator.REPLICATION_INDICATOR_HEADER);
+ final boolean validationPhase = RequestReplicator.NODE_CONTINUE.equals(replicationHeader);
+ final String requestDescription = validationPhase ? "Validation Phase of Request " + requestId : "Request ID " + requestId;
+
+ logger.debug("{} {} from {} duration for {}: {} millis", request.getMethod(), request.getRequestURL().toString(),
+ req.getRemoteHost(), requestDescription, TimeUnit.MILLISECONDS.convert(stop - start, TimeUnit.NANOSECONDS));
+ }
+ }
+
+ @Override
+ public void init(final FilterConfig config) {
+ }
+
+ @Override
+ public void destroy() {
+ }
+
+}
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/webapp/WEB-INF/web.xml b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/webapp/WEB-INF/web.xml
index 894798e..8ec3fa4 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/webapp/WEB-INF/web.xml
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/webapp/WEB-INF/web.xml
@@ -51,6 +51,14 @@
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
+ <filter-name>timer</filter-name>
+ <filter-class>org.apache.nifi.web.filter.TimerFilter</filter-class>
+ </filter>
+ <filter-mapping>
+ <filter-name>timer</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
+ <filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
@@ -58,4 +66,12 @@
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
+ <filter>
+ <filter-name>requestLogger</filter-name>
+ <filter-class>org.apache.nifi.web.filter.RequestLogger</filter-class>
+ </filter>
+ <filter-mapping>
+ <filter-name>requestLogger</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
</web-app>
diff --git a/nifi-system-tests/nifi-system-test-suite/src/test/resources/conf/clustered/node1/logback.xml b/nifi-system-tests/nifi-system-test-suite/src/test/resources/conf/clustered/node1/logback.xml
index 6c3f0bb..ecda00a 100644
--- a/nifi-system-tests/nifi-system-test-suite/src/test/resources/conf/clustered/node1/logback.xml
+++ b/nifi-system-tests/nifi-system-test-suite/src/test/resources/conf/clustered/node1/logback.xml
@@ -145,6 +145,9 @@
<logger name="org.apache.nifi.cluster.authorization" level="INFO" additivity="false">
<appender-ref ref="USER_FILE"/>
</logger>
+ <logger name="org.apache.nifi.web.filter.RequestLogger" level="INFO" additivity="false">
+ <appender-ref ref="USER_FILE"/>
+ </logger>
<logger name="org.apache.nifi.web.api.AccessResource" level="INFO" additivity="false">
<appender-ref ref="USER_FILE"/>
</logger>
diff --git a/nifi-system-tests/nifi-system-test-suite/src/test/resources/conf/clustered/node2/logback.xml b/nifi-system-tests/nifi-system-test-suite/src/test/resources/conf/clustered/node2/logback.xml
index a24bb4b..4de6225 100644
--- a/nifi-system-tests/nifi-system-test-suite/src/test/resources/conf/clustered/node2/logback.xml
+++ b/nifi-system-tests/nifi-system-test-suite/src/test/resources/conf/clustered/node2/logback.xml
@@ -147,6 +147,9 @@
<logger name="org.apache.nifi.cluster.authorization" level="INFO" additivity="false">
<appender-ref ref="USER_FILE"/>
</logger>
+ <logger name="org.apache.nifi.web.filter.RequestLogger" level="INFO" additivity="false">
+ <appender-ref ref="USER_FILE"/>
+ </logger>
<logger name="org.apache.nifi.web.api.AccessResource" level="INFO" additivity="false">
<appender-ref ref="USER_FILE"/>
</logger>
diff --git a/nifi-system-tests/nifi-system-test-suite/src/test/resources/conf/default/logback.xml b/nifi-system-tests/nifi-system-test-suite/src/test/resources/conf/default/logback.xml
index c42b3be..cc69039 100644
--- a/nifi-system-tests/nifi-system-test-suite/src/test/resources/conf/default/logback.xml
+++ b/nifi-system-tests/nifi-system-test-suite/src/test/resources/conf/default/logback.xml
@@ -144,6 +144,9 @@
<logger name="org.apache.nifi.cluster.authorization" level="INFO" additivity="false">
<appender-ref ref="USER_FILE"/>
</logger>
+ <logger name="org.apache.nifi.web.filter.RequestLogger" level="INFO" additivity="false">
+ <appender-ref ref="USER_FILE"/>
+ </logger>
<logger name="org.apache.nifi.web.api.AccessResource" level="INFO" additivity="false">
<appender-ref ref="USER_FILE"/>
</logger>
diff --git a/nifi-toolkit/nifi-toolkit-admin/src/test/resources/conf/logback.xml b/nifi-toolkit/nifi-toolkit-admin/src/test/resources/conf/logback.xml
index c38e0d4..042ee48 100644
--- a/nifi-toolkit/nifi-toolkit-admin/src/test/resources/conf/logback.xml
+++ b/nifi-toolkit/nifi-toolkit-admin/src/test/resources/conf/logback.xml
@@ -133,6 +133,9 @@
<logger name="org.apache.nifi.cluster.authorization" level="INFO" additivity="false">
<appender-ref ref="USER_FILE"/>
</logger>
+ <logger name="org.apache.nifi.web.filter.RequestLogger" level="INFO" additivity="false">
+ <appender-ref ref="USER_FILE"/>
+ </logger>
<!--
diff --git a/nifi-toolkit/nifi-toolkit-admin/src/test/resources/upgrade/conf/logback.xml b/nifi-toolkit/nifi-toolkit-admin/src/test/resources/upgrade/conf/logback.xml
index 710f1dc..d3ace7a 100644
--- a/nifi-toolkit/nifi-toolkit-admin/src/test/resources/upgrade/conf/logback.xml
+++ b/nifi-toolkit/nifi-toolkit-admin/src/test/resources/upgrade/conf/logback.xml
@@ -134,6 +134,9 @@
<logger name="org.apache.nifi.cluster.authorization" level="INFO" additivity="false">
<appender-ref ref="USER_FILE"/>
</logger>
+ <logger name="org.apache.nifi.web.filter.RequestLogger" level="INFO" additivity="false">
+ <appender-ref ref="USER_FILE"/>
+ </logger>
<!--