fluent-plugin-filter-list 0.6.2 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +6 -5
- data/.travis.yml +0 -1
- data/Gemfile +1 -1
- data/README.md +18 -1
- data/fluent-plugin-out_filter_list.gemspec +4 -4
- data/lib/base.rb +8 -0
- data/lib/fluent/plugin/filter_filter_list.rb +5 -1
- data/lib/fluent/plugin/out_filter_list.rb +4 -1
- data/lib/fluent/plugin/out_filter_list/version.rb +1 -1
- metadata +11 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 38d4d2dffb112f1d1848a5b19b65012a8b58a98dfd109b2a8aebfc6778ef581d
|
4
|
+
data.tar.gz: 0ea84ac0818d740133cec309afca9a7e6dcc3fa51e9d4374dda61759da3530ae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 900364d81be98c75bee9dec18ba8d30521e05931ba692c977e7e849570df4e295e49bb0194a8718219a6037a1990835836ca7e3da28d1bfc3e2e9f99081f1f1a
|
7
|
+
data.tar.gz: 80c826720b8cdb2797c291d6f962d42cea8cd80d42ba5451bad75ee13f7a4e9a01d17d2debf20e77f8aeac02e37a165b7e1bd82add57745064b2135f8d0d1d36
|
data/.rubocop.yml
CHANGED
@@ -1,6 +1,9 @@
|
|
1
|
-
|
1
|
+
AllCops:
|
2
|
+
TargetRubyVersion: 2.6
|
3
|
+
|
4
|
+
Naming/MethodParameterName:
|
2
5
|
Enabled: false
|
3
|
-
|
6
|
+
Layout/LineLength:
|
4
7
|
Max: 160
|
5
8
|
Style/FormatString:
|
6
9
|
EnforcedStyle: sprintf
|
@@ -45,9 +48,7 @@ Style/TernaryParentheses:
|
|
45
48
|
Enabled: false
|
46
49
|
Style/BlockDelimiters:
|
47
50
|
AutoCorrect: false
|
48
|
-
Style/BlockDelimiters:
|
49
|
-
AutoCorrect: false
|
50
51
|
Style/BracesAroundHashParameters:
|
51
52
|
Enabled: false
|
52
|
-
Layout/
|
53
|
+
Layout/FirstHashElementIndentation:
|
53
54
|
EnforcedStyle: consistent
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -29,6 +29,9 @@ This repository contains two plugins: _Filter_ and _Output_, and expects two mai
|
|
29
29
|
Use the `filter_list` filter. Configure fluentd as follows.
|
30
30
|
|
31
31
|
#### ACMatcher
|
32
|
+
|
33
|
+
_ACMatcher_ is a matcher using [Aho–Corasick algorithm](https://en.wikipedia.org/wiki/Aho%E2%80%93Corasick_algorithm) to enable faster multiple-pattern matching.
|
34
|
+
|
32
35
|
```
|
33
36
|
<filter pattern>
|
34
37
|
@type filter_list
|
@@ -66,7 +69,7 @@ While the following message is passed through as the target field specified in t
|
|
66
69
|
}
|
67
70
|
```
|
68
71
|
|
69
|
-
Additionally, the following message is also omitted since `filter_empty` is `true`. The value is determined to be empty when the
|
72
|
+
Additionally, the following message is also omitted since `filter_empty` is `true`. The value is determined to be empty when the trimmed value is empty.
|
70
73
|
|
71
74
|
```json
|
72
75
|
{
|
@@ -75,6 +78,19 @@ Additionally, the following message is also omitted since `filter_empty` is `tru
|
|
75
78
|
}
|
76
79
|
```
|
77
80
|
|
81
|
+
All these examples are _blacklisting_. That is, a text matched to a pattern will be determined to be filtered. The plugin provides the other type of filtering: _whitelisting_. With the type you can filter records that don't match any pattern. You can enable _whitelisting_ by specifying the `action` (the default value is _blacklist_) explicitly as follows.
|
82
|
+
|
83
|
+
```
|
84
|
+
<filter>
|
85
|
+
@type filter_list
|
86
|
+
|
87
|
+
filter AC
|
88
|
+
key_to_filter foo
|
89
|
+
pattern_file_paths blacklist.txt
|
90
|
+
action whitelist
|
91
|
+
</filter>
|
92
|
+
```
|
93
|
+
|
78
94
|
#### IPMatcher
|
79
95
|
```
|
80
96
|
<filter pattern>
|
@@ -132,6 +148,7 @@ The other use case is to filter messages likewise, but process the filtered mess
|
|
132
148
|
key_to_filter field_name_you_want_to_filter
|
133
149
|
pattern_file_paths ["file_including_patterns_separated_by_new_line"]
|
134
150
|
filter_empty true
|
151
|
+
action blacklist
|
135
152
|
|
136
153
|
<retag>
|
137
154
|
add_prefix x # retag non-filtered messages whose tag will be "x.your_tag"
|
@@ -21,9 +21,9 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
22
22
|
spec.require_paths = ['lib']
|
23
23
|
|
24
|
-
spec.add_development_dependency 'bundler', '~> 2.
|
25
|
-
spec.add_development_dependency 'minitest', '~> 5.
|
26
|
-
spec.add_development_dependency 'rake', '~>
|
27
|
-
spec.add_development_dependency 'test-unit', '~> 3.
|
24
|
+
spec.add_development_dependency 'bundler', '~> 2.1'
|
25
|
+
spec.add_development_dependency 'minitest', '~> 5.13'
|
26
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
27
|
+
spec.add_development_dependency 'test-unit', '~> 3.3'
|
28
28
|
spec.add_runtime_dependency 'fluentd', '>= 0.14.0', '< 2.0.0'
|
29
29
|
end
|
data/lib/base.rb
ADDED
@@ -2,12 +2,14 @@ require 'fluent/plugin/out_filter_list/version'
|
|
2
2
|
require 'matcher'
|
3
3
|
require 'fluent/plugin/filter'
|
4
4
|
require 'ip'
|
5
|
+
require 'base'
|
5
6
|
|
6
7
|
module Fluent
|
7
8
|
module Plugin
|
8
9
|
class FilterListFilter < Filter
|
9
10
|
include Matchers
|
10
11
|
include IP
|
12
|
+
include BaseFilter
|
11
13
|
|
12
14
|
Plugin.register_filter('filter_list', self)
|
13
15
|
|
@@ -15,6 +17,7 @@ module Fluent
|
|
15
17
|
config_param :key_to_filter, :string, default: nil
|
16
18
|
config_param :pattern_file_paths, :array, default: [], value_type: :string
|
17
19
|
config_param :filter_empty, :bool, default: false
|
20
|
+
config_param :action, :enum, list: %i[blacklist whitelist], default: :blacklist
|
18
21
|
|
19
22
|
def configure(conf)
|
20
23
|
super
|
@@ -24,7 +27,8 @@ module Fluent
|
|
24
27
|
|
25
28
|
def filter(_tag, _time, record)
|
26
29
|
target = record[@key_to_filter]
|
27
|
-
|
30
|
+
|
31
|
+
return nil if should_filter?(target)
|
28
32
|
|
29
33
|
record
|
30
34
|
end
|
@@ -2,12 +2,14 @@ require 'fluent/plugin/output'
|
|
2
2
|
require 'fluent/plugin/out_filter_list/version'
|
3
3
|
require 'matcher'
|
4
4
|
require 'ip'
|
5
|
+
require 'base'
|
5
6
|
|
6
7
|
module Fluent
|
7
8
|
module Plugin
|
8
9
|
class FilterListOutput < Output
|
9
10
|
include Matchers
|
10
11
|
include IP
|
12
|
+
include BaseFilter
|
11
13
|
|
12
14
|
Plugin.register_output('filter_list', self)
|
13
15
|
|
@@ -17,6 +19,7 @@ module Fluent
|
|
17
19
|
config_param :key_to_filter, :string, default: nil
|
18
20
|
config_param :pattern_file_paths, :array, default: [], value_type: :string
|
19
21
|
config_param :filter_empty, :bool, default: false
|
22
|
+
config_param :action, :enum, list: %i[blacklist whitelist], default: :blacklist
|
20
23
|
|
21
24
|
config_section :retag, required: true, multi: false do
|
22
25
|
config_param :tag, :string, default: nil
|
@@ -72,7 +75,7 @@ module Fluent
|
|
72
75
|
target = record[@key_to_filter]
|
73
76
|
log.debug "target: #{target}"
|
74
77
|
# Do filter
|
75
|
-
if
|
78
|
+
if should_filter?(target)
|
76
79
|
if @retag_for_filtered
|
77
80
|
t = @retag_for_filtered.tag || ((tag && !tag.empty?) ? @prefix_for_filtered_tag + tag : @retag_for_filtered.add_prefix)
|
78
81
|
log.debug "re-emit with the tag: '#{t}', originally: '#{tag}'"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-filter-list
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shun Yanaura
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-01-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,56 +16,56 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '2.
|
19
|
+
version: '2.1'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '2.
|
26
|
+
version: '2.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: minitest
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '5.
|
33
|
+
version: '5.13'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '5.
|
40
|
+
version: '5.13'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '13.0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '13.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: test-unit
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '3.
|
61
|
+
version: '3.3'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '3.
|
68
|
+
version: '3.3'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: fluentd
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -106,6 +106,7 @@ files:
|
|
106
106
|
- bin/console
|
107
107
|
- bin/setup
|
108
108
|
- fluent-plugin-out_filter_list.gemspec
|
109
|
+
- lib/base.rb
|
109
110
|
- lib/fluent/plugin/filter_filter_list.rb
|
110
111
|
- lib/fluent/plugin/out_filter_list.rb
|
111
112
|
- lib/fluent/plugin/out_filter_list/version.rb
|