logstash-filter-fingerprint 3.0.2 → 3.0.3
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/CHANGELOG.md +16 -9
- data/lib/logstash/filters/fingerprint.rb +51 -13
- data/logstash-filter-fingerprint.gemspec +1 -1
- data/spec/filters/fingerprint_spec.rb +18 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b3889ab595d8eca1bc3da12afedeccf70c57370d
|
4
|
+
data.tar.gz: e6b9ac28e026a168dc2b59ca51cd9df3af7369b6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8ca3a82727adf9af513c611fe06151e22c251043a222bde4bb699e889186bf04631b27780ba75ad83daa9682a615a5d9fed40b543e35e0e82a4481e5c5d8edc1
|
7
|
+
data.tar.gz: 0a8f6d898e1d2109e968284c7c26c5feadc6bf66d8d61b64d6a25634ae1cd78af01002da0c4001f0edd83bdaec334983490f30edbabe2ea35eafa1f647532d6f
|
data/CHANGELOG.md
CHANGED
@@ -1,19 +1,26 @@
|
|
1
|
+
## 3.0.3
|
2
|
+
- improve documentation and register exception messaging
|
3
|
+
|
1
4
|
## 3.0.2
|
2
5
|
- Relax constraint on logstash-core-plugin-api to >= 1.60 <= 2.99
|
3
6
|
|
4
7
|
## 3.0.1
|
5
|
-
|
8
|
+
- internal: Republish all the gems under jruby.
|
9
|
+
|
6
10
|
## 3.0.0
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
11
|
+
- internal,deps: Update the plugin to the version 2.0 of the plugin api, this change is required for Logstash 5.0 compatibility. See https://github.com/elastic/logstash/issues/5141
|
12
|
+
|
13
|
+
## 2.0.5
|
14
|
+
- internal,deps: Depend on logstash-core-plugin-api instead of logstash-core, removing the need to mass update plugins on major releases of logstash
|
15
|
+
|
16
|
+
## 2.0.4
|
17
|
+
- internal,deps: New dependency requirements for logstash-core for the 5.0 release
|
18
|
+
|
12
19
|
## 2.0.3
|
13
|
-
- Eager loading of libraries, optimizations and cleanups https://github.com/logstash-plugins/logstash-filter-fingerprint/pull/10
|
20
|
+
- internal,cleanup: Eager loading of libraries, optimizations and cleanups https://github.com/logstash-plugins/logstash-filter-fingerprint/pull/10
|
14
21
|
|
15
22
|
## 2.0.0
|
16
|
-
- Plugins were updated to follow the new shutdown semantic, this mainly allows Logstash to instruct input plugins to terminate gracefully,
|
23
|
+
- internal: Plugins were updated to follow the new shutdown semantic, this mainly allows Logstash to instruct input plugins to terminate gracefully,
|
17
24
|
instead of using Thread.raise on the plugins' threads. Ref: https://github.com/elastic/logstash/pull/3895
|
18
|
-
- Dependency on logstash-core update to 2.0
|
25
|
+
- internal,deps: Dependency on logstash-core update to 2.0
|
19
26
|
|
@@ -7,30 +7,67 @@ require "ipaddr"
|
|
7
7
|
require "murmurhash3"
|
8
8
|
require "securerandom"
|
9
9
|
|
10
|
-
#
|
10
|
+
# Create consistent hashes (fingerprints) of one or more fields and store
|
11
|
+
# the result in a new field.
|
12
|
+
#
|
13
|
+
# This can e.g. be used to create consistent document ids when inserting
|
14
|
+
# events into Elasticsearch, allowing events in Logstash to cause existing
|
15
|
+
# documents to be updated rather than new documents to be created.
|
16
|
+
#
|
17
|
+
# NOTE: When using any method other than 'UUID', 'PUNCTUATION' or 'MURMUR3'
|
18
|
+
# you must set the key, otherwise the plugin will raise an exception
|
19
|
+
#
|
20
|
+
# NOTE: When the `target` option is set to `UUID` the result won't be
|
21
|
+
# a consistent hash but a random
|
22
|
+
# https://en.wikipedia.org/wiki/Universally_unique_identifier[UUID].
|
23
|
+
# To generate UUIDs, prefer the <<plugins-filters-uuid,uuid filter>>.
|
11
24
|
class LogStash::Filters::Fingerprint < LogStash::Filters::Base
|
12
25
|
config_name "fingerprint"
|
13
26
|
|
14
|
-
#
|
27
|
+
# The name(s) of the source field(s) whose contents will be used
|
28
|
+
# to create the fingerprint. If an array is given, see the
|
29
|
+
# `concatenate_sources` option.
|
15
30
|
config :source, :validate => :array, :default => 'message'
|
16
31
|
|
17
|
-
#
|
18
|
-
#
|
32
|
+
# The name of the field where the generated fingerprint will be stored.
|
33
|
+
# Any current contents of that field will be overwritten.
|
19
34
|
config :target, :validate => :string, :default => 'fingerprint'
|
20
35
|
|
21
|
-
# When used with `IPV4_NETWORK` method fill in the subnet prefix length
|
22
|
-
# Not required for `MURMUR3` or `UUID` methods
|
23
|
-
# With other methods fill in the
|
36
|
+
# When used with the `IPV4_NETWORK` method fill in the subnet prefix length.
|
37
|
+
# Not required for `MURMUR3`, `PUNCTUATION` or `UUID` methods.
|
38
|
+
# With other methods fill in the HMAC key.
|
24
39
|
config :key, :validate => :string
|
25
40
|
|
26
|
-
# When set to
|
27
|
-
# base64 encoded rather than hex encoded.
|
41
|
+
# When set to `true`, the `SHA1`, `SHA256`, `SHA384`, `SHA512` and `MD5` fingerprint methods will produce
|
42
|
+
# base64 encoded rather than hex encoded strings.
|
28
43
|
config :base64encode, :validate => :boolean, :default => false
|
29
44
|
|
30
|
-
#
|
45
|
+
# The fingerprint method to use.
|
46
|
+
#
|
47
|
+
# If set to `SHA1`, `SHA256`, `SHA384`, `SHA512`, or `MD5` the
|
48
|
+
# cryptographic keyed-hash function with the same name will be used to
|
49
|
+
# generate the fingerprint. If set to `MURMUR3` the non-cryptographic
|
50
|
+
# MurmurHash function will be used.
|
51
|
+
#
|
52
|
+
# If set to `IPV4_NETWORK` the input data needs to be a IPv4 address and
|
53
|
+
# the hash value will be the masked-out address using the number of bits
|
54
|
+
# specified in the `key` option. For example, with "1.2.3.4" as the input
|
55
|
+
# and `key` set to 16, the hash becomes "1.2.0.0".
|
56
|
+
#
|
57
|
+
# If set to `PUNCTUATION`, all non-punctuation characters will be removed
|
58
|
+
# from the input string.
|
59
|
+
#
|
60
|
+
# If set to `UUID`, a
|
61
|
+
# https://en.wikipedia.org/wiki/Universally_unique_identifier[UUID] will
|
62
|
+
# be generated. The result will be random and thus not a consistent hash.
|
31
63
|
config :method, :validate => ['SHA1', 'SHA256', 'SHA384', 'SHA512', 'MD5', "MURMUR3", "IPV4_NETWORK", "UUID", "PUNCTUATION"], :required => true, :default => 'SHA1'
|
32
64
|
|
33
|
-
# When set to `true
|
65
|
+
# When set to `true` and `method` isn't `UUID` or `PUNCTUATION`, the
|
66
|
+
# plugin concatenates the names and values of all fields given in the
|
67
|
+
# `source` option into one string (like the old checksum filter) before
|
68
|
+
# doing the fingerprint computation. If `false` and multiple source
|
69
|
+
# fields are given, the target field will be an array with fingerprints
|
70
|
+
# of the source fields given.
|
34
71
|
config :concatenate_sources, :validate => :boolean, :default => false
|
35
72
|
|
36
73
|
def register
|
@@ -42,7 +79,7 @@ class LogStash::Filters::Fingerprint < LogStash::Filters::Base
|
|
42
79
|
when :IPV4_NETWORK
|
43
80
|
if @key.nil?
|
44
81
|
raise LogStash::ConfigurationError, I18n.t(
|
45
|
-
"logstash.
|
82
|
+
"logstash.runner.configuration.invalid_plugin_register",
|
46
83
|
:plugin => "filter",
|
47
84
|
:type => "fingerprint",
|
48
85
|
:error => "Key value is empty. please fill in a subnet prefix length"
|
@@ -58,7 +95,7 @@ class LogStash::Filters::Fingerprint < LogStash::Filters::Base
|
|
58
95
|
else
|
59
96
|
if @key.nil?
|
60
97
|
raise LogStash::ConfigurationError, I18n.t(
|
61
|
-
"logstash.
|
98
|
+
"logstash.runner.configuration.invalid_plugin_register",
|
62
99
|
:plugin => "filter",
|
63
100
|
:type => "fingerprint",
|
64
101
|
:error => "Key value is empty. Please fill in an encryption key"
|
@@ -101,6 +138,7 @@ class LogStash::Filters::Fingerprint < LogStash::Filters::Base
|
|
101
138
|
end
|
102
139
|
end
|
103
140
|
end
|
141
|
+
filter_matched(event)
|
104
142
|
end
|
105
143
|
|
106
144
|
private
|
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
|
3
3
|
s.name = 'logstash-filter-fingerprint'
|
4
|
-
s.version = '3.0.
|
4
|
+
s.version = '3.0.3'
|
5
5
|
s.licenses = ['Apache License (2.0)']
|
6
6
|
s.summary = "Fingerprint fields using by replacing values with a consistent hash."
|
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"
|
@@ -286,4 +286,22 @@ describe LogStash::Filters::Fingerprint do
|
|
286
286
|
end
|
287
287
|
end
|
288
288
|
|
289
|
+
describe "execution triggers addition of fields and tags" do
|
290
|
+
config <<-CONFIG
|
291
|
+
filter {
|
292
|
+
fingerprint {
|
293
|
+
source => 'field1'
|
294
|
+
method => 'PUNCTUATION'
|
295
|
+
add_field => { 'myfield' => 'myvalue' }
|
296
|
+
add_tag => ['mytag']
|
297
|
+
}
|
298
|
+
}
|
299
|
+
CONFIG
|
300
|
+
|
301
|
+
sample("field1" => "Hello, World!") do
|
302
|
+
insist { subject.get("myfield") } == "myvalue"
|
303
|
+
insist { subject.get("tags") } == ["mytag"]
|
304
|
+
end
|
305
|
+
end
|
306
|
+
|
289
307
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-filter-fingerprint
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-04-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,7 +95,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
95
95
|
version: '0'
|
96
96
|
requirements: []
|
97
97
|
rubyforge_project:
|
98
|
-
rubygems_version: 2.
|
98
|
+
rubygems_version: 2.4.8
|
99
99
|
signing_key:
|
100
100
|
specification_version: 4
|
101
101
|
summary: Fingerprint fields using by replacing values with a consistent hash.
|