logstash-input-http 3.10.11-java → 3.11.0-java
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 +3 -0
- data/VERSION +1 -1
- data/docs/index.asciidoc +27 -0
- data/lib/logstash/inputs/http.rb +8 -0
- data/lib/logstash-input-http_jars.rb +1 -1
- data/spec/inputs/http_spec.rb +23 -31
- data/vendor/jar-dependencies/org/logstash/plugins/input/http/logstash-input-http/3.11.0/logstash-input-http-3.11.0.jar +0 -0
- metadata +3 -3
- data/vendor/jar-dependencies/org/logstash/plugins/input/http/logstash-input-http/3.10.11/logstash-input-http-3.10.11.jar +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 53d4010498cef37711a3510964978b4976d44a6d90df48a5e0d4b449c4c41f1b
|
|
4
|
+
data.tar.gz: 0eb2c879fca5fe8df5712a4473c5fcfa073fc8d9089658e8b0563f8e3d4d4f1b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e3b6c7260038efc0a58d9319812f902bf4f198cd1d92fcd5c5584e11fd2af3a9d9854a075a494237f98f7d0d286bf11fc3c1876f46b26246bd71ab90eecb1533
|
|
7
|
+
data.tar.gz: 5df99103b34fd6848355532f1e4beeb70a669fb975966ccc4ccd9e39dc11c35c1a40d202a3f6b30953c3f816ac881d36820530afb4c7060ba2498ce03e3e653d
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
## 3.11.0
|
|
2
|
+
- Implements a functionality to log HTTP traffic, disabled by default. To unable switch on debug logs. [#237](https://github.com/logstash-plugins/logstash-input-http/pull/237)
|
|
3
|
+
|
|
1
4
|
## 3.10.11
|
|
2
5
|
- Fix to use the `Content-type` declared charset to decode the request body [#232](https://github.com/logstash-plugins/logstash-input-http/pull/232)
|
|
3
6
|
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.
|
|
1
|
+
3.11.0
|
data/docs/index.asciidoc
CHANGED
|
@@ -90,6 +90,33 @@ Values in `additional_codecs` are prioritized over those specified in the
|
|
|
90
90
|
`codec` option. That is, the default `codec` is applied only if no codec
|
|
91
91
|
for the request's content-type is found in the `additional_codecs` setting.
|
|
92
92
|
|
|
93
|
+
[id="plugins-{type}s-{plugin}-wire-logging"]
|
|
94
|
+
==== Enable wire logging
|
|
95
|
+
This plugin could log all requests and responses passing through the socket after TLS decoding.
|
|
96
|
+
This functionality helps troubleshoot issues in the processing pipeline that standard
|
|
97
|
+
external traffic captures, such as `tcpdump`, cannot resolve.
|
|
98
|
+
By default it's disabled, to dump received and sent payloads post-TLS decoding, enable debug logging
|
|
99
|
+
for `org.logstash.plugins.inputs.http.util.WireLogger`.
|
|
100
|
+
Note: Payloads exceeding 4 KB are automatically truncated to prevent excessive log file growth.
|
|
101
|
+
If you want to set a different limit, then in {ls} `config/jvm.options` configure a value for the system property `logstash.httpinput.wire.dump.size`.
|
|
102
|
+
|
|
103
|
+
[source,text]
|
|
104
|
+
-----
|
|
105
|
+
-Dlogstash.httpinput.wire.dump.size=512
|
|
106
|
+
-----
|
|
107
|
+
If you want to remove any limit, at the risk of polluting {ls} logs, set it to `0`.
|
|
108
|
+
Admitted values are only integers greater or equals to 0.
|
|
109
|
+
|
|
110
|
+
To enable it start {ls} in debug mode or configure the `config/log4j2.properties` to include:
|
|
111
|
+
|
|
112
|
+
[source,text]
|
|
113
|
+
-----
|
|
114
|
+
logger.httpwire.name = org.logstash.plugins.inputs.http.util.WireLogger
|
|
115
|
+
logger.httpwire.level = DEBUG
|
|
116
|
+
-----
|
|
117
|
+
|
|
118
|
+
WARNING: when this log is enabled the payload is dumped, so if contains secretes those are exposed in {ls} logs.
|
|
119
|
+
|
|
93
120
|
[id="plugins-{type}s-{plugin}-options"]
|
|
94
121
|
==== Http Input Configuration Options
|
|
95
122
|
|
data/lib/logstash/inputs/http.rb
CHANGED
|
@@ -204,6 +204,8 @@ class LogStash::Inputs::Http < LogStash::Inputs::Base
|
|
|
204
204
|
|
|
205
205
|
validate_ssl_settings!
|
|
206
206
|
|
|
207
|
+
validate_dump_size_system_property!
|
|
208
|
+
|
|
207
209
|
if @user && @password
|
|
208
210
|
token = Base64.strict_encode64("#{@user}:#{@password.value}")
|
|
209
211
|
@auth_token = "Basic #{token}"
|
|
@@ -297,6 +299,12 @@ class LogStash::Inputs::Http < LogStash::Inputs::Base
|
|
|
297
299
|
[http_host, nil]
|
|
298
300
|
end
|
|
299
301
|
end
|
|
302
|
+
|
|
303
|
+
def validate_dump_size_system_property!
|
|
304
|
+
java_import org.logstash.plugins.inputs.http.util.WireLogger
|
|
305
|
+
WireLogger.validate_dump_size_property
|
|
306
|
+
end
|
|
307
|
+
private :validate_dump_size_system_property!
|
|
300
308
|
|
|
301
309
|
def validate_ssl_settings!
|
|
302
310
|
ssl_config_name = original_params.include?('ssl') ? 'ssl' : 'ssl_enabled'
|
|
@@ -9,4 +9,4 @@ require_jar('io.netty', 'netty-transport', '4.1.136.Final')
|
|
|
9
9
|
require_jar('io.netty', 'netty-buffer', '4.1.136.Final')
|
|
10
10
|
require_jar('io.netty', 'netty-resolver', '4.1.136.Final')
|
|
11
11
|
require_jar('io.netty', 'netty-common', '4.1.136.Final')
|
|
12
|
-
require_jar('org.logstash.plugins.input.http', 'logstash-input-http', '3.
|
|
12
|
+
require_jar('org.logstash.plugins.input.http', 'logstash-input-http', '3.11.0')
|
data/spec/inputs/http_spec.rb
CHANGED
|
@@ -55,50 +55,42 @@ describe LogStash::Inputs::Http do
|
|
|
55
55
|
end
|
|
56
56
|
|
|
57
57
|
describe "handling overflowing requests with a 429" do
|
|
58
|
-
let(:logstash_queue_size) {
|
|
59
|
-
let(:max_pending_requests) {
|
|
60
|
-
let(:threads) {
|
|
58
|
+
let(:logstash_queue_size) { 1 }
|
|
59
|
+
let(:max_pending_requests) { 1 }
|
|
60
|
+
let(:threads) { 1 }
|
|
61
61
|
let(:logstash_queue) { SizedQueue.new(logstash_queue_size) }
|
|
62
62
|
let(:client_options) { {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
request_timeout: 5,
|
|
64
|
+
connect_timeout: 3,
|
|
65
|
+
socket_timeout: 0.5
|
|
66
66
|
} }
|
|
67
67
|
|
|
68
68
|
let(:config) { { "port" => port, "threads" => threads, "max_pending_requests" => max_pending_requests } }
|
|
69
69
|
|
|
70
70
|
context "when sending more requests than queue slots" do
|
|
71
71
|
it "rejects additional incoming requests with HTTP 429" do
|
|
72
|
-
#
|
|
73
|
-
logstash_queue_size.times
|
|
72
|
+
# fill the pipeline queue so the next push blocks the server worker
|
|
73
|
+
logstash_queue_size.times do
|
|
74
74
|
response = client.post("http://127.0.0.1:#{port}", :body => '{}').call
|
|
75
75
|
expect(response.code).to eq(200)
|
|
76
76
|
end
|
|
77
77
|
|
|
78
|
-
#
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
78
|
+
# a blocked request holds its slot even after the client times out, so sending
|
|
79
|
+
# sequentially fills every worker and backlog slot before the next 429
|
|
80
|
+
blocked = 0
|
|
81
|
+
response = nil
|
|
82
|
+
deadline = Time.now + 30
|
|
83
|
+
until response && response.code == 429
|
|
84
|
+
raise "server never returned 429 (blocked=#{blocked})" if Time.now > deadline
|
|
85
|
+
begin
|
|
86
|
+
response = client.post("http://127.0.0.1:#{port}", :body => '{}').call
|
|
87
|
+
rescue Manticore::SocketTimeout
|
|
88
|
+
blocked += 1
|
|
86
89
|
end
|
|
87
90
|
end
|
|
88
91
|
|
|
89
|
-
sleep 1 # let those requests go, but not so long that our block-detector starts emitting 429's
|
|
90
|
-
|
|
91
|
-
# by now we should be rejecting with 429 since the backlog is full
|
|
92
|
-
response = client.post("http://127.0.0.1:#{port}", :body => '{}').call
|
|
93
92
|
expect(response.code).to eq(429)
|
|
94
|
-
|
|
95
|
-
# ensure that our blocked connections did block
|
|
96
|
-
aggregate_failures do
|
|
97
|
-
blocked_calls.map(&:value).each do |blocked|
|
|
98
|
-
expect(blocked[:result]).to be_nil
|
|
99
|
-
expect(blocked[:exception]).to be_a_kind_of Manticore::SocketTimeout
|
|
100
|
-
end
|
|
101
|
-
end
|
|
93
|
+
expect(blocked).to eq(threads + max_pending_requests)
|
|
102
94
|
end
|
|
103
95
|
end
|
|
104
96
|
end
|
|
@@ -109,9 +101,9 @@ describe LogStash::Inputs::Http do
|
|
|
109
101
|
let(:threads) { rand(4) + 1 }
|
|
110
102
|
let(:logstash_queue) { SizedQueue.new(logstash_queue_size) }
|
|
111
103
|
let(:client_options) { {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
104
|
+
request_timeout: 5,
|
|
105
|
+
connect_timeout: 3,
|
|
106
|
+
socket_timeout: 1
|
|
115
107
|
} }
|
|
116
108
|
|
|
117
109
|
let(:config) { { "port" => port, "threads" => threads, "max_pending_requests" => max_pending_requests } }
|
|
Binary file
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: logstash-input-http
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.
|
|
4
|
+
version: 3.11.0
|
|
5
5
|
platform: java
|
|
6
6
|
authors:
|
|
7
7
|
- Elastic
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date: 2026-
|
|
10
|
+
date: 2026-08-20 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: logstash-core-plugin-api
|
|
@@ -176,7 +176,7 @@ files:
|
|
|
176
176
|
- vendor/jar-dependencies/io/netty/netty-resolver/4.1.136.Final/netty-resolver-4.1.136.Final.jar
|
|
177
177
|
- vendor/jar-dependencies/io/netty/netty-transport-native-unix-common/4.1.136.Final/netty-transport-native-unix-common-4.1.136.Final.jar
|
|
178
178
|
- vendor/jar-dependencies/io/netty/netty-transport/4.1.136.Final/netty-transport-4.1.136.Final.jar
|
|
179
|
-
- vendor/jar-dependencies/org/logstash/plugins/input/http/logstash-input-http/3.
|
|
179
|
+
- vendor/jar-dependencies/org/logstash/plugins/input/http/logstash-input-http/3.11.0/logstash-input-http-3.11.0.jar
|
|
180
180
|
homepage: http://www.elastic.co/guide/en/logstash/current/index.html
|
|
181
181
|
licenses:
|
|
182
182
|
- Apache License (2.0)
|