fluentd 1.10.3 → 1.11.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.
Potentially problematic release.
This version of fluentd might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +102 -0
- data/CONTRIBUTING.md +1 -1
- data/example/copy_roundrobin.conf +3 -3
- data/example/counter.conf +1 -1
- data/example/filter_stdout.conf +2 -2
- data/example/{in_dummy_blocks.conf → in_sample_blocks.conf} +4 -4
- data/example/{in_dummy_with_compression.conf → in_sample_with_compression.conf} +3 -3
- data/example/logevents.conf +5 -5
- data/example/multi_filters.conf +1 -1
- data/example/out_exec_filter.conf +2 -2
- data/example/out_forward.conf +1 -1
- data/example/out_forward_buf_file.conf +1 -1
- data/example/out_forward_client.conf +5 -5
- data/example/out_forward_heartbeat_none.conf +1 -1
- data/example/out_forward_sd.conf +1 -1
- data/example/out_forward_shared_key.conf +2 -2
- data/example/out_forward_tls.conf +1 -1
- data/example/out_forward_users.conf +3 -3
- data/example/out_null.conf +4 -4
- data/example/secondary_file.conf +1 -1
- data/fluentd.gemspec +5 -5
- data/lib/fluent/command/fluentd.rb +11 -0
- data/lib/fluent/log.rb +33 -3
- data/lib/fluent/match.rb +9 -0
- data/lib/fluent/plugin/buffer.rb +49 -40
- data/lib/fluent/plugin/buffer/chunk.rb +2 -1
- data/lib/fluent/plugin/in_dummy.rb +2 -123
- data/lib/fluent/plugin/in_exec.rb +4 -2
- data/lib/fluent/plugin/in_forward.rb +2 -2
- data/lib/fluent/plugin/in_gc_stat.rb +16 -0
- data/lib/fluent/plugin/in_http.rb +148 -77
- data/lib/fluent/plugin/in_monitor_agent.rb +1 -1
- data/lib/fluent/plugin/in_sample.rb +141 -0
- data/lib/fluent/plugin/in_tail.rb +2 -2
- data/lib/fluent/plugin/in_unix.rb +77 -77
- data/lib/fluent/plugin/out_file.rb +1 -1
- data/lib/fluent/plugin/out_forward.rb +1 -1
- data/lib/fluent/plugin/out_forward/load_balancer.rb +1 -1
- data/lib/fluent/plugin/out_http.rb +15 -2
- data/lib/fluent/plugin/output.rb +1 -0
- data/lib/fluent/plugin/parser_json.rb +5 -2
- data/lib/fluent/plugin/parser_syslog.rb +215 -54
- data/lib/fluent/plugin_helper/cert_option.rb +5 -8
- data/lib/fluent/plugin_helper/child_process.rb +3 -2
- data/lib/fluent/plugin_helper/socket.rb +1 -1
- data/lib/fluent/supervisor.rb +15 -6
- data/lib/fluent/system_config.rb +2 -1
- data/lib/fluent/test/filter_test.rb +2 -2
- data/lib/fluent/test/output_test.rb +3 -3
- data/lib/fluent/version.rb +1 -1
- data/test/plugin/out_forward/test_load_balancer.rb +46 -0
- data/test/plugin/test_buffer.rb +4 -0
- data/test/plugin/test_in_exec.rb +18 -0
- data/test/plugin/test_in_gc_stat.rb +24 -1
- data/test/plugin/test_in_http.rb +57 -0
- data/test/plugin/{test_in_dummy.rb → test_in_sample.rb} +25 -25
- data/test/plugin/test_in_tail.rb +3 -0
- data/test/plugin/test_in_unix.rb +128 -73
- data/test/plugin/test_out_http.rb +38 -0
- data/test/plugin/test_parser_syslog.rb +66 -29
- data/test/plugin_helper/data/cert/empty.pem +0 -0
- data/test/plugin_helper/test_cert_option.rb +7 -0
- data/test/plugin_helper/test_child_process.rb +15 -0
- data/test/plugin_helper/test_http_server_helper.rb +5 -0
- data/test/plugin_helper/test_server.rb +34 -0
- data/test/plugin_helper/test_socket.rb +8 -0
- data/test/test_log.rb +44 -0
- data/test/test_match.rb +11 -0
- data/test/test_static_config_analysis.rb +2 -2
- metadata +9 -6
File without changes
|
@@ -15,4 +15,11 @@ class CertOptionPluginHelperTest < Test::Unit::TestCase
|
|
15
15
|
certs = d.cert_option_certificates_from_file("test/plugin_helper/data/cert/cert-with-CRLF.pem")
|
16
16
|
assert_equal(1, certs.length)
|
17
17
|
end
|
18
|
+
|
19
|
+
test 'raise an error for broken certificates_from_file file' do
|
20
|
+
d = Dummy.new
|
21
|
+
assert_raise Fluent::ConfigError do
|
22
|
+
certs = d.cert_option_certificates_from_file("test/plugin_helper/data/cert/empty.pem")
|
23
|
+
end
|
24
|
+
end
|
18
25
|
end
|
@@ -818,5 +818,20 @@ class ChildProcessTest < Test::Unit::TestCase
|
|
818
818
|
end
|
819
819
|
assert File.exist?(@temp_path)
|
820
820
|
end
|
821
|
+
|
822
|
+
test 'execute child process writing data to stdout which is unread' do
|
823
|
+
callback_called = false
|
824
|
+
exit_status = nil
|
825
|
+
prog = "echo writing to stdout"
|
826
|
+
callback = ->(status){ exit_status = status; callback_called = true }
|
827
|
+
Timeout.timeout(TEST_DEADLOCK_TIMEOUT) do
|
828
|
+
@d.child_process_execute(:out_exec_process, prog, stderr: :connect, immediate: true, parallel: true, mode: [], wait_timeout: 1, on_exit_callback: callback)
|
829
|
+
sleep TEST_WAIT_INTERVAL_FOR_BLOCK_RUNNING until callback_called
|
830
|
+
end
|
831
|
+
assert callback_called
|
832
|
+
assert exit_status
|
833
|
+
assert exit_status.success?
|
834
|
+
assert_equal 0, exit_status.exitstatus
|
835
|
+
end
|
821
836
|
end
|
822
837
|
end
|
@@ -278,6 +278,7 @@ class HttpHelperTest < Test::Unit::TestCase
|
|
278
278
|
driver.http_server_create_https_server(:http_server_helper_test_tls, addr: '127.0.0.1', port: PORT, logger: NULL_LOGGER) do |s|
|
279
279
|
s.get('/example/hello') { [200, { 'Content-Type' => 'text/plain' }, 'hello get'] }
|
280
280
|
end
|
281
|
+
omit "TLS connection should be aborted due to `Errno::ECONNABORTED`. Need to debug." if Fluent.windows?
|
281
282
|
|
282
283
|
resp = secure_get("https://127.0.0.1:#{PORT}/example/hello", verify: false)
|
283
284
|
assert_equal('200', resp.code)
|
@@ -293,6 +294,8 @@ class HttpHelperTest < Test::Unit::TestCase
|
|
293
294
|
'with passphrase' => ['apple', 'cert-pass.pem', 'cert-key-pass.pem'],
|
294
295
|
'without passphrase' => [nil, 'cert.pem', 'cert-key.pem'])
|
295
296
|
test 'load self-signed cert/key pair, verified from clients using cert files' do |(passphrase, cert, private_key)|
|
297
|
+
omit "Self signed certificate blocks TLS connection. Need to debug." if Fluent.windows?
|
298
|
+
|
296
299
|
cert_path = File.join(CERT_DIR, cert)
|
297
300
|
private_key_path = File.join(CERT_DIR, private_key)
|
298
301
|
opt = { 'insecure' => 'false', 'private_key_path' => private_key_path, 'cert_path' => cert_path }
|
@@ -315,6 +318,8 @@ class HttpHelperTest < Test::Unit::TestCase
|
|
315
318
|
'with passphrase' => ['apple', 'cert-pass.pem', 'cert-key-pass.pem', 'ca-cert-pass.pem'],
|
316
319
|
'without passphrase' => [nil, 'cert.pem', 'cert-key.pem', 'ca-cert.pem'])
|
317
320
|
test 'load cert by private CA cert file, verified from clients using CA cert file' do |(passphrase, cert, cert_key, ca_cert)|
|
321
|
+
omit "Self signed certificate blocks TLS connection. Need to debug." if Fluent.windows?
|
322
|
+
|
318
323
|
cert_path = File.join(CERT_CA_DIR, cert)
|
319
324
|
private_key_path = File.join(CERT_CA_DIR, cert_key)
|
320
325
|
|
@@ -1233,6 +1233,40 @@ class ServerPluginHelperTest < Test::Unit::TestCase
|
|
1233
1233
|
waiting(10){ sleep 0.1 until received.bytesize == 8 }
|
1234
1234
|
assert_equal "yay\nfoo\n", received
|
1235
1235
|
end
|
1236
|
+
|
1237
|
+
test 'set ciphers' do
|
1238
|
+
cert_path = File.join(@server_cert_dir, "cert.pem")
|
1239
|
+
private_key_path = File.join(@certs_dir, "server.key.pem")
|
1240
|
+
create_server_pair_signed_by_self(cert_path, private_key_path, nil)
|
1241
|
+
tls_options = {
|
1242
|
+
protocol: :tls,
|
1243
|
+
version: :TLSv1_2,
|
1244
|
+
ciphers: 'SHA256',
|
1245
|
+
insecure: false,
|
1246
|
+
cert_path: cert_path,
|
1247
|
+
private_key_path: private_key_path,
|
1248
|
+
}
|
1249
|
+
conf = @d.server_create_transport_section_object(tls_options)
|
1250
|
+
ctx = @d.cert_option_create_context(conf.version, conf.insecure, conf.ciphers, conf)
|
1251
|
+
matched = false
|
1252
|
+
ctx.ciphers.each do |cipher|
|
1253
|
+
cipher_name, tls_version = cipher
|
1254
|
+
# OpenSSL 1.0.2: "TLSv1/SSLv3"
|
1255
|
+
# OpenSSL 1.1.1: "TLSv1.2"
|
1256
|
+
if tls_version == "TLSv1/SSLv3" || tls_version == "TLSv1.2"
|
1257
|
+
matched = true
|
1258
|
+
unless cipher_name.match(/#{conf.ciphers}/)
|
1259
|
+
matched = false
|
1260
|
+
break
|
1261
|
+
end
|
1262
|
+
end
|
1263
|
+
end
|
1264
|
+
|
1265
|
+
error_msg = build_message("Unexpected ciphers for #{conf.version}",
|
1266
|
+
"<?>\nwas expected to include only <?> ciphers for #{conf.version}",
|
1267
|
+
ctx.ciphers, conf.ciphers)
|
1268
|
+
assert(matched, error_msg)
|
1269
|
+
end
|
1236
1270
|
end
|
1237
1271
|
end
|
1238
1272
|
|
@@ -128,4 +128,12 @@ class SocketHelperTest < Test::Unit::TestCase
|
|
128
128
|
client.close
|
129
129
|
end
|
130
130
|
end
|
131
|
+
|
132
|
+
test 'with empty cert file' do
|
133
|
+
cert_path = File.expand_path(File.dirname(__FILE__) + '/data/cert/empty.pem')
|
134
|
+
|
135
|
+
assert_raise Fluent::ConfigError do
|
136
|
+
SocketHelperTestPlugin.new.socket_create_tls('127.0.0.1', PORT, cert_path: cert_path)
|
137
|
+
end
|
138
|
+
end
|
131
139
|
end
|
data/test/test_log.rb
CHANGED
@@ -411,6 +411,50 @@ class LogTest < Test::Unit::TestCase
|
|
411
411
|
end
|
412
412
|
end
|
413
413
|
|
414
|
+
sub_test_case "ignore_same_log_interval" do
|
415
|
+
teardown do
|
416
|
+
Thread.current[:last_same_log] = nil
|
417
|
+
end
|
418
|
+
|
419
|
+
def test_same_message
|
420
|
+
message = "This is test"
|
421
|
+
logger = ServerEngine::DaemonLogger.new(@log_device, {log_level: ServerEngine::DaemonLogger::INFO})
|
422
|
+
log = Fluent::Log.new(logger, {ignore_same_log_interval: 5})
|
423
|
+
|
424
|
+
log.error message
|
425
|
+
10.times { |i|
|
426
|
+
Timecop.freeze(@timestamp + i + 1)
|
427
|
+
log.error message
|
428
|
+
}
|
429
|
+
|
430
|
+
expected = [
|
431
|
+
"2016-04-21 02:58:41 +0000 [error]: This is test\n",
|
432
|
+
"2016-04-21 02:58:47 +0000 [error]: This is test\n"
|
433
|
+
]
|
434
|
+
assert_equal(expected, log.out.logs)
|
435
|
+
end
|
436
|
+
|
437
|
+
def test_different_message
|
438
|
+
message = "This is test"
|
439
|
+
logger = ServerEngine::DaemonLogger.new(@log_device, {log_level: ServerEngine::DaemonLogger::INFO})
|
440
|
+
log = Fluent::Log.new(logger, {ignore_same_log_interval: 10})
|
441
|
+
|
442
|
+
log.error message
|
443
|
+
3.times { |i|
|
444
|
+
Timecop.freeze(@timestamp + i)
|
445
|
+
log.error message
|
446
|
+
log.error message
|
447
|
+
log.info "Hello! " + message
|
448
|
+
}
|
449
|
+
|
450
|
+
expected = [
|
451
|
+
"2016-04-21 02:58:41 +0000 [error]: This is test\n",
|
452
|
+
"2016-04-21 02:58:41 +0000 [info]: Hello! This is test\n",
|
453
|
+
]
|
454
|
+
assert_equal(expected, log.out.logs)
|
455
|
+
end
|
456
|
+
end
|
457
|
+
|
414
458
|
def test_dup
|
415
459
|
dl_opts = {}
|
416
460
|
dl_opts[:log_level] = ServerEngine::DaemonLogger::TRACE
|
data/test/test_match.rb
CHANGED
@@ -101,6 +101,17 @@ class MatchTest < Test::Unit::TestCase
|
|
101
101
|
assert_or_not_match('a.b.** a.c', 'a.c.d')
|
102
102
|
end
|
103
103
|
|
104
|
+
def test_regex_pattern
|
105
|
+
assert_glob_match('/a/', 'a')
|
106
|
+
assert_glob_not_match('/a/', 'abc')
|
107
|
+
assert_glob_match('/a.*/', 'abc')
|
108
|
+
assert_glob_not_match('/b.*/', 'abc')
|
109
|
+
assert_glob_match('/a\..*/', 'a.b.c')
|
110
|
+
assert_glob_not_match('/(?!a\.).*/', 'a.b.c')
|
111
|
+
assert_glob_not_match('/a\..*/', 'b.b.c')
|
112
|
+
assert_glob_match('/(?!a\.).*/', 'b.b.c')
|
113
|
+
end
|
114
|
+
|
104
115
|
#def test_character_class
|
105
116
|
# assert_match('[a]', 'a')
|
106
117
|
# assert_match('[ab]', 'a')
|
@@ -6,7 +6,7 @@ require 'fluent/plugin/out_forward'
|
|
6
6
|
require 'fluent/plugin/out_stdout'
|
7
7
|
require 'fluent/plugin/out_exec'
|
8
8
|
require 'fluent/plugin/in_forward'
|
9
|
-
require 'fluent/plugin/
|
9
|
+
require 'fluent/plugin/in_sample'
|
10
10
|
require 'fluent/plugin/filter_grep'
|
11
11
|
require 'fluent/plugin/filter_stdout'
|
12
12
|
require 'fluent/plugin/filter_parser'
|
@@ -74,7 +74,7 @@ class StaticConfigAnalysisTest < ::Test::Unit::TestCase
|
|
74
74
|
c = Fluent::Config.parse(conf_data, '(test)', '(test_dir)', true)
|
75
75
|
ret = Fluent::StaticConfigAnalysis.call(c)
|
76
76
|
assert_equal [Fluent::Plugin::ExecOutput, Fluent::Plugin::StdoutOutput, Fluent::Plugin::ForwardOutput], ret.outputs.map(&:plugin).map(&:class)
|
77
|
-
assert_equal [Fluent::Plugin::
|
77
|
+
assert_equal [Fluent::Plugin::SampleInput, Fluent::Plugin::ForwardInput], ret.inputs.map(&:plugin).map(&:class)
|
78
78
|
assert_equal [Fluent::Plugin::ParserFilter, Fluent::Plugin::StdoutFilter, Fluent::Plugin::GrepFilter], ret.filters.map(&:plugin).map(&:class)
|
79
79
|
assert_equal 1, ret.labels.size
|
80
80
|
assert_equal '@test', ret.labels[0].name
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluentd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.11.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sadayuki Furuhashi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-09-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: msgpack
|
@@ -388,8 +388,6 @@ files:
|
|
388
388
|
- example/copy_roundrobin.conf
|
389
389
|
- example/counter.conf
|
390
390
|
- example/filter_stdout.conf
|
391
|
-
- example/in_dummy_blocks.conf
|
392
|
-
- example/in_dummy_with_compression.conf
|
393
391
|
- example/in_forward.conf
|
394
392
|
- example/in_forward_client.conf
|
395
393
|
- example/in_forward_shared_key.conf
|
@@ -398,6 +396,8 @@ files:
|
|
398
396
|
- example/in_forward_workers.conf
|
399
397
|
- example/in_http.conf
|
400
398
|
- example/in_out_forward.conf
|
399
|
+
- example/in_sample_blocks.conf
|
400
|
+
- example/in_sample_with_compression.conf
|
401
401
|
- example/in_syslog.conf
|
402
402
|
- example/in_tail.conf
|
403
403
|
- example/in_tcp.conf
|
@@ -535,6 +535,7 @@ files:
|
|
535
535
|
- lib/fluent/plugin/in_http.rb
|
536
536
|
- lib/fluent/plugin/in_monitor_agent.rb
|
537
537
|
- lib/fluent/plugin/in_object_space.rb
|
538
|
+
- lib/fluent/plugin/in_sample.rb
|
538
539
|
- lib/fluent/plugin/in_syslog.rb
|
539
540
|
- lib/fluent/plugin/in_tail.rb
|
540
541
|
- lib/fluent/plugin/in_tail/position_file.rb
|
@@ -745,13 +746,13 @@ files:
|
|
745
746
|
- test/plugin/test_formatter_single_value.rb
|
746
747
|
- test/plugin/test_formatter_tsv.rb
|
747
748
|
- test/plugin/test_in_debug_agent.rb
|
748
|
-
- test/plugin/test_in_dummy.rb
|
749
749
|
- test/plugin/test_in_exec.rb
|
750
750
|
- test/plugin/test_in_forward.rb
|
751
751
|
- test/plugin/test_in_gc_stat.rb
|
752
752
|
- test/plugin/test_in_http.rb
|
753
753
|
- test/plugin/test_in_monitor_agent.rb
|
754
754
|
- test/plugin/test_in_object_space.rb
|
755
|
+
- test/plugin/test_in_sample.rb
|
755
756
|
- test/plugin/test_in_syslog.rb
|
756
757
|
- test/plugin/test_in_tail.rb
|
757
758
|
- test/plugin/test_in_tcp.rb
|
@@ -807,6 +808,7 @@ files:
|
|
807
808
|
- test/plugin_helper/data/cert/cert_chains/ca-cert.pem
|
808
809
|
- test/plugin_helper/data/cert/cert_chains/cert-key.pem
|
809
810
|
- test/plugin_helper/data/cert/cert_chains/cert.pem
|
811
|
+
- test/plugin_helper/data/cert/empty.pem
|
810
812
|
- test/plugin_helper/data/cert/generate_cert.rb
|
811
813
|
- test/plugin_helper/data/cert/with_ca/ca-cert-key-pass.pem
|
812
814
|
- test/plugin_helper/data/cert/with_ca/ca-cert-key.pem
|
@@ -978,13 +980,13 @@ test_files:
|
|
978
980
|
- test/plugin/test_formatter_single_value.rb
|
979
981
|
- test/plugin/test_formatter_tsv.rb
|
980
982
|
- test/plugin/test_in_debug_agent.rb
|
981
|
-
- test/plugin/test_in_dummy.rb
|
982
983
|
- test/plugin/test_in_exec.rb
|
983
984
|
- test/plugin/test_in_forward.rb
|
984
985
|
- test/plugin/test_in_gc_stat.rb
|
985
986
|
- test/plugin/test_in_http.rb
|
986
987
|
- test/plugin/test_in_monitor_agent.rb
|
987
988
|
- test/plugin/test_in_object_space.rb
|
989
|
+
- test/plugin/test_in_sample.rb
|
988
990
|
- test/plugin/test_in_syslog.rb
|
989
991
|
- test/plugin/test_in_tail.rb
|
990
992
|
- test/plugin/test_in_tcp.rb
|
@@ -1040,6 +1042,7 @@ test_files:
|
|
1040
1042
|
- test/plugin_helper/data/cert/cert_chains/ca-cert.pem
|
1041
1043
|
- test/plugin_helper/data/cert/cert_chains/cert-key.pem
|
1042
1044
|
- test/plugin_helper/data/cert/cert_chains/cert.pem
|
1045
|
+
- test/plugin_helper/data/cert/empty.pem
|
1043
1046
|
- test/plugin_helper/data/cert/generate_cert.rb
|
1044
1047
|
- test/plugin_helper/data/cert/with_ca/ca-cert-key-pass.pem
|
1045
1048
|
- test/plugin_helper/data/cert/with_ca/ca-cert-key.pem
|