logstash-input-gelf 2.0.5 → 2.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f27853975b76062b44845eeec5bc56c2aef98744
4
- data.tar.gz: b45085314c95cc08aa1bde4472cd77b6ce5ce696
3
+ metadata.gz: 158054a93311590d65d56a3ff79aa12c56092d23
4
+ data.tar.gz: b469cff4004b9f25dc4e3f389e9a2b006d09417f
5
5
  SHA512:
6
- metadata.gz: 75d4a43e78b2c71359392ef45157ebb2f5c4a3deef26808df9acc2d4cac21855e5234f4eb6d595b203192f406188e055e646b183dc23d8c39cdf6be60cd5d5d7
7
- data.tar.gz: 6352f3f823a587f374199bdf64b23d8e886fa25ca7f8f4497510ad1fa34f39c75339517e0b907511025983b7e4957dcd2fbade742a361d403b15e92fa686fb34
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
- ## 2.0.3
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
- [![Build
4
- Status](http://build-eu-00.elastic.co/view/LS%20Plugins/view/LS%20Inputs/job/logstash-plugin-input-gelf-unit/badge/icon)](http://build-eu-00.elastic.co/view/LS%20Plugins/view/LS%20Inputs/job/logstash-plugin-input-gelf-unit/)
3
+ [![Travis Build Status](https://travis-ci.org/logstash-plugins/logstash-input-gelf.svg)](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
 
@@ -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 = LogStash::Event.new(LogStash::Json.load(json_gelf))
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?
@@ -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.5'
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
-
@@ -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.5
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-03-24 00:00:00.000000000 Z
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: '1.0'
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.2.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: '0'
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.0.22
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: '0'
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: 1.3.2
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: []