logstash-input-http 4.1.13-java → 4.2.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/4.2.0/logstash-input-http-4.2.0.jar +0 -0
- metadata +3 -3
- data/vendor/jar-dependencies/org/logstash/plugins/input/http/logstash-input-http/4.1.13/logstash-input-http-4.1.13.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: 539abcb4c339a32fffb7f9cacbd89d9d89699c2ba2fb095662c5b38f13a2d0e2
|
|
4
|
+
data.tar.gz: 88d0055774cdd24adac50a40ae6882847833774c4be98909ae1949291f221b26
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 04af87e8700a675a2c461dab2b876e61c16733ce1a670fe09a283ca8f4d5930e90bc874f68bb7d2f8610675498a15f51804a719fc7912db6bd9af77d98c9dafa
|
|
7
|
+
data.tar.gz: 02cb65c66466c985b7efa061f8bd50993cc4267a63f351b6702e24a9b72ef6cc8585aa7cf01e8da09247dd3db5b0ce07d7a4b0d247b56ff76bfb16c888db7f98
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
## 4.2.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
|
## 4.1.13
|
|
2
5
|
- Fix to use the `Content-type` declared charset to decode the request body [#230](https://github.com/logstash-plugins/logstash-input-http/pull/230)
|
|
3
6
|
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
4.
|
|
1
|
+
4.2.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
|
@@ -176,6 +176,8 @@ class LogStash::Inputs::Http < LogStash::Inputs::Base
|
|
|
176
176
|
|
|
177
177
|
validate_ssl_settings!
|
|
178
178
|
|
|
179
|
+
validate_dump_size_system_property!
|
|
180
|
+
|
|
179
181
|
if @user && @password
|
|
180
182
|
token = Base64.strict_encode64("#{@user}:#{@password.value}")
|
|
181
183
|
@auth_token = "Basic #{token}"
|
|
@@ -276,6 +278,12 @@ class LogStash::Inputs::Http < LogStash::Inputs::Base
|
|
|
276
278
|
[http_host, nil]
|
|
277
279
|
end
|
|
278
280
|
end
|
|
281
|
+
|
|
282
|
+
def validate_dump_size_system_property!
|
|
283
|
+
java_import org.logstash.plugins.inputs.http.util.WireLogger
|
|
284
|
+
WireLogger.validate_dump_size_property
|
|
285
|
+
end
|
|
286
|
+
private :validate_dump_size_system_property!
|
|
279
287
|
|
|
280
288
|
def validate_ssl_settings!
|
|
281
289
|
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', '4.
|
|
12
|
+
require_jar('org.logstash.plugins.input.http', 'logstash-input-http', '4.2.0')
|
data/spec/inputs/http_spec.rb
CHANGED
|
@@ -69,50 +69,42 @@ describe LogStash::Inputs::Http do
|
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
describe "handling overflowing requests with a 429" do
|
|
72
|
-
let(:logstash_queue_size) {
|
|
73
|
-
let(:max_pending_requests) {
|
|
74
|
-
let(:threads) {
|
|
72
|
+
let(:logstash_queue_size) { 1 }
|
|
73
|
+
let(:max_pending_requests) { 1 }
|
|
74
|
+
let(:threads) { 1 }
|
|
75
75
|
let(:logstash_queue) { SizedQueue.new(logstash_queue_size) }
|
|
76
76
|
let(:client_options) { {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
77
|
+
request_timeout: 5,
|
|
78
|
+
connect_timeout: 3,
|
|
79
|
+
socket_timeout: 0.5
|
|
80
80
|
} }
|
|
81
81
|
|
|
82
82
|
let(:config) { { "port" => port, "threads" => threads, "max_pending_requests" => max_pending_requests } }
|
|
83
83
|
|
|
84
84
|
context "when sending more requests than queue slots" do
|
|
85
85
|
it "rejects additional incoming requests with HTTP 429" do
|
|
86
|
-
#
|
|
87
|
-
logstash_queue_size.times
|
|
86
|
+
# fill the pipeline queue so the next push blocks the server worker
|
|
87
|
+
logstash_queue_size.times do
|
|
88
88
|
response = client.post("http://127.0.0.1:#{port}", :body => '{}').call
|
|
89
89
|
expect(response.code).to eq(200)
|
|
90
90
|
end
|
|
91
91
|
|
|
92
|
-
#
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
92
|
+
# a blocked request holds its slot even after the client times out, so sending
|
|
93
|
+
# sequentially fills every worker and backlog slot before the next 429
|
|
94
|
+
blocked = 0
|
|
95
|
+
response = nil
|
|
96
|
+
deadline = Time.now + 30
|
|
97
|
+
until response && response.code == 429
|
|
98
|
+
raise "server never returned 429 (blocked=#{blocked})" if Time.now > deadline
|
|
99
|
+
begin
|
|
100
|
+
response = client.post("http://127.0.0.1:#{port}", :body => '{}').call
|
|
101
|
+
rescue Manticore::SocketTimeout
|
|
102
|
+
blocked += 1
|
|
100
103
|
end
|
|
101
104
|
end
|
|
102
105
|
|
|
103
|
-
sleep 1 # let those requests go, but not so long that our block-detector starts emitting 429's
|
|
104
|
-
|
|
105
|
-
# by now we should be rejecting with 429 since the backlog is full
|
|
106
|
-
response = client.post("http://127.0.0.1:#{port}", :body => '{}').call
|
|
107
106
|
expect(response.code).to eq(429)
|
|
108
|
-
|
|
109
|
-
# ensure that our blocked connections did block
|
|
110
|
-
aggregate_failures do
|
|
111
|
-
blocked_calls.map(&:value).each do |blocked|
|
|
112
|
-
expect(blocked[:result]).to be_nil
|
|
113
|
-
expect(blocked[:exception]).to be_a_kind_of Manticore::SocketTimeout
|
|
114
|
-
end
|
|
115
|
-
end
|
|
107
|
+
expect(blocked).to eq(threads + max_pending_requests)
|
|
116
108
|
end
|
|
117
109
|
end
|
|
118
110
|
end
|
|
@@ -123,9 +115,9 @@ describe LogStash::Inputs::Http do
|
|
|
123
115
|
let(:threads) { rand(4) + 1 }
|
|
124
116
|
let(:logstash_queue) { SizedQueue.new(logstash_queue_size) }
|
|
125
117
|
let(:client_options) { {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
118
|
+
request_timeout: 5,
|
|
119
|
+
connect_timeout: 3,
|
|
120
|
+
socket_timeout: 1
|
|
129
121
|
} }
|
|
130
122
|
|
|
131
123
|
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: 4.
|
|
4
|
+
version: 4.2.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/4.
|
|
179
|
+
- vendor/jar-dependencies/org/logstash/plugins/input/http/logstash-input-http/4.2.0/logstash-input-http-4.2.0.jar
|
|
180
180
|
homepage: http://www.elastic.co/guide/en/logstash/current/index.html
|
|
181
181
|
licenses:
|
|
182
182
|
- Apache License (2.0)
|