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 <joew...@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> <!--