logstash-input-http_poller 1.0.2 → 1.1.0

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: be8d40ddad581f2259c10aca4689effe57c77031
4
- data.tar.gz: be1d671303288aeaf7f35e1407c9471725c696d2
3
+ metadata.gz: 376d01f7f7f2543cf29dc25d017d09e5d7c46472
4
+ data.tar.gz: e1fe840d963dc87fb97afd647f43047eaf9f1a44
5
5
  SHA512:
6
- metadata.gz: c319eb5ab0d614a25f7054a3defb670805fd22abb9724e69813d673cbf44e1d006a073921b1d59ada3c855874c33a3ae4485c0dcd2ef55566ca237ad75f96ae4
7
- data.tar.gz: 31122f1e4723a548b717105f8a1848923921e741cc8f86880caa78c8d30460c431a5d36fcbef0af0eb4f2ddd42e6951fc5373533e76cf4f09a4472a99179b0a6
6
+ metadata.gz: 9b7aa09232b6540dab84356da874b160396071edcc76ae1e1021e98121909918319cf87624f2fc069bf26980051360ad60455bfb0b83050d37e732d4a28fa7b6
7
+ data.tar.gz: b151a285605f59e062f62faddf8c4b09378fc43ee0fe2ef51525e6e102c36e3b5c3094eeb65ad66480703ef2274371adbe2b15f9b900d9ee27e7cb0519b0780b
data/CHANGELOG.md CHANGED
@@ -1,8 +1,9 @@
1
+ * 1.1.0
2
+ - Error metadata no longer '_' prefixed for kibana compat
3
+ - HTTP metadata now normalized to prevent conflicts with ES schemas
1
4
  * 1.0.2
2
5
  - Bug fix: Decorating the event before pushing it to the queue
3
-
4
6
  * 1.0.1
5
7
  - Add 'target' option
6
-
7
8
  * 1.0.0
8
9
  - Initial release
@@ -31,7 +31,7 @@ require "manticore"
31
31
  # interval => 60
32
32
  # codec => "json"
33
33
  # # A hash of request metadata info (timing, response headers, etc.) will be sent here
34
- # metadata_target => "_http_poller_metadata"
34
+ # metadata_target => "http_poller_metadata"
35
35
  # }
36
36
  # }
37
37
  #
@@ -184,8 +184,8 @@ class LogStash::Inputs::HTTP_Poller < LogStash::Inputs::Base
184
184
 
185
185
  # This is also in the metadata, but we send it anyone because we want this
186
186
  # persisted by default, whereas metadata isn't. People don't like mysterious errors
187
- event["_http_request_failure"] = {
188
- "url" => @urls[name], # We want the exact parameter they passed in
187
+ event["http_request_failure"] = {
188
+ "request" => structure_request(request),
189
189
  "name" => name,
190
190
  "error" => exception.to_s,
191
191
  "backtrace" => exception.backtrace,
@@ -214,7 +214,7 @@ class LogStash::Inputs::HTTP_Poller < LogStash::Inputs::Base
214
214
  m = {
215
215
  "name" => name,
216
216
  "host" => @host,
217
- "url" => @urls[name]
217
+ "request" => structure_request(request),
218
218
  }
219
219
 
220
220
  m["runtime_seconds"] = execution_time
@@ -228,4 +228,15 @@ class LogStash::Inputs::HTTP_Poller < LogStash::Inputs::Base
228
228
 
229
229
  m
230
230
  end
231
+
232
+ private
233
+ # Turn [method, url, spec] requests into a hash for friendlier logging / ES indexing
234
+ def structure_request(request)
235
+ method, url, spec = request
236
+ # Flatten everything into the 'spec' hash, also stringify any keys to normalize
237
+ Hash[(spec||{}).merge({
238
+ "method" => method.to_s,
239
+ "url" => url,
240
+ }).map {|k,v| [k.to_s,v] }]
241
+ end
231
242
  end
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'logstash-input-http_poller'
3
- s.version = '1.0.2'
3
+ s.version = '1.1.0'
4
4
  s.licenses = ['Apache License (2.0)']
5
5
  s.summary = "Poll HTTP endpoints with Logstash."
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."
@@ -130,6 +130,25 @@ describe LogStash::Inputs::HTTP_Poller do
130
130
  end
131
131
  end
132
132
  end
133
+
134
+ describe "#structure_request" do
135
+ it "Should turn a simple request into the expected structured request" do
136
+ expected = {"url" => "http://example.net", "method" => "get"}
137
+ expect(subject.send(:structure_request, ["get", "http://example.net"])).to eql(expected)
138
+ end
139
+
140
+ it "should turn a complex request into the expected structured one" do
141
+ headers = {
142
+ "X-Fry" => " Like a balloon, and... something bad happens! "
143
+ }
144
+ expected = {
145
+ "url" => "http://example.net",
146
+ "method" => "get",
147
+ "headers" => headers
148
+ }
149
+ expect(subject.send(:structure_request, ["get", "http://example.net", {"headers" => headers}])).to eql(expected)
150
+ end
151
+ end
133
152
  end
134
153
 
135
154
  describe "events" do
@@ -140,8 +159,12 @@ describe LogStash::Inputs::HTTP_Poller do
140
159
  expect(metadata["name"]).to eql(name)
141
160
  end
142
161
 
143
- it "should have the correct url" do
144
- expect(metadata["url"]).to eql(url)
162
+ it "should have the correct request url" do
163
+ if url.is_a?(Hash) # If the url was specified as a complex test the whole thing
164
+ expect(metadata["request"]).to eql(url)
165
+ else # Otherwise we have to make some assumptions
166
+ expect(metadata["request"]["url"]).to eql(url)
167
+ end
145
168
  end
146
169
 
147
170
  it "should have the correct code" do
@@ -167,8 +190,8 @@ describe LogStash::Inputs::HTTP_Poller do
167
190
  expect(event).to be_a(LogStash::Event)
168
191
  end
169
192
 
170
- it "should enqueue a message with '_http_request_failure' set" do
171
- expect(event["_http_request_failure"]).to be_a(Hash)
193
+ it "should enqueue a message with 'http_request_failure' set" do
194
+ expect(event["http_request_failure"]).to be_a(Hash)
172
195
  end
173
196
 
174
197
  it "should tag the event with '_http_request_failure'" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-input-http_poller
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - andrewvc
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-22 00:00:00.000000000 Z
11
+ date: 2015-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logstash-core