logstash-filter-rest 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
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.