fluent-plugin-out-http 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.
- data/CHANGELOG.md +5 -0
- data/README.md +13 -7
- data/fluent-plugin-out-http.gemspec +1 -1
- data/lib/fluent/plugin/out_http.rb +6 -2
- data/test/plugin/test_out_http.rb +13 -1
- metadata +3 -3
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 0.1.3
|
4
|
+
* Add configuration option: raise_on_error (default: true)
|
5
|
+
* To have the plugin raise exceptions like it did in 0.1.1: keep using your configuration as-is
|
6
|
+
* To supress all exceptions: add `raise_on_error false` to your configuration
|
7
|
+
|
3
8
|
## 0.1.2
|
4
9
|
* #6 Catch all `StandardError`s during HTTP request to prevent td-agent from freezing
|
5
10
|
|
data/README.md
CHANGED
@@ -4,22 +4,28 @@ A generic [fluentd][1] output plugin for sending logs to an HTTP endpoint.
|
|
4
4
|
|
5
5
|
[](https://travis-ci.org/ento/fluent-plugin-out-http)
|
6
6
|
|
7
|
-
##
|
7
|
+
## Configuration options
|
8
8
|
|
9
9
|
<match *>
|
10
10
|
type http
|
11
11
|
endpoint_url http://localhost.local/api/
|
12
|
-
http_method put
|
13
|
-
serializer json
|
14
|
-
rate_limit_msec 100
|
15
|
-
|
16
|
-
|
17
|
-
|
12
|
+
http_method put # default: post
|
13
|
+
serializer json # default: form
|
14
|
+
rate_limit_msec 100 # default: 0 = no rate limiting
|
15
|
+
raise_on_error false # default: true
|
16
|
+
authentication basic # default: none
|
17
|
+
username alice # default: ''
|
18
|
+
password bobpop # default: ''
|
18
19
|
</match>
|
19
20
|
|
21
|
+
## Usage notes
|
22
|
+
|
23
|
+
If you'd like to retry failed requests, consider using [fluent-plugin-bufferize][3].
|
24
|
+
|
20
25
|
----
|
21
26
|
|
22
27
|
Heavily based on [fluent-plugin-growthforecast][2]
|
23
28
|
|
24
29
|
[1]: http://fluentd.org/
|
25
30
|
[2]: https://github.com/tagomoris/fluent-plugin-growthforecast
|
31
|
+
[3]: https://github.com/sabottenda/fluent-plugin-bufferize
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |gem|
|
4
4
|
gem.name = "fluent-plugin-out-http"
|
5
|
-
gem.version = "0.1.
|
5
|
+
gem.version = "0.1.3"
|
6
6
|
gem.authors = ["Marica Odagaki"]
|
7
7
|
gem.email = ["ento.entotto@gmail.com"]
|
8
8
|
gem.summary = %q{A generic Fluentd output plugin to send logs to an HTTP endpoint}
|
@@ -21,6 +21,9 @@ class Fluent::HTTPOutput < Fluent::Output
|
|
21
21
|
# since the last one.
|
22
22
|
config_param :rate_limit_msec, :integer, :default => 0
|
23
23
|
|
24
|
+
# Raise errors that were rescued during HTTP requests?
|
25
|
+
config_param :raise_on_error, :bool, :default => true
|
26
|
+
|
24
27
|
# nil | 'none' | 'basic'
|
25
28
|
config_param :authentication, :string, :default => nil
|
26
29
|
config_param :username, :string, :default => ''
|
@@ -104,9 +107,10 @@ class Fluent::HTTPOutput < Fluent::Output
|
|
104
107
|
end
|
105
108
|
@last_request_time = Time.now.to_f
|
106
109
|
res = Net::HTTP.new(uri.host, uri.port).start {|http| http.request(req) }
|
107
|
-
rescue # rescue all StandardErrors
|
110
|
+
rescue => e # rescue all StandardErrors
|
108
111
|
# server didn't respond
|
109
|
-
$log.warn "Net::HTTP.#{req.method.capitalize} raises exception: #{
|
112
|
+
$log.warn "Net::HTTP.#{req.method.capitalize} raises exception: #{e.class}, '#{e.message}'"
|
113
|
+
raise e if @raise_on_error
|
110
114
|
else
|
111
115
|
unless res and res.is_a?(Net::HTTPSuccess)
|
112
116
|
res_summary = if res
|
@@ -151,6 +151,11 @@ class HTTPOutputTest < HTTPOutputTestBase
|
|
151
151
|
endpoint_url https://127.0.0.1:#{TEST_LISTEN_PORT + 1}/api/
|
152
152
|
]
|
153
153
|
|
154
|
+
CONFIG_HTTP_ERROR_SUPPRESSED = %[
|
155
|
+
endpoint_url https://127.0.0.1:#{TEST_LISTEN_PORT + 1}/api/
|
156
|
+
raise_on_error false
|
157
|
+
]
|
158
|
+
|
154
159
|
RATE_LIMIT_MSEC = 1200
|
155
160
|
|
156
161
|
CONFIG_RATE_LIMIT = %[
|
@@ -229,8 +234,15 @@ class HTTPOutputTest < HTTPOutputTestBase
|
|
229
234
|
assert_nil record[:auth]
|
230
235
|
end
|
231
236
|
|
232
|
-
def
|
237
|
+
def test_http_error_is_raised
|
233
238
|
d = create_driver CONFIG_HTTP_ERROR
|
239
|
+
assert_raise Errno::ECONNREFUSED do
|
240
|
+
d.emit({ 'field1' => 50 })
|
241
|
+
end
|
242
|
+
end
|
243
|
+
|
244
|
+
def test_http_error_is_suppressed_with_raise_on_error_false
|
245
|
+
d = create_driver CONFIG_HTTP_ERROR_SUPPRESSED
|
234
246
|
d.emit({ 'field1' => 50 })
|
235
247
|
d.run
|
236
248
|
# drive asserts the next output chain is called;
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-out-http
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -107,7 +107,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
107
107
|
version: '0'
|
108
108
|
segments:
|
109
109
|
- 0
|
110
|
-
hash:
|
110
|
+
hash: -1675313951779573112
|
111
111
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
112
112
|
none: false
|
113
113
|
requirements:
|
@@ -116,7 +116,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
116
116
|
version: '0'
|
117
117
|
segments:
|
118
118
|
- 0
|
119
|
-
hash:
|
119
|
+
hash: -1675313951779573112
|
120
120
|
requirements: []
|
121
121
|
rubyforge_project:
|
122
122
|
rubygems_version: 1.8.23
|