logstash-output-syslog 0.2.0 → 2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/lib/logstash/outputs/syslog.rb +38 -37
- data/logstash-output-syslog.gemspec +3 -4
- data/spec/outputs/syslog_spec.rb +0 -49
- metadata +6 -22
- data/.gitignore +0 -4
- data/Rakefile +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7cd1c6f93332773cecd2bde660aeb2abccb1a06e
|
4
|
+
data.tar.gz: d289eee9433c4f862508899141950508fbcc6ce8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cebbcc9f6525888316022d6d7ced9aa64437ff9a5e187f3e828687cbbfe3d19885324f9bc82a6a898f92d8cfe9d67fe9a12d8da0a6c7ce0fa8d99577cfff5d19
|
7
|
+
data.tar.gz: 984d9deeceeff73ba0b912aa935391d9abb1f2449d65b72a5f104f413707c9251eaa98cb259ed4e7623db459142f576fb403c0c3ff4a666d0a213e6f0925396a
|
data/CHANGELOG.md
CHANGED
@@ -0,0 +1,5 @@
|
|
1
|
+
## 2.0.0
|
2
|
+
- Plugins were updated to follow the new shutdown semantic, this mainly allows Logstash to instruct input plugins to terminate gracefully,
|
3
|
+
instead of using Thread.raise on the plugins' threads. Ref: https://github.com/elastic/logstash/pull/3895
|
4
|
+
- Dependency on logstash-core update to 2.0
|
5
|
+
|
@@ -57,13 +57,10 @@ class LogStash::Outputs::Syslog < LogStash::Outputs::Base
|
|
57
57
|
|
58
58
|
# syslog server address to connect to
|
59
59
|
config :host, :validate => :string, :required => true
|
60
|
-
|
60
|
+
|
61
61
|
# syslog server port to connect to
|
62
62
|
config :port, :validate => :number, :required => true
|
63
63
|
|
64
|
-
# when connection fails, retry interval in sec.
|
65
|
-
config :reconnect_interval, :validate => :number, :default => 1
|
66
|
-
|
67
64
|
# syslog server protocol. you can choose between udp and tcp
|
68
65
|
config :protocol, :validate => ["tcp", "udp"], :default => "udp"
|
69
66
|
|
@@ -87,67 +84,71 @@ class LogStash::Outputs::Syslog < LogStash::Outputs::Base
|
|
87
84
|
|
88
85
|
# message text to log
|
89
86
|
config :message, :validate => :string, :default => "%{message}"
|
90
|
-
|
87
|
+
|
91
88
|
# message id for syslog message
|
92
89
|
config :msgid, :validate => :string, :default => "-"
|
93
90
|
|
94
91
|
# syslog message format: you can choose between rfc3164 or rfc5424
|
95
92
|
config :rfc, :validate => ["rfc3164", "rfc5424"], :default => "rfc3164"
|
96
93
|
|
94
|
+
|
95
|
+
public
|
97
96
|
def register
|
98
|
-
|
97
|
+
@client_socket = nil
|
98
|
+
end
|
99
99
|
|
100
|
-
|
101
|
-
|
102
|
-
@
|
100
|
+
private
|
101
|
+
def udp?
|
102
|
+
@protocol == "udp"
|
103
|
+
end
|
104
|
+
|
105
|
+
private
|
106
|
+
def rfc3164?
|
107
|
+
@rfc == "rfc3164"
|
108
|
+
end
|
103
109
|
|
104
|
-
|
105
|
-
|
110
|
+
private
|
111
|
+
def connect
|
112
|
+
if udp?
|
113
|
+
@client_socket = UDPSocket.new
|
114
|
+
@client_socket.connect(@host, @port)
|
115
|
+
else
|
116
|
+
@client_socket = TCPSocket.new(@host, @port)
|
117
|
+
end
|
106
118
|
end
|
107
119
|
|
120
|
+
public
|
108
121
|
def receive(event)
|
109
|
-
|
122
|
+
|
110
123
|
|
111
124
|
appname = event.sprintf(@appname)
|
112
125
|
procid = event.sprintf(@procid)
|
113
126
|
sourcehost = event.sprintf(@sourcehost)
|
114
127
|
|
115
|
-
|
128
|
+
facility_code = FACILITY_LABELS.index(@facility)
|
129
|
+
|
130
|
+
severity_code = SEVERITY_LABELS.index(@severity)
|
131
|
+
|
132
|
+
priority = (facility_code * 8) + severity_code
|
133
|
+
|
134
|
+
if rfc3164?
|
116
135
|
timestamp = event.sprintf("%{+MMM dd HH:mm:ss}")
|
117
|
-
syslog_msg = "
|
136
|
+
syslog_msg = "<"+priority.to_s()+">"+timestamp+" "+sourcehost+" "+appname+"["+procid+"]: "+event.sprintf(@message)
|
118
137
|
else
|
119
138
|
msgid = event.sprintf(@msgid)
|
120
139
|
timestamp = event.sprintf("%{+YYYY-MM-dd'T'HH:mm:ss.SSSZZ}")
|
121
|
-
syslog_msg = "
|
140
|
+
syslog_msg = "<"+priority.to_s()+">1 "+timestamp+" "+sourcehost+" "+appname+" "+procid+" "+msgid+" - "+event.sprintf(@message)
|
122
141
|
end
|
123
142
|
|
124
143
|
begin
|
125
|
-
@client_socket
|
144
|
+
connect unless @client_socket
|
126
145
|
@client_socket.write(syslog_msg + "\n")
|
127
146
|
rescue => e
|
128
|
-
@logger.warn(
|
147
|
+
@logger.warn(@protocol+" output exception", :host => @host, :port => @port,
|
148
|
+
:exception => e, :backtrace => e.backtrace)
|
129
149
|
@client_socket.close rescue nil
|
130
150
|
@client_socket = nil
|
131
|
-
|
132
|
-
sleep(@reconnect_interval)
|
133
|
-
retry
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
private
|
138
|
-
|
139
|
-
def udp?
|
140
|
-
@protocol == "udp"
|
141
|
-
end
|
142
|
-
|
143
|
-
def connect
|
144
|
-
socket = nil
|
145
|
-
if udp?
|
146
|
-
socket = UDPSocket.new
|
147
|
-
socket.connect(@host, @port)
|
148
|
-
else
|
149
|
-
socket = TCPSocket.new(@host, @port)
|
150
151
|
end
|
151
|
-
socket
|
152
152
|
end
|
153
153
|
end
|
154
|
+
|
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
|
3
3
|
s.name = 'logstash-output-syslog'
|
4
|
-
s.version = '
|
4
|
+
s.version = '2.0.1'
|
5
5
|
s.licenses = ['Apache License (2.0)']
|
6
6
|
s.summary = "Send events to a syslog server."
|
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"
|
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.require_paths = ["lib"]
|
12
12
|
|
13
13
|
# Files
|
14
|
-
s.files =
|
14
|
+
s.files = Dir['lib/**/*','spec/**/*','vendor/**/*','*.gemspec','*.md','CONTRIBUTORS','Gemfile','LICENSE','NOTICE.TXT']
|
15
15
|
|
16
16
|
# Tests
|
17
17
|
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
@@ -20,9 +20,8 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.metadata = { "logstash_plugin" => "true", "logstash_group" => "output" }
|
21
21
|
|
22
22
|
# Gem dependencies
|
23
|
-
s.add_runtime_dependency "logstash-core",
|
23
|
+
s.add_runtime_dependency "logstash-core", ">= 2.0.0.snapshot", "< 3.0.0"
|
24
24
|
|
25
25
|
s.add_development_dependency 'logstash-devutils'
|
26
|
-
s.add_development_dependency 'logstash-codec-plain'
|
27
26
|
end
|
28
27
|
|
data/spec/outputs/syslog_spec.rb
CHANGED
@@ -1,50 +1 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
1
|
require "logstash/devutils/rspec/spec_helper"
|
4
|
-
require "logstash/outputs/syslog"
|
5
|
-
|
6
|
-
describe LogStash::Outputs::Syslog do
|
7
|
-
|
8
|
-
it "should register without errors" do
|
9
|
-
plugin = LogStash::Plugin.lookup("output", "syslog").new({"host" => "foo", "port" => "123", "facility" => "kernel", "severity" => "emergency"})
|
10
|
-
expect { plugin.register }.to_not raise_error
|
11
|
-
end
|
12
|
-
|
13
|
-
subject do
|
14
|
-
plugin = LogStash::Plugin.lookup("output", "syslog").new(options)
|
15
|
-
plugin.register
|
16
|
-
plugin
|
17
|
-
end
|
18
|
-
|
19
|
-
let(:socket) { double("fake socket") }
|
20
|
-
let(:event) { LogStash::Event.new({"message" => "bar", "host" => "baz"}) }
|
21
|
-
|
22
|
-
shared_examples "syslog output" do
|
23
|
-
it "should write expected format" do
|
24
|
-
expect(subject).to receive(:connect).and_return(socket)
|
25
|
-
expect(socket).to receive(:write).with(output)
|
26
|
-
subject.receive(event)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
context "rfc 3164 and udp by default" do
|
31
|
-
let(:options) { {"host" => "foo", "port" => "123", "facility" => "kernel", "severity" => "emergency"} }
|
32
|
-
let(:output) { /^<0>.+baz LOGSTASH\[-\]: bar\n/m }
|
33
|
-
|
34
|
-
it_behaves_like "syslog output"
|
35
|
-
end
|
36
|
-
|
37
|
-
context "rfc 5424 and tcp" do
|
38
|
-
let(:options) { {"rfc" => "rfc5424", "protocol" => "tcp", "host" => "foo", "port" => "123", "facility" => "kernel", "severity" => "emergency"} }
|
39
|
-
let(:output) { /^<0>1 .+baz LOGSTASH - - - bar\n/m }
|
40
|
-
|
41
|
-
it_behaves_like "syslog output"
|
42
|
-
end
|
43
|
-
|
44
|
-
context "calculate priority" do
|
45
|
-
let(:options) { {"host" => "foo", "port" => "123", "facility" => "mail", "severity" => "critical"} }
|
46
|
-
let(:output) { /^<18>.+baz LOGSTASH\[-\]: bar\n/m }
|
47
|
-
|
48
|
-
it_behaves_like "syslog output"
|
49
|
-
end
|
50
|
-
end
|
metadata
CHANGED
@@ -1,24 +1,24 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-output-syslog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-10-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
15
15
|
requirements:
|
16
16
|
- - '>='
|
17
17
|
- !ruby/object:Gem::Version
|
18
|
-
version:
|
18
|
+
version: 2.0.0.snapshot
|
19
19
|
- - <
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
21
|
+
version: 3.0.0
|
22
22
|
name: logstash-core
|
23
23
|
prerelease: false
|
24
24
|
type: :runtime
|
@@ -26,10 +26,10 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
29
|
+
version: 2.0.0.snapshot
|
30
30
|
- - <
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
32
|
+
version: 3.0.0
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
requirement: !ruby/object:Gem::Requirement
|
35
35
|
requirements:
|
@@ -44,34 +44,18 @@ dependencies:
|
|
44
44
|
- - '>='
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '0'
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
requirements:
|
50
|
-
- - '>='
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: '0'
|
53
|
-
name: logstash-codec-plain
|
54
|
-
prerelease: false
|
55
|
-
type: :development
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
requirements:
|
58
|
-
- - '>='
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
version: '0'
|
61
47
|
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
48
|
email: info@elastic.co
|
63
49
|
executables: []
|
64
50
|
extensions: []
|
65
51
|
extra_rdoc_files: []
|
66
52
|
files:
|
67
|
-
- .gitignore
|
68
53
|
- CHANGELOG.md
|
69
54
|
- CONTRIBUTORS
|
70
55
|
- Gemfile
|
71
56
|
- LICENSE
|
72
57
|
- NOTICE.TXT
|
73
58
|
- README.md
|
74
|
-
- Rakefile
|
75
59
|
- lib/logstash/outputs/syslog.rb
|
76
60
|
- logstash-output-syslog.gemspec
|
77
61
|
- spec/outputs/syslog_spec.rb
|
data/.gitignore
DELETED