logstash-filter-grok 2.0.3 → 2.0.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0c29b365e4050c830edadd3f1787b202851ab318
4
- data.tar.gz: ab4929767f5244347793b383bb33a4ae8f86741d
3
+ metadata.gz: 4f63a7bd21e2ebab75a4cc94f26731323f8912f7
4
+ data.tar.gz: a2ae27830a99ac4b0bdeb2a2ff76c8e1f691e1f3
5
5
  SHA512:
6
- metadata.gz: 41c8bb7ec629ab346b44013059e05ddc13bffaa2ca9eb25f1c8d1c8d730fb6272d6ae8d22e2651a99bd3d524d9fe870a51132558a0cda01c3a0cf3af05e4ae4b
7
- data.tar.gz: 2825968293377f7ec3f0e6a327e6863e0bbd8c78f24100ab46f630f14f5e361006c2ff8e262efb3293544a769617dcc4644ad448a3eb972d40fdbd917973369d
6
+ metadata.gz: 872e7daf89f4af9d5d92ceea3ba791b24fd358e1a1f7e5d738032b2f90286b256ad544ae06a24231c290535526efaef3a772fbb81e09f991928b17521ce83563
7
+ data.tar.gz: 4a8ff939e59d6c704946618e315b17df72ae5fedaa2cdd9449652c22f4987f14458f31e15d8bbd9b63e6f0d371c85585143de1676b8e30485e528871a006a009
@@ -1,3 +1,7 @@
1
+ # 2.0.5
2
+ - Depend on logstash-core-plugin-api instead of logstash-core, removing the need to mass update plugins on major releases of logstash
3
+ # 2.0.4
4
+ - New dependency requirements for logstash-core for the 5.0 release
1
5
  ## 2.0.3
2
6
  - fix fieldref assignment to avoid assumption on mutable object
3
7
  ## 2.0.0
@@ -83,7 +83,7 @@
83
83
  #
84
84
  # Grok sits on top of regular expressions, so any regular expressions are valid
85
85
  # in grok as well. The regular expression library is Oniguruma, and you can see
86
- # the full supported regexp syntax https://github.com/kkos/oniguruma/blob/master/doc/RE[on the Onigiruma
86
+ # the full supported regexp syntax https://github.com/kkos/oniguruma/blob/master/doc/RE[on the Oniguruma
87
87
  # site].
88
88
  #
89
89
  # ==== Custom Patterns
@@ -120,7 +120,7 @@
120
120
  # [source,ruby]
121
121
  # filter {
122
122
  # grok {
123
- # patterns_dir => "./patterns"
123
+ # patterns_dir => ["./patterns"]
124
124
  # match => { "message" => "%{SYSLOGBASE} %{POSTFIX_QUEUEID:queue_id}: %{GREEDYDATA:syslog_message}" }
125
125
  # }
126
126
  # }
@@ -166,8 +166,8 @@
166
166
  # Logstash ships by default with a bunch of patterns, so you don't
167
167
  # necessarily need to define this yourself unless you are adding additional
168
168
  # patterns. You can point to multiple pattern directories using this setting
169
- # Note that Grok will read all files in the directory and assume its a pattern
170
- # file (including any tilde backup files)
169
+ # Note that Grok will read all files in the directory matching the patterns_files_glob
170
+ # and assume its a pattern file (including any tilde backup files)
171
171
  # [source,ruby]
172
172
  # patterns_dir => ["/opt/logstash/patterns", "/opt/logstash/extra_patterns"]
173
173
  #
@@ -180,6 +180,10 @@
180
180
  # NUMBER \d+
181
181
  config :patterns_dir, :validate => :array, :default => []
182
182
 
183
+ # Glob pattern, used to select the pattern files in the directories
184
+ # specified by patterns_dir
185
+ config :patterns_files_glob, :validate => :string, :default => "*"
186
+
183
187
  # Break on first match. The first successful match by grok will result in the
184
188
  # filter being finished. If you want grok to try all patterns (maybe you are
185
189
  # parsing different things), then set this to false.
@@ -241,19 +245,9 @@
241
245
 
242
246
  # Have @@patterns_path show first. Last-in pattern definitions win; this
243
247
  # will let folks redefine built-in patterns at runtime.
244
- @patterns_dir = @@patterns_path.to_a + @patterns_dir
245
- @logger.info? and @logger.info("Grok patterns path", :patterns_dir => @patterns_dir)
246
- @patterns_dir.each do |path|
247
- if File.directory?(path)
248
- path = File.join(path, "*")
249
- end
250
-
251
- Dir.glob(path).each do |file|
252
- @logger.info? and @logger.info("Grok loading patterns from file", :path => file)
253
- @patternfiles << file
254
- end
255
- end
256
-
248
+ @patternfiles += patterns_files_from_paths(@@patterns_path.to_a, "*")
249
+ @patternfiles += patterns_files_from_paths(@patterns_dir, @patterns_files_glob)
250
+
257
251
  @patterns = Hash.new { |h,k| h[k] = [] }
258
252
 
259
253
  @logger.info? and @logger.info("Match data", :match => @match)
@@ -352,6 +346,23 @@
352
346
  end
353
347
  end
354
348
 
349
+ private
350
+ def patterns_files_from_paths(paths, glob)
351
+ patternfiles = []
352
+ @logger.info? and @logger.info("Grok patterns path", :paths => paths)
353
+ paths.each do |path|
354
+ if File.directory?(path)
355
+ path = File.join(path, glob)
356
+ end
357
+
358
+ Dir.glob(path).each do |file|
359
+ @logger.info? and @logger.info("Grok loading patterns from file", :path => file)
360
+ patternfiles << file
361
+ end
362
+ end
363
+ patternfiles
364
+ end # def patterns_files_from_paths
365
+
355
366
  private
356
367
  def add_patterns_from_files(paths, grok)
357
368
  paths.each do |path|
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
 
3
3
  s.name = 'logstash-filter-grok'
4
- s.version = '2.0.3'
4
+ s.version = '2.0.5'
5
5
  s.licenses = ['Apache License (2.0)']
6
6
  s.summary = "Parse arbitrary text and structure it."
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/plugin install gemname. This gem is not a stand-alone program"
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
20
20
  s.metadata = { "logstash_plugin" => "true", "logstash_group" => "filter" }
21
21
 
22
22
  # Gem dependencies
23
- s.add_runtime_dependency "logstash-core", ">= 2.0.0.beta2", "< 3.0.0"
23
+ s.add_runtime_dependency "logstash-core-plugin-api", "~> 1.0"
24
24
 
25
25
  s.add_runtime_dependency 'jls-grok', '~> 0.11.1'
26
26
  s.add_runtime_dependency 'logstash-patterns-core'
@@ -1,11 +1,21 @@
1
1
  # encoding: utf-8
2
2
  require "logstash/devutils/rspec/spec_helper"
3
3
 
4
- # running the grok code outside a logstash package means
5
- # LOGSTASH_HOME will not be defined, so let's set it here
6
- # before requiring the grok filter
7
- unless LogStash::Environment.const_defined?(:LOGSTASH_HOME)
8
- LogStash::Environment::LOGSTASH_HOME = File.expand_path("../../../", __FILE__)
4
+
5
+ module LogStash::Environment
6
+ # running the grok code outside a logstash package means
7
+ # LOGSTASH_HOME will not be defined, so let's set it here
8
+ # before requiring the grok filter
9
+ unless self.const_defined?(:LOGSTASH_HOME)
10
+ LOGSTASH_HOME = File.expand_path("../../../", __FILE__)
11
+ end
12
+
13
+ # also :pattern_path method must exist so we define it too
14
+ unless self.method_defined?(:pattern_path)
15
+ def pattern_path(path)
16
+ ::File.join(LOGSTASH_HOME, "patterns", path)
17
+ end
18
+ end
9
19
  end
10
20
 
11
21
  require "logstash/filters/grok"
@@ -661,7 +671,7 @@ describe LogStash::Filters::Grok do
661
671
 
662
672
  before do
663
673
  FileUtils.mkdir(pattern_dir) unless has_pattern_dir?
664
- @file = Tempfile.new('grok', pattern_dir);
674
+ @file = Tempfile.new('grok', pattern_dir)
665
675
  @file.write('WORD \b[2-5]\b')
666
676
  @file.close
667
677
  end
@@ -690,8 +700,12 @@ describe LogStash::Filters::Grok do
690
700
 
691
701
  before do
692
702
  FileUtils.mkdir(pattern_dir) unless has_pattern_dir?
693
- @file1 = Tempfile.new('grok', pattern_dir); @file1.write('WORD \b[2-5]\b'); @file1.close
694
- @file2 = Tempfile.new('grok', tmpdir); @file2.write('WORD \b[0-1]\b'); @file2.close
703
+ @file1 = Tempfile.new('grok', pattern_dir)
704
+ @file1.write('WORD \b[2-5]\b')
705
+ @file1.close
706
+ @file2 = Tempfile.new('grok', tmpdir)
707
+ @file2.write('WORD \b[0-1]\b')
708
+ @file2.close
695
709
  end
696
710
 
697
711
  let(:config) do
@@ -710,6 +724,36 @@ describe LogStash::Filters::Grok do
710
724
  end
711
725
  end
712
726
 
727
+ describe "patterns with file glob" do
728
+ require 'tmpdir'
729
+ require 'tempfile'
730
+
731
+ let(:tmpdir) { Dir.mktmpdir(nil, "/tmp") }
732
+
733
+ before do
734
+ @file3 = Tempfile.new(['grok', '.pattern'], tmpdir)
735
+ @file3.write('WORD \b[0-1]\b')
736
+ @file3.close
737
+ @file4 = Tempfile.new(['grok', '.pattern.old'], tmpdir)
738
+ @file4.write('WORD \b[2-5]\b')
739
+ @file4.close
740
+ end
741
+
742
+ let(:config) do
743
+ "filter { grok { patterns_dir => \"#{tmpdir}\" patterns_files_glob => \"*.pattern\" pattern => \"%{WORD:word}\" } }"
744
+ end
745
+
746
+ sample("message" => '0') do
747
+ insist { subject["tags"] } == nil
748
+ end
749
+
750
+ after do
751
+ @file3.unlink
752
+ @file4.unlink
753
+ FileUtils.remove_entry tmpdir
754
+ end
755
+ end
756
+
713
757
  describe "grok with nil coerced value" do
714
758
  config <<-CONFIG
715
759
  filter {
metadata CHANGED
@@ -1,77 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-filter-grok
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.3
4
+ version: 2.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elastic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-16 00:00:00.000000000 Z
11
+ date: 2016-03-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: logstash-core
15
- version_requirements: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - '>='
18
- - !ruby/object:Gem::Version
19
- version: 2.0.0.beta2
20
- - - <
21
- - !ruby/object:Gem::Version
22
- version: 3.0.0
23
14
  requirement: !ruby/object:Gem::Requirement
24
15
  requirements:
25
- - - '>='
26
- - !ruby/object:Gem::Version
27
- version: 2.0.0.beta2
28
- - - <
16
+ - - "~>"
29
17
  - !ruby/object:Gem::Version
30
- version: 3.0.0
18
+ version: '1.0'
19
+ name: logstash-core-plugin-api
31
20
  prerelease: false
32
21
  type: :runtime
33
- - !ruby/object:Gem::Dependency
34
- name: jls-grok
35
22
  version_requirements: !ruby/object:Gem::Requirement
36
23
  requirements:
37
- - - ~>
24
+ - - "~>"
38
25
  - !ruby/object:Gem::Version
39
- version: 0.11.1
26
+ version: '1.0'
27
+ - !ruby/object:Gem::Dependency
40
28
  requirement: !ruby/object:Gem::Requirement
41
29
  requirements:
42
- - - ~>
30
+ - - "~>"
43
31
  - !ruby/object:Gem::Version
44
32
  version: 0.11.1
33
+ name: jls-grok
45
34
  prerelease: false
46
35
  type: :runtime
47
- - !ruby/object:Gem::Dependency
48
- name: logstash-patterns-core
49
36
  version_requirements: !ruby/object:Gem::Requirement
50
37
  requirements:
51
- - - '>='
38
+ - - "~>"
52
39
  - !ruby/object:Gem::Version
53
- version: '0'
40
+ version: 0.11.1
41
+ - !ruby/object:Gem::Dependency
54
42
  requirement: !ruby/object:Gem::Requirement
55
43
  requirements:
56
- - - '>='
44
+ - - ">="
57
45
  - !ruby/object:Gem::Version
58
46
  version: '0'
47
+ name: logstash-patterns-core
59
48
  prerelease: false
60
49
  type: :runtime
61
- - !ruby/object:Gem::Dependency
62
- name: logstash-devutils
63
50
  version_requirements: !ruby/object:Gem::Requirement
64
51
  requirements:
65
- - - '>='
52
+ - - ">="
66
53
  - !ruby/object:Gem::Version
67
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
68
56
  requirement: !ruby/object:Gem::Requirement
69
57
  requirements:
70
- - - '>='
58
+ - - ">="
71
59
  - !ruby/object:Gem::Version
72
60
  version: '0'
61
+ name: logstash-devutils
73
62
  prerelease: false
74
63
  type: :development
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
75
69
  description: This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program
76
70
  email: info@elastic.co
77
71
  executables: []
@@ -99,12 +93,12 @@ require_paths:
99
93
  - lib
100
94
  required_ruby_version: !ruby/object:Gem::Requirement
101
95
  requirements:
102
- - - '>='
96
+ - - ">="
103
97
  - !ruby/object:Gem::Version
104
98
  version: '0'
105
99
  required_rubygems_version: !ruby/object:Gem::Requirement
106
100
  requirements:
107
- - - '>='
101
+ - - ">="
108
102
  - !ruby/object:Gem::Version
109
103
  version: '0'
110
104
  requirements: []