logstash-filter-rest 0.1.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a94fca67a197ad30fca3782583513944208a718d
4
+ data.tar.gz: 2220544e6212c28180aee679701c5b1d30639db0
5
+ SHA512:
6
+ metadata.gz: 9f40441ed6c6c920a264b7de52cf4d04d96b72b171f03df9ef4371deb0eb34260dcc7ac400e439d34d74cd2e440533b359aef9b6b463bb8447ac1f8b13d0a790
7
+ data.tar.gz: fa852b78a2bcf66ba6aea78d4fd9546420d3eed72483869282b7222b2fb69fc82a571d685768a221f4e5c22e351a47a643f11a4af74e558556a3517e3982441e
data/CONTRIBUTORS ADDED
@@ -0,0 +1,11 @@
1
+ The following is a list of people who have contributed ideas, code, bug
2
+ reports, or in general have helped logstash along its way.
3
+
4
+ Contributors:
5
+ * Aaron Mildenstein (untergeek)
6
+ * Pier-Hugues Pellerin (ph)
7
+
8
+ Note: If you've sent us patches, bug reports, or otherwise contributed to
9
+ Logstash, and you aren't on the list above and want to be, please let us know
10
+ and we'll make sure you're here. Contributions from folks like you are what make
11
+ open source awesome.
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,13 @@
1
+ Copyright (c) 2012–2015 Elasticsearch <http://www.elastic.co>
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
data/README.md ADDED
@@ -0,0 +1,58 @@
1
+ # Logstash REST Filter
2
+
3
+ This is a filter plugin for [Logstash](https://github.com/elasticsearch/logstash).
4
+
5
+ It is fully free and fully open source. The license is Apache 2.0, meaning you are pretty much free to use it however you want in whatever way.
6
+
7
+ ## Documentation
8
+
9
+ This logstash filter provides an easy way to access RESTful Resources within logstash. It can be used to post data to a REST API or to gather data and save it in your log file.
10
+
11
+ ## Usage
12
+ ### 1. Installation
13
+ You can use the built in plugin tool of Logstash to install the filter:
14
+ ```
15
+ $LS_HOME/bin/plugin install logstash-filter-rest
16
+ ```
17
+
18
+ Or you can build it yourself:
19
+ ```
20
+ git clone https://github.com/lucashenning/logstash-filter-rest.git
21
+ bundle install
22
+ gem build logstash-filter-rest.gemspec
23
+ $LS_HOME/bin/plugin install logstash-filter-rest-0.1.0.gem
24
+ ```
25
+
26
+ ### 2. Filter Configuration
27
+ Add the following inside the filter section of your logstash configuration:
28
+
29
+ ```sh
30
+ rest {
31
+ url => "http://icanhazip.com" # string (required)
32
+ json => true # boolean (optional, default = false)
33
+ method => "post" # string (optional, default = "get")
34
+ header => { # hash (optional)
35
+ 'key1' => 'value1'
36
+ 'key2' => 'value2'
37
+ 'key3' => '%{somefield}'
38
+ }
39
+ params => { # hash (optional, only available for method => "post")
40
+ 'key1' => 'value1'
41
+ 'key2' => 'value2'
42
+ 'key3' => '%{somefield}'
43
+ }
44
+ }
45
+ ```
46
+ ### 3. Accessing the result
47
+ If you are expecting a single output and 'json => false' you will get a logstash field called 'response' which contains the result.
48
+ If 'json => true' you will get a new logstash field for each key.
49
+
50
+ ## Contributing
51
+
52
+ All contributions are welcome: ideas, patches, documentation, bug reports, complaints, and even something you drew up on a napkin.
53
+
54
+ Programming is not a required skill. Whatever you've seen about open source and maintainers or community members saying "send patches or die" - you will not see that here.
55
+
56
+ It is more important to the community that you are able to contribute.
57
+
58
+ For more information about contributing, see the [CONTRIBUTING](https://github.com/elasticsearch/logstash/blob/master/CONTRIBUTING.md) file.
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "logstash/devutils/rake"
@@ -0,0 +1,66 @@
1
+ # encoding: utf-8
2
+ require "logstash/filters/base"
3
+ require "logstash/namespace"
4
+
5
+ # Logstash REST Filter
6
+ # This filter calls a defined URL and saves the answer into a specified field.
7
+ #
8
+ class LogStash::Filters::Rest < LogStash::Filters::Base
9
+
10
+ # Usage:
11
+ #
12
+ # 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
+ # }
28
+ # }
29
+ #
30
+ config_name "rest"
31
+
32
+ # Replace the message with this value.
33
+ config :url, :validate => :string, :required => true
34
+ config :method, :validate => :string, :default => "get"
35
+ config :json, :validate => :boolean, :default => false
36
+ config :header, :validate => :hash, :default => { }
37
+ config :params, :validate => :hash, :default => { }
38
+
39
+ public
40
+ def register
41
+ require "json"
42
+ require "rest_client"
43
+ @resource = RestClient::Resource.new(@url, :headers => @header)
44
+ end # def register
45
+
46
+ public
47
+ def filter(event)
48
+ return unless filter?(event)
49
+ if method == "get"
50
+ response = @resource.get()
51
+ else
52
+ response = @resource.post(@params)
53
+ end
54
+
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
62
+ end
63
+
64
+ filter_matched(event)
65
+ end # def filter
66
+ end # class LogStash::Filters::Rest
@@ -0,0 +1,24 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'logstash-filter-rest'
3
+ s.version = '0.1.1'
4
+ s.licenses = ['Apache License (2.0)']
5
+ s.summary = "This filter requests data from a RESTful Web Service."
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"
7
+ s.authors = ["Lucas Henning"]
8
+ s.email = 'mail@hurb.de'
9
+ s.homepage = "https://github.com/lucashenning/logstash-filter-rest/"
10
+ s.require_paths = ["lib"]
11
+
12
+ # Files
13
+ s.files = `git ls-files`.split($\)
14
+ # Tests
15
+ s.test_files = s.files.grep(%r{^(test|spec|features)/})
16
+
17
+ # Special flag to let us know this is actually a logstash plugin
18
+ s.metadata = { "logstash_plugin" => "true", "logstash_group" => "filter" }
19
+
20
+ # Gem dependencies
21
+ s.add_runtime_dependency "logstash-core", '>= 1.4.0', '< 2.0.0'
22
+ s.add_runtime_dependency "rest-client", '>= 1.8.0'
23
+ s.add_development_dependency 'logstash-devutils'
24
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+ require "logstash/filters/rest"
3
+
4
+ describe LogStash::Filters::Rest do
5
+ describe "Set to Rest Filter" do
6
+ let(:config) do <<-CONFIG
7
+ filter {
8
+ rest {
9
+ url => "http://icanhazip.com"
10
+ }
11
+ }
12
+ CONFIG
13
+ end
14
+
15
+ sample("message" => "some text") do
16
+ expect(subject).to include("message")
17
+ end
18
+ end
19
+ end
@@ -0,0 +1 @@
1
+ require "logstash/devutils/rspec/spec_helper"
metadata ADDED
@@ -0,0 +1,104 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: logstash-filter-rest
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Lucas Henning
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-06-03 00:00:00.000000000 Z
12
+ dependencies:
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: 1.4.0
20
+ - - <
21
+ - !ruby/object:Gem::Version
22
+ version: 2.0.0
23
+ requirement: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - '>='
26
+ - !ruby/object:Gem::Version
27
+ version: 1.4.0
28
+ - - <
29
+ - !ruby/object:Gem::Version
30
+ version: 2.0.0
31
+ prerelease: false
32
+ type: :runtime
33
+ - !ruby/object:Gem::Dependency
34
+ name: rest-client
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - '>='
38
+ - !ruby/object:Gem::Version
39
+ version: 1.8.0
40
+ requirement: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - '>='
43
+ - !ruby/object:Gem::Version
44
+ version: 1.8.0
45
+ prerelease: false
46
+ type: :runtime
47
+ - !ruby/object:Gem::Dependency
48
+ name: logstash-devutils
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ requirement: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - '>='
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ prerelease: false
60
+ type: :development
61
+ 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
+ email: mail@hurb.de
63
+ executables: []
64
+ extensions: []
65
+ extra_rdoc_files: []
66
+ files:
67
+ - CONTRIBUTORS
68
+ - Gemfile
69
+ - LICENSE
70
+ - README.md
71
+ - Rakefile
72
+ - lib/logstash/filters/rest.rb
73
+ - logstash-filter-rest.gemspec
74
+ - spec/filters/rest_spec.rb
75
+ - spec/spec_helper.rb
76
+ homepage: https://github.com/lucashenning/logstash-filter-rest/
77
+ licenses:
78
+ - Apache License (2.0)
79
+ metadata:
80
+ logstash_plugin: 'true'
81
+ logstash_group: filter
82
+ post_install_message:
83
+ rdoc_options: []
84
+ require_paths:
85
+ - lib
86
+ required_ruby_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - '>='
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ required_rubygems_version: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - '>='
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ requirements: []
97
+ rubyforge_project:
98
+ rubygems_version: 2.4.6
99
+ signing_key:
100
+ specification_version: 4
101
+ summary: This filter requests data from a RESTful Web Service.
102
+ test_files:
103
+ - spec/filters/rest_spec.rb
104
+ - spec/spec_helper.rb