1
1
package br .com .labbs .monitor .filter ;
2
2
3
- import br .com .labbs .monitor .MonitorMetrics ;
4
- import io .prometheus .client .SimpleTimer ;
3
+ import java .io .IOException ;
4
+ import java .io .InputStream ;
5
+ import java .util .ArrayList ;
6
+ import java .util .List ;
7
+ import java .util .Properties ;
8
+ import java .util .logging .Logger ;
5
9
6
10
import javax .servlet .Filter ;
7
11
import javax .servlet .FilterChain ;
12
16
import javax .servlet .ServletResponse ;
13
17
import javax .servlet .http .HttpServletRequest ;
14
18
import javax .servlet .http .HttpServletResponse ;
15
- import java .io .IOException ;
16
- import java .io .InputStream ;
17
- import java .util .ArrayList ;
18
- import java .util .List ;
19
- import java .util .Properties ;
20
- import java .util .regex .Matcher ;
21
- import java .util .regex .Pattern ;
22
- import java .util .logging .Level ;
23
- import java .util .logging .Logger ;
19
+
20
+ import br .com .labbs .monitor .MonitorMetrics ;
21
+ import io .prometheus .client .SimpleTimer ;
24
22
/**
25
23
* The MetricsFilter class provides a high-level filter that enables collection of (latency, amount and response
26
24
* size metrics) for Servlet performance, based on schema, status code, HTTP method and URI path.
@@ -62,11 +60,13 @@ public class MetricsCollectorFilter implements Filter {
62
60
private static final String APPLICATION_VERSION = "application-version" ;
63
61
private static final String DEFAULT_FILTER_REGEX = "[^A-zÀ-ú .,]+" ;
64
62
private static final String FILTER_REGEX_PARAM = "error-info-regex" ;
63
+ private static final String ENABLE_ERROR_REGEX_DEPENDENCY = "enable-error-regex-dependency" ;
65
64
private static final String FILTER_MAX_SIZE_PARAM = "error-info-max-size" ;
66
65
private static final Logger LOGGER = Logger .getLogger (MetricsCollectorFilter .class .getName ());
67
66
private final List <String > exclusions = new ArrayList <String >();
68
67
private int filter_max_size = 50 ;
69
68
private String filter_regex = "" ;
69
+ private boolean enableErrorDependencyRegex = true ; //defaut
70
70
71
71
72
72
private int pathDepth = 0 ;
@@ -118,6 +118,12 @@ public void init(FilterConfig filterConfig) {
118
118
if (isNotEmpty (exportJvmMetricsStr )) {
119
119
exportJvmMetrics = Boolean .parseBoolean (exportJvmMetricsStr );
120
120
}
121
+
122
+ String enableErrorRegexDependencyParam = filterConfig .getInitParameter (ENABLE_ERROR_REGEX_DEPENDENCY );
123
+ if ("false" .equalsIgnoreCase (enableErrorRegexDependencyParam )) {
124
+ enableErrorDependencyRegex = false ;
125
+ }
126
+
121
127
exportApplicationVersion = filterConfig .getInitParameter (APPLICATION_VERSION );
122
128
123
129
filter_max_size = filterConfig .getInitParameter (FILTER_MAX_SIZE_PARAM ) != null ?
@@ -128,8 +134,13 @@ public void init(FilterConfig filterConfig) {
128
134
String version = isNotEmpty (exportApplicationVersion ) ? exportApplicationVersion : getApplicationVersionFromPropertiesFile ();
129
135
// Allow users to capture error messages
130
136
errorMessageParam = filterConfig .getInitParameter (ERROR_MESSAGE_PARAM );
131
-
132
- MonitorMetrics .INSTANCE .init (exportJvmMetrics , version , buckets );
137
+
138
+ String dependencyErrorRegex = null ;
139
+ if (enableErrorDependencyRegex ) {
140
+ dependencyErrorRegex = filter_regex ;
141
+ }
142
+
143
+ MonitorMetrics .INSTANCE .init (exportJvmMetrics , version , dependencyErrorRegex , buckets );
133
144
}
134
145
135
146
/**
0 commit comments