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 +4 -4
- data/README.md +9 -8
- data/lib/logstash/filters/rest.rb +66 -31
- data/logstash-filter-rest.gemspec +3 -2
- metadata +27 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e8c8d2b4220c5092406a81cda2f4f0701062c7f2
|
4
|
+
data.tar.gz: 1f8fb32dc101b4dd2c2e451c18340d5ed779fa85
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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://
|
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
|
-
|
36
|
-
|
37
|
-
|
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
|
-
|
41
|
-
|
42
|
-
|
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
|
-
#
|
14
|
-
#
|
15
|
-
#
|
16
|
-
#
|
17
|
-
#
|
18
|
-
#
|
19
|
-
#
|
20
|
-
#
|
21
|
-
#
|
22
|
-
#
|
23
|
-
#
|
24
|
-
#
|
25
|
-
#
|
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
|
-
|
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
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
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
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
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.
|
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.
|
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.
|
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-
|
11
|
+
date: 2015-06-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
|
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.
|
18
|
+
version: 1.5.0
|
20
19
|
- - <
|
21
20
|
- !ruby/object:Gem::Version
|
22
21
|
version: 2.0.0
|
23
|
-
|
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.
|
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:
|
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.
|
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.
|