logstash-filter-mutate 3.4.0 → 3.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/docs/index.asciidoc +10 -0
- data/lib/logstash/filters/mutate.rb +8 -0
- data/logstash-filter-mutate.gemspec +1 -1
- data/spec/filters/mutate_spec.rb +50 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 69f20a428551c3f5ddd1667b08cc5b8138f66f8e966aeb797ccda27684dd4e13
|
4
|
+
data.tar.gz: 0c0875f25f5feb9beba83a08ddb0c1576f11a72c3596c2d0c4fd7acc3ac715ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 93692404a440374e0b958222b3ee13dac1d1e54822c3fb119e3fdfc1af328a644aef58cc5f4f92dcf3ee20820c17f773504f4d3ed44f91e7982ab5033829984c
|
7
|
+
data.tar.gz: 73a58d81336dc139c41c1c50e55d90c59a7cadd3016864cfc5affd96766241940e203efb24b1b9cb6d79608997f0492d80be4ffa501bc02242b25c18d5dcd809
|
data/docs/index.asciidoc
CHANGED
@@ -83,6 +83,7 @@ This plugin supports the following configuration options plus the <<plugins-{typ
|
|
83
83
|
| <<plugins-{type}s-{plugin}-update>> |<<hash,hash>>|No
|
84
84
|
| <<plugins-{type}s-{plugin}-uppercase>> |<<array,array>>|No
|
85
85
|
| <<plugins-{type}s-{plugin}-capitalize>> |<<array,array>>|No
|
86
|
+
| <<plugins-{type}s-{plugin}-tag_on_failure>> |<<string,string>>|No
|
86
87
|
|=======================================================================
|
87
88
|
|
88
89
|
Also see <<plugins-{type}s-{plugin}-common-options>> for a list of options supported by all
|
@@ -372,5 +373,14 @@ Example:
|
|
372
373
|
}
|
373
374
|
}
|
374
375
|
|
376
|
+
[id="plugins-{type}s-{plugin}-tag_on_failure"]
|
377
|
+
===== `tag_on_failure`
|
378
|
+
|
379
|
+
* Value type is <<string,string>>
|
380
|
+
* The default value for this setting is `_mutate_error`
|
381
|
+
|
382
|
+
If a failure occurs during the application of this mutate filter, the rest of
|
383
|
+
the operations are aborted and the provided tag is added to the event.
|
384
|
+
|
375
385
|
[id="plugins-{type}s-{plugin}-common-options"]
|
376
386
|
include::{include_path}/{type}.asciidoc[]
|
@@ -207,6 +207,9 @@ class LogStash::Filters::Mutate < LogStash::Filters::Base
|
|
207
207
|
# }
|
208
208
|
config :copy, :validate => :hash
|
209
209
|
|
210
|
+
# Tag to apply if the operation errors
|
211
|
+
config :tag_on_failure, :validate => :string, :default => '_mutate_error'
|
212
|
+
|
210
213
|
TRUE_REGEX = (/^(true|t|yes|y|1|1.0)$/i).freeze
|
211
214
|
FALSE_REGEX = (/^(false|f|no|n|0|0.0)$/i).freeze
|
212
215
|
CONVERT_PREFIX = "convert_".freeze
|
@@ -262,6 +265,11 @@ class LogStash::Filters::Mutate < LogStash::Filters::Base
|
|
262
265
|
copy(event) if @copy
|
263
266
|
|
264
267
|
filter_matched(event)
|
268
|
+
rescue => ex
|
269
|
+
meta = { :exception => ex.message }
|
270
|
+
meta[:backtrace] = ex.backtrace if logger.debug?
|
271
|
+
logger.warn('Exception caught while applying mutate filter', meta)
|
272
|
+
event.tag(@tag_on_failure)
|
265
273
|
end
|
266
274
|
|
267
275
|
private
|
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
|
3
3
|
s.name = 'logstash-filter-mutate'
|
4
|
-
s.version = '3.
|
4
|
+
s.version = '3.5.0'
|
5
5
|
s.licenses = ['Apache License (2.0)']
|
6
6
|
s.summary = "Performs mutations on fields"
|
7
7
|
s.description = "This gem is a Logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gemname. This gem is not a stand-alone program"
|
data/spec/filters/mutate_spec.rb
CHANGED
@@ -23,6 +23,56 @@ module LogStash::Environment
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
+
logstash_version = Gem::Version.create(LOGSTASH_CORE_VERSION)
|
27
|
+
|
28
|
+
if (Gem::Requirement.create('~> 7.0').satisfied_by?(logstash_version) ||
|
29
|
+
(Gem::Requirement.create('~> 6.4').satisfied_by?(logstash_version) && LogStash::SETTINGS.get('config.field_reference.parser') == 'STRICT'))
|
30
|
+
describe LogStash::Filters::Mutate do
|
31
|
+
let(:config) { Hash.new }
|
32
|
+
subject(:mutate_filter) { LogStash::Filters::Mutate.new(config) }
|
33
|
+
|
34
|
+
before(:each) { mutate_filter.register }
|
35
|
+
|
36
|
+
let(:event) { LogStash::Event.new(attrs) }
|
37
|
+
|
38
|
+
context 'when operation would cause an error' do
|
39
|
+
|
40
|
+
let(:invalid_field_name) { "[[][[[[]message" }
|
41
|
+
let(:config) do
|
42
|
+
super().merge("add_field" => {invalid_field_name => "nope"})
|
43
|
+
end
|
44
|
+
|
45
|
+
shared_examples('catch and tag error') do
|
46
|
+
let(:expected_tag) { '_mutate_error' }
|
47
|
+
|
48
|
+
let(:event) { LogStash::Event.new({"message" => "foo"})}
|
49
|
+
|
50
|
+
context 'when the event is filtered' do
|
51
|
+
before(:each) { mutate_filter.filter(event) }
|
52
|
+
it 'does not raise an exception' do
|
53
|
+
# noop
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'tags the event with the expected tag' do
|
57
|
+
expect(event).to include('tags')
|
58
|
+
expect(event.get('tags')).to include(expected_tag)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
context 'when `tag_on_failure` is not provided' do
|
64
|
+
include_examples 'catch and tag error'
|
65
|
+
end
|
66
|
+
|
67
|
+
context 'when `tag_on_failure` is provided' do
|
68
|
+
include_examples 'catch and tag error' do
|
69
|
+
let(:expected_tag) { 'my_custom_tag' }
|
70
|
+
let(:config) { super().merge('tag_on_failure' => expected_tag) }
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
26
76
|
|
27
77
|
describe LogStash::Filters::Mutate do
|
28
78
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-filter-mutate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-06-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|