logstash-input-gelf 2.0.5 → 2.0.7
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/CHANGELOG.md +6 -4
- data/CONTRIBUTORS +1 -0
- data/README.md +1 -2
- data/lib/logstash/inputs/gelf.rb +28 -1
- data/logstash-input-gelf.gemspec +1 -2
- data/spec/inputs/gelf_spec.rb +38 -0
- metadata +39 -39
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 158054a93311590d65d56a3ff79aa12c56092d23
|
4
|
+
data.tar.gz: b469cff4004b9f25dc4e3f389e9a2b006d09417f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 213969545dfabb0868b5796ffe90aefb0a065fd63872338bbb9423eae1bc088365e54c69a446da2ef1075c65de431dbf3dfee9d8081592b1264f64aeda22e2a0
|
7
|
+
data.tar.gz: 6708cfb23edfeac1c79bfa104c676e024baac35e42e2e367d6f597b83f4ba30b61757023bdeb444fdf250988f315c365d20e85a697b7d79c37d52565ed292280
|
data/CHANGELOG.md
CHANGED
@@ -1,12 +1,14 @@
|
|
1
|
+
# 2.0.7
|
2
|
+
- Fix failing test caused by reverting Java Event back to Ruby Event
|
3
|
+
# 2.0.6
|
4
|
+
- Fix plugin crash when Logstash::Json fails to parse a message, https://github.com/logstash-plugins/logstash-input-gelf/pull/27
|
1
5
|
# 2.0.5
|
2
6
|
- Depend on logstash-core-plugin-api instead of logstash-core, removing the need to mass update plugins on major releases of logstash
|
3
7
|
# 2.0.4
|
4
8
|
- New dependency requirements for logstash-core for the 5.0 release
|
5
|
-
|
9
|
+
# 2.0.3
|
6
10
|
- Fix Timestamp coercion to preserve upto microsecond precision, https://github.com/logstash-plugins/logstash-input-gelf/pull/35
|
7
|
-
|
8
|
-
## 2.0.0
|
11
|
+
# 2.0.0
|
9
12
|
- Plugins were updated to follow the new shutdown semantic, this mainly allows Logstash to instruct input plugins to terminate gracefully,
|
10
13
|
instead of using Thread.raise on the plugins' threads. Ref: https://github.com/elastic/logstash/pull/3895
|
11
14
|
- Dependency on logstash-core update to 2.0
|
12
|
-
|
data/CONTRIBUTORS
CHANGED
@@ -15,6 +15,7 @@ Contributors:
|
|
15
15
|
* Richard Pijnenburg (electrical)
|
16
16
|
* Suyog Rao (suyograo)
|
17
17
|
* joe miller (joemiller)
|
18
|
+
* Guy Boertje (guyboertje)
|
18
19
|
|
19
20
|
Note: If you've sent us patches, bug reports, or otherwise contributed to
|
20
21
|
Logstash, and you aren't on the list above and want to be, please let us know
|
data/README.md
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# Logstash Plugin
|
2
2
|
|
3
|
-
[](http://build-eu-00.elastic.co/view/LS%20Plugins/view/LS%20Inputs/job/logstash-plugin-input-gelf-unit/)
|
3
|
+
[](https://travis-ci.org/logstash-plugins/logstash-input-gelf)
|
5
4
|
|
6
5
|
This is a plugin for [Logstash](https://github.com/elastic/logstash).
|
7
6
|
|
data/lib/logstash/inputs/gelf.rb
CHANGED
@@ -54,6 +54,10 @@ class LogStash::Inputs::Gelf < LogStash::Inputs::Base
|
|
54
54
|
RECONNECT_BACKOFF_SLEEP = 5
|
55
55
|
TIMESTAMP_GELF_FIELD = "timestamp".freeze
|
56
56
|
SOURCE_HOST_FIELD = "source_host".freeze
|
57
|
+
MESSAGE_FIELD = "message"
|
58
|
+
TAGS_FIELD = "tags"
|
59
|
+
PARSE_FAILURE_TAG = "_jsonparsefailure"
|
60
|
+
PARSE_FAILURE_LOG_MESSAGE = "JSON parse failure. Falling back to plain-text"
|
57
61
|
|
58
62
|
public
|
59
63
|
def initialize(params)
|
@@ -121,7 +125,7 @@ class LogStash::Inputs::Gelf < LogStash::Inputs::Base
|
|
121
125
|
# @param host [String] source host of GELF data
|
122
126
|
# @return [LogStash::Event] new event with parsed json gelf, assigned source host and coerced timestamp
|
123
127
|
def self.new_event(json_gelf, host)
|
124
|
-
event =
|
128
|
+
event = parse(json_gelf)
|
125
129
|
|
126
130
|
event[SOURCE_HOST_FIELD] = host
|
127
131
|
|
@@ -142,6 +146,29 @@ class LogStash::Inputs::Gelf < LogStash::Inputs::Base
|
|
142
146
|
timestamp.is_a?(BigDecimal) ? LogStash::Timestamp.at(timestamp.to_i, timestamp.frac * 1000000) : LogStash::Timestamp.at(timestamp)
|
143
147
|
end
|
144
148
|
|
149
|
+
# from_json_parse uses the Event#from_json method to deserialize and directly produce events
|
150
|
+
def self.from_json_parse(json)
|
151
|
+
LogStash::Event.from_json(json).each { |event| event }
|
152
|
+
rescue LogStash::Json::ParserError => e
|
153
|
+
logger.error(PARSE_FAILURE_LOG_MESSAGE, :error => e, :data => json)
|
154
|
+
LogStash::Event.new(MESSAGE_FIELD => json, TAGS_FIELD => [PARSE_FAILURE_TAG, '_fromjsonparser'])
|
155
|
+
end # def self.from_json_parse
|
156
|
+
|
157
|
+
# legacy_parse uses the LogStash::Json class to deserialize json
|
158
|
+
def self.legacy_parse(json)
|
159
|
+
o = LogStash::Json.load(json)
|
160
|
+
LogStash::Event.new(o) if o
|
161
|
+
rescue LogStash::Json::ParserError => e
|
162
|
+
logger.error(PARSE_FAILURE_LOG_MESSAGE, :error => e, :data => json)
|
163
|
+
LogStash::Event.new(MESSAGE_FIELD => json, TAGS_FIELD => [PARSE_FAILURE_TAG, '_legacyjsonparser'])
|
164
|
+
end # def self.parse
|
165
|
+
|
166
|
+
# keep compatibility with all v2.x distributions. only in 2.3 will the Event#from_json method be introduced
|
167
|
+
# and we need to keep compatibility for all v2 releases.
|
168
|
+
class << self
|
169
|
+
alias_method :parse, LogStash::Event.respond_to?(:from_json) ? :from_json_parse : :legacy_parse
|
170
|
+
end
|
171
|
+
|
145
172
|
private
|
146
173
|
def remap_gelf(event)
|
147
174
|
if event["full_message"] && !event["full_message"].empty?
|
data/logstash-input-gelf.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
|
3
3
|
s.name = 'logstash-input-gelf'
|
4
|
-
s.version = '2.0.
|
4
|
+
s.version = '2.0.7'
|
5
5
|
s.licenses = ['Apache License (2.0)']
|
6
6
|
s.summary = "This input will read GELF messages as events over the network, making it a good choice if you already use Graylog2 today."
|
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"
|
@@ -30,4 +30,3 @@ Gem::Specification.new do |s|
|
|
30
30
|
s.add_development_dependency "gelf", ["1.3.2"] #(MIT license)
|
31
31
|
s.add_development_dependency "flores"
|
32
32
|
end
|
33
|
-
|
data/spec/inputs/gelf_spec.rb
CHANGED
@@ -146,4 +146,42 @@ describe LogStash::Inputs::Gelf do
|
|
146
146
|
expect(event.timestamp.usec).to be_within(1000).of(123456)
|
147
147
|
end
|
148
148
|
end
|
149
|
+
|
150
|
+
context "when an invalid JSON is fed to the listener" do
|
151
|
+
subject { LogStash::Inputs::Gelf.new_event(message, "host") }
|
152
|
+
let(:message) { "Invalid JSON message" }
|
153
|
+
if LogStash::Event.respond_to?(:from_java)
|
154
|
+
context "default :from_json parser output" do
|
155
|
+
it { should be_a(LogStash::Event) }
|
156
|
+
|
157
|
+
it "falls back to plain-text" do
|
158
|
+
expect(subject["message"]).to eq(message)
|
159
|
+
end
|
160
|
+
|
161
|
+
it "tags message with _jsonparsefailure" do
|
162
|
+
expect(subject["tags"]).to include("_jsonparsefailure")
|
163
|
+
end
|
164
|
+
|
165
|
+
it "tags message with _fromjsonparser" do
|
166
|
+
expect(subject["tags"]).to include("_fromjsonparser")
|
167
|
+
end
|
168
|
+
end
|
169
|
+
else
|
170
|
+
context "legacy JSON parser output" do
|
171
|
+
it { should be_a(LogStash::Event) }
|
172
|
+
|
173
|
+
it "falls back to plain-text" do
|
174
|
+
expect(subject["message"]).to eq(message)
|
175
|
+
end
|
176
|
+
|
177
|
+
it "tags message with _jsonparsefailure" do
|
178
|
+
expect(subject["tags"]).to include("_jsonparsefailure")
|
179
|
+
end
|
180
|
+
|
181
|
+
it "tags message with _legacyjsonparser" do
|
182
|
+
expect(subject["tags"]).to include("_legacyjsonparser")
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|
149
187
|
end
|
metadata
CHANGED
@@ -1,113 +1,113 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-input-gelf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-04-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
+
name: logstash-core-plugin-api
|
15
|
+
version_requirements: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.0'
|
14
20
|
requirement: !ruby/object:Gem::Requirement
|
15
21
|
requirements:
|
16
|
-
- -
|
22
|
+
- - ~>
|
17
23
|
- !ruby/object:Gem::Version
|
18
24
|
version: '1.0'
|
19
|
-
name: logstash-core-plugin-api
|
20
25
|
prerelease: false
|
21
26
|
type: :runtime
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: gelfd
|
22
29
|
version_requirements: !ruby/object:Gem::Requirement
|
23
30
|
requirements:
|
24
|
-
- -
|
31
|
+
- - '='
|
25
32
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
27
|
-
- !ruby/object:Gem::Dependency
|
33
|
+
version: 0.2.0
|
28
34
|
requirement: !ruby/object:Gem::Requirement
|
29
35
|
requirements:
|
30
36
|
- - '='
|
31
37
|
- !ruby/object:Gem::Version
|
32
38
|
version: 0.2.0
|
33
|
-
name: gelfd
|
34
39
|
prerelease: false
|
35
40
|
type: :runtime
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: logstash-codec-plain
|
36
43
|
version_requirements: !ruby/object:Gem::Requirement
|
37
44
|
requirements:
|
38
|
-
- - '
|
45
|
+
- - '>='
|
39
46
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0
|
41
|
-
- !ruby/object:Gem::Dependency
|
47
|
+
version: '0'
|
42
48
|
requirement: !ruby/object:Gem::Requirement
|
43
49
|
requirements:
|
44
|
-
- -
|
50
|
+
- - '>='
|
45
51
|
- !ruby/object:Gem::Version
|
46
52
|
version: '0'
|
47
|
-
name: logstash-codec-plain
|
48
53
|
prerelease: false
|
49
54
|
type: :runtime
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: stud
|
50
57
|
version_requirements: !ruby/object:Gem::Requirement
|
51
58
|
requirements:
|
52
|
-
- -
|
59
|
+
- - ~>
|
53
60
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
55
|
-
- !ruby/object:Gem::Dependency
|
61
|
+
version: 0.0.22
|
56
62
|
requirement: !ruby/object:Gem::Requirement
|
57
63
|
requirements:
|
58
|
-
- -
|
64
|
+
- - ~>
|
59
65
|
- !ruby/object:Gem::Version
|
60
66
|
version: 0.0.22
|
61
|
-
name: stud
|
62
67
|
prerelease: false
|
63
68
|
type: :runtime
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: logstash-devutils
|
64
71
|
version_requirements: !ruby/object:Gem::Requirement
|
65
72
|
requirements:
|
66
|
-
- -
|
73
|
+
- - '>='
|
67
74
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0
|
69
|
-
- !ruby/object:Gem::Dependency
|
75
|
+
version: '0'
|
70
76
|
requirement: !ruby/object:Gem::Requirement
|
71
77
|
requirements:
|
72
|
-
- -
|
78
|
+
- - '>='
|
73
79
|
- !ruby/object:Gem::Version
|
74
80
|
version: '0'
|
75
|
-
name: logstash-devutils
|
76
81
|
prerelease: false
|
77
82
|
type: :development
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: gelf
|
78
85
|
version_requirements: !ruby/object:Gem::Requirement
|
79
86
|
requirements:
|
80
|
-
- -
|
87
|
+
- - '='
|
81
88
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
83
|
-
- !ruby/object:Gem::Dependency
|
89
|
+
version: 1.3.2
|
84
90
|
requirement: !ruby/object:Gem::Requirement
|
85
91
|
requirements:
|
86
92
|
- - '='
|
87
93
|
- !ruby/object:Gem::Version
|
88
94
|
version: 1.3.2
|
89
|
-
name: gelf
|
90
95
|
prerelease: false
|
91
96
|
type: :development
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: flores
|
92
99
|
version_requirements: !ruby/object:Gem::Requirement
|
93
100
|
requirements:
|
94
|
-
- - '
|
101
|
+
- - '>='
|
95
102
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
97
|
-
- !ruby/object:Gem::Dependency
|
103
|
+
version: '0'
|
98
104
|
requirement: !ruby/object:Gem::Requirement
|
99
105
|
requirements:
|
100
|
-
- -
|
106
|
+
- - '>='
|
101
107
|
- !ruby/object:Gem::Version
|
102
108
|
version: '0'
|
103
|
-
name: flores
|
104
109
|
prerelease: false
|
105
110
|
type: :development
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
111
|
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
|
112
112
|
email: info@elastic.co
|
113
113
|
executables: []
|
@@ -136,12 +136,12 @@ require_paths:
|
|
136
136
|
- lib
|
137
137
|
required_ruby_version: !ruby/object:Gem::Requirement
|
138
138
|
requirements:
|
139
|
-
- -
|
139
|
+
- - '>='
|
140
140
|
- !ruby/object:Gem::Version
|
141
141
|
version: '0'
|
142
142
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
143
143
|
requirements:
|
144
|
-
- -
|
144
|
+
- - '>='
|
145
145
|
- !ruby/object:Gem::Version
|
146
146
|
version: '0'
|
147
147
|
requirements: []
|