logstash-input-relp 0.1.2 → 0.1.3
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/Gemfile +1 -2
- data/README.md +12 -21
- data/lib/logstash/inputs/relp.rb +4 -1
- data/lib/logstash/util/relp.rb +9 -2
- data/logstash-input-relp.gemspec +2 -2
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2148057f735b2a5edb327beff5d106602dad57c9
|
4
|
+
data.tar.gz: 04537891291c2c4d367544459da01a09103ca092
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2177fd80b7ed5854bdbd8c0f3709edaf11a82c78e5cd9b47af49b1ca8f3d71414732e5dec029180c46bacf2be0303d6061dfa4f59f712539b39c6927d504ec03
|
7
|
+
data.tar.gz: 5bb0e0b254571216fa0553e6e24627bc9304c54ed1b4a9e1c98e7dc14c7446c9a391e1efb854e0c34d715fae3fdf0c205f4b616b7d4a1e4793d590496d53904e
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -22,7 +22,7 @@ Need help? Try #logstash on freenode IRC or the logstash-users@googlegroups.com
|
|
22
22
|
#### Code
|
23
23
|
- To get started, you'll need JRuby with the Bundler gem installed.
|
24
24
|
|
25
|
-
- Create a new plugin or clone and existing from the GitHub [logstash-plugins](https://github.com/logstash-plugins) organization.
|
25
|
+
- Create a new plugin or clone and existing from the GitHub [logstash-plugins](https://github.com/logstash-plugins) organization. We also provide [example plugins](https://github.com/logstash-plugins?query=example).
|
26
26
|
|
27
27
|
- Install dependencies
|
28
28
|
```sh
|
@@ -31,26 +31,15 @@ bundle install
|
|
31
31
|
|
32
32
|
#### Test
|
33
33
|
|
34
|
-
|
35
|
-
bundle exec rspec
|
36
|
-
```
|
34
|
+
- Update your dependencies
|
37
35
|
|
38
|
-
|
39
|
-
|
40
|
-
gem "logstash", :github => "elasticsearch/logstash", :branch => "1.5"
|
41
|
-
```
|
42
|
-
To test against another version or a local Logstash, edit the `Gemfile` to specify an alternative location, for example:
|
43
|
-
```ruby
|
44
|
-
gem "logstash", :github => "elasticsearch/logstash", :ref => "master"
|
45
|
-
```
|
46
|
-
```ruby
|
47
|
-
gem "logstash", :path => "/your/local/logstash"
|
36
|
+
```sh
|
37
|
+
bundle install
|
48
38
|
```
|
49
39
|
|
50
|
-
|
40
|
+
- Run tests
|
51
41
|
|
52
42
|
```sh
|
53
|
-
bundle install
|
54
43
|
bundle exec rspec
|
55
44
|
```
|
56
45
|
|
@@ -58,13 +47,13 @@ bundle exec rspec
|
|
58
47
|
|
59
48
|
#### 2.1 Run in a local Logstash clone
|
60
49
|
|
61
|
-
- Edit Logstash `
|
50
|
+
- Edit Logstash `Gemfile` and add the local plugin path, for example:
|
62
51
|
```ruby
|
63
52
|
gem "logstash-filter-awesome", :path => "/your/local/logstash-filter-awesome"
|
64
53
|
```
|
65
|
-
-
|
54
|
+
- Install plugin
|
66
55
|
```sh
|
67
|
-
|
56
|
+
bin/plugin install --no-verify
|
68
57
|
```
|
69
58
|
- Run Logstash with your plugin
|
70
59
|
```sh
|
@@ -74,6 +63,8 @@ At this point any modifications to the plugin code will be applied to this local
|
|
74
63
|
|
75
64
|
#### 2.2 Run in an installed Logstash
|
76
65
|
|
66
|
+
You can use the same **2.1** method to run your plugin in an installed Logstash by editing its `Gemfile` and pointing the `:path` to your local plugin development directory or you can build the gem and install it using:
|
67
|
+
|
77
68
|
- Build your plugin gem
|
78
69
|
```sh
|
79
70
|
gem build logstash-filter-awesome.gemspec
|
@@ -90,6 +81,6 @@ All contributions are welcome: ideas, patches, documentation, bug reports, compl
|
|
90
81
|
|
91
82
|
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.
|
92
83
|
|
93
|
-
It is more important to
|
84
|
+
It is more important to the community that you are able to contribute.
|
94
85
|
|
95
|
-
For more information about contributing, see the [CONTRIBUTING](https://github.com/elasticsearch/logstash/blob/master/CONTRIBUTING.md) file.
|
86
|
+
For more information about contributing, see the [CONTRIBUTING](https://github.com/elasticsearch/logstash/blob/master/CONTRIBUTING.md) file.
|
data/lib/logstash/inputs/relp.rb
CHANGED
@@ -65,11 +65,12 @@ class LogStash::Inputs::Relp < LogStash::Inputs::Base
|
|
65
65
|
Thread.start(@relp_server.accept) do |client|
|
66
66
|
rs = client[0]
|
67
67
|
socket = client[1]
|
68
|
+
begin
|
69
|
+
rs.relp_setup_connection(socket)
|
68
70
|
# monkeypatch a 'peer' method onto the socket.
|
69
71
|
socket.instance_eval { class << self; include ::LogStash::Util::SocketPeer end }
|
70
72
|
peer = socket.peer
|
71
73
|
@logger.debug("Relp Connection to #{peer} created")
|
72
|
-
begin
|
73
74
|
relp_stream(rs,socket, output_queue, peer)
|
74
75
|
rescue Relp::ConnectionClosed => e
|
75
76
|
@logger.debug("Relp Connection to #{peer} Closed")
|
@@ -78,6 +79,8 @@ class LogStash::Inputs::Relp < LogStash::Inputs::Base
|
|
78
79
|
#TODO: Still not happy with this, are they all warn level?
|
79
80
|
#Will this catch everything I want it to?
|
80
81
|
#Relp spec says to close connection on error, ensure this is the case
|
82
|
+
ensure
|
83
|
+
socket.close rescue nil
|
81
84
|
end
|
82
85
|
end # Thread.start
|
83
86
|
rescue Relp::InvalidCommand,Relp::InappropriateCommand => e
|
data/lib/logstash/util/relp.rb
CHANGED
@@ -10,6 +10,7 @@ class Relp#This isn't much use on its own, but gives RelpServer and RelpClient t
|
|
10
10
|
class InvalidCommand < RelpError; end
|
11
11
|
class InappropriateCommand < RelpError; end
|
12
12
|
class ConnectionClosed < RelpError; end
|
13
|
+
class FrameReadException < RelpError; end
|
13
14
|
class InsufficientCommands < RelpError; end
|
14
15
|
|
15
16
|
def valid_command?(command)
|
@@ -75,8 +76,10 @@ class Relp#This isn't much use on its own, but gives RelpServer and RelpClient t
|
|
75
76
|
frame['message'] = socket.read(frame['datalen'])
|
76
77
|
end
|
77
78
|
@logger.debug? and @logger.debug("Read frame", :frame => frame)
|
78
|
-
rescue
|
79
|
+
rescue Errno::ECONNRESET
|
79
80
|
raise ConnectionClosed
|
81
|
+
rescue EOFError,IOError
|
82
|
+
raise FrameReadException
|
80
83
|
end
|
81
84
|
if ! self.valid_command?(frame['command'])#TODO: is this enough to catch framing errors?
|
82
85
|
if self.server?
|
@@ -120,6 +123,11 @@ class RelpServer < Relp
|
|
120
123
|
|
121
124
|
def accept
|
122
125
|
socket = @server.accept
|
126
|
+
@logger.debug("New socket created")
|
127
|
+
return self, socket
|
128
|
+
end
|
129
|
+
|
130
|
+
def relp_setup_connection(socket)
|
123
131
|
frame=self.frame_read(socket)
|
124
132
|
if frame['command'] == 'open'
|
125
133
|
offer=Hash[*frame['message'].scan(/^(.*)=(.*)$/).flatten]
|
@@ -153,7 +161,6 @@ class RelpServer < Relp
|
|
153
161
|
response_frame['message'] += 'relp_software=' + RelpSoftware + "\n"
|
154
162
|
response_frame['message'] += 'commands=' + @required_relp_commands.join(',')#TODO: optional ones
|
155
163
|
self.frame_write(socket, response_frame)
|
156
|
-
return self, socket
|
157
164
|
end
|
158
165
|
else
|
159
166
|
self.serverclose(socket)
|
data/logstash-input-relp.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
|
3
3
|
s.name = 'logstash-input-relp'
|
4
|
-
s.version = '0.1.
|
4
|
+
s.version = '0.1.3'
|
5
5
|
s.licenses = ['Apache License (2.0)']
|
6
6
|
s.summary = "Read RELP events over a TCP socket."
|
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" => "input" }
|
21
21
|
|
22
22
|
# Gem dependencies
|
23
|
-
s.add_runtime_dependency
|
23
|
+
s.add_runtime_dependency "logstash-core", '>= 1.4.0', '< 2.0.0'
|
24
24
|
|
25
25
|
s.add_runtime_dependency 'logstash-codec-plain'
|
26
26
|
s.add_development_dependency 'logstash-devutils'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-input-relp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elasticsearch
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-02-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
- - <
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: 2.0.0
|
22
|
-
name: logstash
|
22
|
+
name: logstash-core
|
23
23
|
prerelease: false
|
24
24
|
type: :runtime
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -96,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
96
96
|
version: '0'
|
97
97
|
requirements: []
|
98
98
|
rubyforge_project:
|
99
|
-
rubygems_version: 2.
|
99
|
+
rubygems_version: 2.4.5
|
100
100
|
signing_key:
|
101
101
|
specification_version: 4
|
102
102
|
summary: Read RELP events over a TCP socket.
|