logstash-filter-rest 0.1.1 → 0.1.2

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: a94fca67a197ad30fca3782583513944208a718d
4
- data.tar.gz: 2220544e6212c28180aee679701c5b1d30639db0
3
+ metadata.gz: e8c8d2b4220c5092406a81cda2f4f0701062c7f2
4
+ data.tar.gz: 1f8fb32dc101b4dd2c2e451c18340d5ed779fa85
5
5
  SHA512:
6
- metadata.gz: 9f40441ed6c6c920a264b7de52cf4d04d96b72b171f03df9ef4371deb0eb34260dcc7ac400e439d34d74cd2e440533b359aef9b6b463bb8447ac1f8b13d0a790
7
- data.tar.gz: fa852b78a2bcf66ba6aea78d4fd9546420d3eed72483869282b7222b2fb69fc82a571d685768a221f4e5c22e351a47a643f11a4af74e558556a3517e3982441e
6
+ metadata.gz: ed36752171106b82c479e530766930d0c744b59e7ae735ef2185fe05095a930bd2f066def5fb186da1a592dd928612c8ab59c9baecbf23a5470025d4b4dfcd1c
7
+ data.tar.gz: d72839c3c82dfa05efa8fcf3db97f5030d7ff96c3f82ada876405240cf397ec967ba0bc8e6e1bcec1a9150c6c4b0e8df0a37325133ee41d944528a2a0a871dfa
data/README.md CHANGED
@@ -10,7 +10,7 @@ This logstash filter provides an easy way to access RESTful Resources within log
10
10
 
11
11
  ## Usage
12
12
  ### 1. Installation
13
- You can use the built in plugin tool of Logstash to install the filter:
13
+ You can use the built-in plugin tool of Logstash to install the filter:
14
14
  ```
15
15
  $LS_HOME/bin/plugin install logstash-filter-rest
16
16
  ```
@@ -28,18 +28,19 @@ Add the following inside the filter section of your logstash configuration:
28
28
 
29
29
  ```sh
30
30
  rest {
31
- url => "http://icanhazip.com" # string (required)
31
+ url => "http://example.com" # string (required, with field reference: "http://example.com?id=%{id}")
32
32
  json => true # boolean (optional, default = false)
33
33
  method => "post" # string (optional, default = "get")
34
+ sprintf => true # boolean (optional, default = false, set this to true if you want to use field references in url, header or params
34
35
  header => { # hash (optional)
35
- 'key1' => 'value1'
36
- 'key2' => 'value2'
37
- 'key3' => '%{somefield}'
36
+ "key1" => "value1"
37
+ "key2" => "value2"
38
+ "key3" => "%{somefield}" # Please set sprintf to true if you want to use field references
38
39
  }
39
40
  params => { # hash (optional, only available for method => "post")
40
- 'key1' => 'value1'
41
- 'key2' => 'value2'
42
- 'key3' => '%{somefield}'
41
+ "key1" => "value1"
42
+ "key2" => "value2"
43
+ "key3" => "%{somefield}" # Please set sprintf to true if you want to use field references
43
44
  }
44
45
  }
45
46
  ```
@@ -1,6 +1,8 @@
1
1
  # encoding: utf-8
2
2
  require "logstash/filters/base"
3
3
  require "logstash/namespace"
4
+ require "json"
5
+ require "rest_client"
4
6
 
5
7
  # Logstash REST Filter
6
8
  # This filter calls a defined URL and saves the answer into a specified field.
@@ -10,55 +12,88 @@ class LogStash::Filters::Rest < LogStash::Filters::Base
10
12
  # Usage:
11
13
  #
12
14
  # filter {
13
- # rest {
14
- # url => "http://example.com"
15
- # header => {
16
- # 'key1' => 'value1'
17
- # 'key2' => 'value2'
18
- # 'key3' => '%{somefield}'
19
- # }
20
- # method => "post"
21
- # json => true
22
- # params => {
23
- # 'key1' => 'value1'
24
- # 'key2' => 'value2'
25
- # 'key3' => '%{somefield}'
26
- # }
27
- # }
15
+ # rest {
16
+ # url => "http://example.com"
17
+ # method => "post"
18
+ # json => true
19
+ # sprintf => true
20
+ # params => {
21
+ # 'key1' => 'value1'
22
+ # 'key2' => 'value2'
23
+ # 'key3' => '%{somefield}'
24
+ # }
25
+ # header => {
26
+ # 'key1' => 'value1'
27
+ # 'key2' => 'value2'
28
+ # 'key3' => '%{somefield}'
29
+ # }
30
+ # }
28
31
  # }
29
32
  #
30
33
  config_name "rest"
31
34
 
32
- # Replace the message with this value.
33
35
  config :url, :validate => :string, :required => true
34
36
  config :method, :validate => :string, :default => "get"
35
37
  config :json, :validate => :boolean, :default => false
38
+ config :sprintf, :validate => :boolean, :default => false
36
39
  config :header, :validate => :hash, :default => { }
37
40
  config :params, :validate => :hash, :default => { }
38
41
 
39
42
  public
40
43
  def register
41
- require "json"
42
- require "rest_client"
43
- @resource = RestClient::Resource.new(@url, :headers => @header)
44
+
44
45
  end # def register
45
46
 
46
47
  public
47
48
  def filter(event)
48
49
  return unless filter?(event)
49
- if method == "get"
50
- response = @resource.get()
51
- else
52
- response = @resource.post(@params)
53
- end
50
+
51
+ begin
52
+
53
+ if sprintf == true
54
+ begin
55
+ # sprintf values
56
+ @url = event.sprintf(@url)
57
+ @header.each do |key, value|
58
+ @header[key] = event.sprintf(value)
59
+ end
60
+ @params.each do |key, value|
61
+ @params[key] = event.sprintf(value)
62
+ end
63
+ rescue
64
+ @logger.error("Error during sprintf", :url => url, :method => method, :json => json, :header => header, :params => params)
65
+ @logger.error("Rest Error Message:", :message => $!.message)
66
+ @logger.error("Backtrace:", :backtrace => $!.backtrace)
67
+ end
68
+ end
54
69
 
55
- if json == true
56
- h = JSON.parse(response)
57
- h.each do |key, value|
58
- event[key] = value
59
- end
60
- else
61
- event['response'] = response.strip
70
+ case method
71
+ when "get"
72
+ response = RestClient.get @url, @header
73
+ when "post"
74
+ response = RestClient.post @url, @params, @header
75
+ else
76
+ response = "invalid method"
77
+ @logger.error("Invalid method:", :method => method)
78
+ end
79
+
80
+ if json == true
81
+ begin
82
+ h = JSON.parse(response)
83
+ h.each do |key, value|
84
+ event[key] = value
85
+ end
86
+ rescue
87
+ event['jsonerror'] = "unable to parse json"
88
+ end
89
+ else
90
+ event['response'] = response.strip
91
+ end
92
+ rescue
93
+ @logger.error("Error in Rest Filter. Parameters:", :url => url, :method => method, :json => json, :header => header, :params => params)
94
+ @logger.error("Rest Error Message:", :message => $!.message)
95
+ @logger.error("Backtrace:", :backtrace => $!.backtrace)
96
+ event['resterror'] = "Rest Filter Error. Please see Logstash Error Log for further information."
62
97
  end
63
98
 
64
99
  filter_matched(event)
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'logstash-filter-rest'
3
- s.version = '0.1.1'
3
+ s.version = '0.1.2'
4
4
  s.licenses = ['Apache License (2.0)']
5
5
  s.summary = "This filter requests data from a RESTful Web Service."
6
6
  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"
@@ -18,7 +18,8 @@ Gem::Specification.new do |s|
18
18
  s.metadata = { "logstash_plugin" => "true", "logstash_group" => "filter" }
19
19
 
20
20
  # Gem dependencies
21
- s.add_runtime_dependency "logstash-core", '>= 1.4.0', '< 2.0.0'
21
+ s.add_runtime_dependency "logstash-core", '>= 1.5.0', '< 2.0.0'
22
22
  s.add_runtime_dependency "rest-client", '>= 1.8.0'
23
+ s.add_runtime_dependency 'logstash-codec-json'
23
24
  s.add_development_dependency 'logstash-devutils'
24
25
  end
metadata CHANGED
@@ -1,63 +1,77 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-filter-rest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lucas Henning
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-03 00:00:00.000000000 Z
11
+ date: 2015-06-23 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
14
+ requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
16
  - - '>='
18
17
  - !ruby/object:Gem::Version
19
- version: 1.4.0
18
+ version: 1.5.0
20
19
  - - <
21
20
  - !ruby/object:Gem::Version
22
21
  version: 2.0.0
23
- requirement: !ruby/object:Gem::Requirement
22
+ name: logstash-core
23
+ prerelease: false
24
+ type: :runtime
25
+ version_requirements: !ruby/object:Gem::Requirement
24
26
  requirements:
25
27
  - - '>='
26
28
  - !ruby/object:Gem::Version
27
- version: 1.4.0
29
+ version: 1.5.0
28
30
  - - <
29
31
  - !ruby/object:Gem::Version
30
32
  version: 2.0.0
31
- prerelease: false
32
- type: :runtime
33
33
  - !ruby/object:Gem::Dependency
34
+ requirement: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - '>='
37
+ - !ruby/object:Gem::Version
38
+ version: 1.8.0
34
39
  name: rest-client
40
+ prerelease: false
41
+ type: :runtime
35
42
  version_requirements: !ruby/object:Gem::Requirement
36
43
  requirements:
37
44
  - - '>='
38
45
  - !ruby/object:Gem::Version
39
46
  version: 1.8.0
47
+ - !ruby/object:Gem::Dependency
40
48
  requirement: !ruby/object:Gem::Requirement
41
49
  requirements:
42
50
  - - '>='
43
51
  - !ruby/object:Gem::Version
44
- version: 1.8.0
52
+ version: '0'
53
+ name: logstash-codec-json
45
54
  prerelease: false
46
55
  type: :runtime
47
- - !ruby/object:Gem::Dependency
48
- name: logstash-devutils
49
56
  version_requirements: !ruby/object:Gem::Requirement
50
57
  requirements:
51
58
  - - '>='
52
59
  - !ruby/object:Gem::Version
53
60
  version: '0'
61
+ - !ruby/object:Gem::Dependency
54
62
  requirement: !ruby/object:Gem::Requirement
55
63
  requirements:
56
64
  - - '>='
57
65
  - !ruby/object:Gem::Version
58
66
  version: '0'
67
+ name: logstash-devutils
59
68
  prerelease: false
60
69
  type: :development
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
61
75
  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
62
76
  email: mail@hurb.de
63
77
  executables: []
@@ -95,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
95
109
  version: '0'
96
110
  requirements: []
97
111
  rubyforge_project:
98
- rubygems_version: 2.4.6
112
+ rubygems_version: 2.4.5
99
113
  signing_key:
100
114
  specification_version: 4
101
115
  summary: This filter requests data from a RESTful Web Service.