fluentd 1.12.4 → 1.13.3
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of fluentd might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.github/ISSUE_TEMPLATE/bug_report.yaml +69 -0
- data/.github/ISSUE_TEMPLATE/feature_request.yaml +38 -0
- data/.github/workflows/linux-test.yaml +1 -1
- data/.github/workflows/windows-test.yaml +14 -3
- data/.gitlab-ci.yml +0 -22
- data/CHANGELOG.md +129 -0
- data/CONTRIBUTING.md +2 -2
- data/MAINTAINERS.md +1 -1
- data/README.md +3 -3
- data/bin/fluentd +8 -1
- data/example/counter.conf +1 -1
- data/example/v0_12_filter.conf +2 -2
- data/fluentd.gemspec +1 -1
- data/lib/fluent/command/cat.rb +19 -3
- data/lib/fluent/command/fluentd.rb +1 -2
- data/lib/fluent/command/plugin_generator.rb +15 -5
- data/lib/fluent/config.rb +1 -1
- data/lib/fluent/config/section.rb +5 -0
- data/lib/fluent/config/types.rb +15 -0
- data/lib/fluent/config/v1_parser.rb +3 -2
- data/lib/fluent/env.rb +2 -1
- data/lib/fluent/log.rb +1 -0
- data/lib/fluent/oj_options.rb +62 -0
- data/lib/fluent/plugin/file_wrapper.rb +35 -4
- data/lib/fluent/plugin/formatter.rb +1 -0
- data/lib/fluent/plugin/formatter_json.rb +9 -7
- data/lib/fluent/plugin/in_http.rb +10 -0
- data/lib/fluent/plugin/in_tail.rb +159 -41
- data/lib/fluent/plugin/in_tail/position_file.rb +20 -18
- data/lib/fluent/plugin/out_forward.rb +14 -33
- data/lib/fluent/plugin/parser_json.rb +2 -3
- data/lib/fluent/plugin/service_discovery.rb +0 -15
- data/lib/fluent/plugin_helper/http_server/router.rb +1 -1
- data/lib/fluent/plugin_helper/service_discovery.rb +39 -1
- data/lib/fluent/plugin_helper/service_discovery/manager.rb +11 -5
- data/lib/fluent/supervisor.rb +15 -0
- data/lib/fluent/system_config.rb +14 -0
- data/lib/fluent/test/driver/storage.rb +30 -0
- data/lib/fluent/version.rb +1 -1
- data/templates/new_gem/lib/fluent/plugin/storage.rb.erb +40 -0
- data/templates/new_gem/test/plugin/test_storage.rb.erb +18 -0
- data/test/command/test_cat.rb +99 -0
- data/test/command/test_plugin_generator.rb +2 -1
- data/test/config/test_section.rb +9 -0
- data/test/config/test_system_config.rb +46 -0
- data/test/config/test_types.rb +7 -0
- data/test/plugin/in_tail/test_io_handler.rb +4 -4
- data/test/plugin/in_tail/test_position_file.rb +23 -5
- data/test/plugin/test_file_wrapper.rb +22 -1
- data/test/plugin/test_in_forward.rb +59 -83
- data/test/plugin/test_in_http.rb +58 -40
- data/test/plugin/test_in_syslog.rb +66 -56
- data/test/plugin/test_in_tail.rb +341 -1
- data/test/plugin/test_in_tcp.rb +45 -32
- data/test/plugin/test_in_udp.rb +47 -33
- data/test/plugin/test_out_forward.rb +114 -95
- data/test/plugin/test_out_stream.rb +18 -8
- data/test/plugin_helper/http_server/test_route.rb +1 -1
- data/test/plugin_helper/test_child_process.rb +1 -1
- data/test/plugin_helper/test_http_server_helper.rb +33 -26
- data/test/plugin_helper/test_server.rb +137 -138
- data/test/plugin_helper/test_service_discovery.rb +74 -14
- data/test/plugin_helper/test_socket.rb +16 -9
- data/test/test_config.rb +2 -1
- data/test/test_event_time.rb +2 -2
- data/test/test_oj_options.rb +55 -0
- data/test/test_supervisor.rb +35 -0
- metadata +15 -7
- data/.github/ISSUE_TEMPLATE/bug_report.md +0 -40
- data/.github/ISSUE_TEMPLATE/feature_request.md +0 -23
@@ -17,6 +17,24 @@ class ServiceDiscoveryHelper < Test::Unit::TestCase
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
+
class DummyPlugin < Fluent::Plugin::TestBase
|
21
|
+
helpers :service_discovery
|
22
|
+
|
23
|
+
def configure(conf)
|
24
|
+
super
|
25
|
+
service_discovery_configure(:service_discovery_helper_test, static_default_service_directive: 'node')
|
26
|
+
end
|
27
|
+
|
28
|
+
def select_service(&block)
|
29
|
+
service_discovery_select_service(&block)
|
30
|
+
end
|
31
|
+
|
32
|
+
# Make these mehtod public
|
33
|
+
def discovery_manager
|
34
|
+
super
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
20
38
|
setup do
|
21
39
|
@sd_file_dir = File.expand_path('../plugin/data/sd_file', __dir__)
|
22
40
|
|
@@ -33,7 +51,7 @@ class ServiceDiscoveryHelper < Test::Unit::TestCase
|
|
33
51
|
end
|
34
52
|
end
|
35
53
|
|
36
|
-
test '
|
54
|
+
test 'support calling #service_discovery_create_manager and #discovery_manager from plugin' do
|
37
55
|
d = @d = Dummy.new
|
38
56
|
|
39
57
|
d.service_discovery_create_manager(
|
@@ -55,13 +73,30 @@ class ServiceDiscoveryHelper < Test::Unit::TestCase
|
|
55
73
|
assert_equal 1234, services[0].port
|
56
74
|
end
|
57
75
|
|
58
|
-
test '
|
59
|
-
d = @d =
|
76
|
+
test 'start discovery manager' do
|
77
|
+
d = @d = DummyPlugin.new
|
60
78
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
79
|
+
services = [config_element('service', '', { 'host' => '127.0.0.1', 'port' => '1234' })]
|
80
|
+
d.configure(config_element('root', '', {}, [config_element('service_discovery', '', {'@type' => 'static'}, services)]))
|
81
|
+
|
82
|
+
assert_true !!d.discovery_manager
|
83
|
+
|
84
|
+
mock.proxy(d.discovery_manager).start.once
|
85
|
+
mock.proxy(d).timer_execute(:service_discovery_helper_test, anything).never
|
86
|
+
|
87
|
+
d.start
|
88
|
+
d.event_loop_wait_until_start
|
89
|
+
|
90
|
+
assert_equal 1, d.discovery_manager.services.size
|
91
|
+
d.select_service do |serv|
|
92
|
+
assert_equal "127.0.0.1", serv.host
|
93
|
+
assert_equal 1234, serv.port
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
test 'call timer_execute if dynamic configuration' do
|
98
|
+
d = @d = DummyPlugin.new
|
99
|
+
d.configure(config_element('root', '', {}, [config_element('service_discovery', '', { '@type' => 'file', 'path' => File.join(@sd_file_dir, 'config.yml' )})]))
|
65
100
|
|
66
101
|
assert_true !!d.discovery_manager
|
67
102
|
mock.proxy(d.discovery_manager).start.once
|
@@ -71,25 +106,22 @@ class ServiceDiscoveryHelper < Test::Unit::TestCase
|
|
71
106
|
end
|
72
107
|
|
73
108
|
test 'exits service discovery instances without any errors' do
|
74
|
-
d = @d =
|
109
|
+
d = @d = DummyPlugin.new
|
75
110
|
mockv = flexmock('dns_resolver', getaddress: '127.0.0.1')
|
76
111
|
.should_receive(:getresources)
|
77
112
|
.and_return([Resolv::DNS::Resource::IN::SRV.new(1, 10, 8081, 'service1.example.com')])
|
78
113
|
.mock
|
79
114
|
mock(Resolv::DNS).new { mockv }
|
80
115
|
|
81
|
-
d.
|
82
|
-
:service_discovery_helper_test2,
|
83
|
-
configurations: [{ type: :srv, conf: config_element('service_discovery', '', { 'service' => 'service1', 'hostname' => 'example.com' }) }],
|
84
|
-
)
|
116
|
+
d.configure(config_element('root', '', {}, [config_element('service_discovery', '', { '@type' => 'srv', 'service' => 'service1', 'hostname' => 'example.com' })]))
|
85
117
|
|
86
118
|
assert_true !!d.discovery_manager
|
87
119
|
mock.proxy(d.discovery_manager).start.once
|
88
|
-
mock(d).timer_execute(:
|
120
|
+
mock(d).timer_execute(:service_discovery_helper_test, anything).once
|
89
121
|
|
90
122
|
# To avoid claring `@logs` during `terminate` step
|
91
123
|
# https://github.com/fluent/fluentd/blob/bc78d889f93dad8c2a4e0ad1ca802546185dacba/lib/fluent/test/log.rb#L33
|
92
|
-
mock(d.log).reset.
|
124
|
+
mock(d.log).reset.times(3)
|
93
125
|
|
94
126
|
d.start
|
95
127
|
d.event_loop_wait_until_start
|
@@ -102,4 +134,32 @@ class ServiceDiscoveryHelper < Test::Unit::TestCase
|
|
102
134
|
|
103
135
|
assert_false(d.log.out.logs.any? { |e| e.match?(/thread doesn't exit correctly/) })
|
104
136
|
end
|
137
|
+
|
138
|
+
test 'static service discovery will be configured automatically when default service directive is specified' do
|
139
|
+
d = @d = DummyPlugin.new
|
140
|
+
|
141
|
+
nodes = [
|
142
|
+
config_element('node', '', { 'host' => '192.168.0.1', 'port' => '24224' }),
|
143
|
+
config_element('node', '', { 'host' => '192.168.0.2', 'port' => '24224' })
|
144
|
+
]
|
145
|
+
d.configure(config_element('root', '', {}, nodes))
|
146
|
+
|
147
|
+
assert_true !!d.discovery_manager
|
148
|
+
|
149
|
+
mock.proxy(d.discovery_manager).start.once
|
150
|
+
mock.proxy(d).timer_execute(:service_discovery_helper_test, anything).never
|
151
|
+
|
152
|
+
d.start
|
153
|
+
d.event_loop_wait_until_start
|
154
|
+
|
155
|
+
assert_equal 2, d.discovery_manager.services.size
|
156
|
+
d.select_service do |serv|
|
157
|
+
assert_equal "192.168.0.1", serv.host
|
158
|
+
assert_equal 24224, serv.port
|
159
|
+
end
|
160
|
+
d.select_service do |serv|
|
161
|
+
assert_equal "192.168.0.2", serv.host
|
162
|
+
assert_equal 24224, serv.port
|
163
|
+
end
|
164
|
+
end
|
105
165
|
end
|
@@ -6,17 +6,24 @@ require 'socket'
|
|
6
6
|
require 'openssl'
|
7
7
|
|
8
8
|
class SocketHelperTest < Test::Unit::TestCase
|
9
|
-
PORT = unused_port
|
10
9
|
CERT_DIR = File.expand_path(File.dirname(__FILE__) + '/data/cert/without_ca')
|
11
10
|
CA_CERT_DIR = File.expand_path(File.dirname(__FILE__) + '/data/cert/with_ca')
|
12
11
|
CERT_CHAINS_DIR = File.expand_path(File.dirname(__FILE__) + '/data/cert/cert_chains')
|
13
12
|
|
13
|
+
def setup
|
14
|
+
@port = unused_port
|
15
|
+
end
|
16
|
+
|
17
|
+
def teardown
|
18
|
+
@port = nil
|
19
|
+
end
|
20
|
+
|
14
21
|
class SocketHelperTestPlugin < Fluent::Plugin::TestBase
|
15
22
|
helpers :socket
|
16
23
|
end
|
17
24
|
|
18
25
|
class EchoTLSServer
|
19
|
-
def initialize(host
|
26
|
+
def initialize(port, host: '127.0.0.1', cert_path: nil, private_key_path: nil, ca_path: nil)
|
20
27
|
server = TCPServer.open(host, port)
|
21
28
|
ctx = OpenSSL::SSL::SSLContext.new
|
22
29
|
ctx.cert = OpenSSL::X509::Certificate.new(File.open(cert_path)) if cert_path
|
@@ -91,8 +98,8 @@ class SocketHelperTest < Test::Unit::TestCase
|
|
91
98
|
cert_path = File.join(CERT_DIR, 'cert.pem')
|
92
99
|
private_key_path = File.join(CERT_DIR, 'cert-key.pem')
|
93
100
|
|
94
|
-
EchoTLSServer.new(cert_path: cert_path, private_key_path: private_key_path).start do
|
95
|
-
client = SocketHelperTestPlugin.new.socket_create_tls('127.0.0.1',
|
101
|
+
EchoTLSServer.new(@port, cert_path: cert_path, private_key_path: private_key_path).start do
|
102
|
+
client = SocketHelperTestPlugin.new.socket_create_tls('127.0.0.1', @port, verify_fqdn: false, cert_paths: [cert_path])
|
96
103
|
client.write('hello')
|
97
104
|
assert_equal 'hello', client.readpartial(100)
|
98
105
|
client.close
|
@@ -105,8 +112,8 @@ class SocketHelperTest < Test::Unit::TestCase
|
|
105
112
|
|
106
113
|
ca_cert_path = File.join(CA_CERT_DIR, 'ca-cert.pem')
|
107
114
|
|
108
|
-
EchoTLSServer.new(cert_path: cert_path, private_key_path: private_key_path).start do
|
109
|
-
client = SocketHelperTestPlugin.new.socket_create_tls('127.0.0.1',
|
115
|
+
EchoTLSServer.new(@port, cert_path: cert_path, private_key_path: private_key_path).start do
|
116
|
+
client = SocketHelperTestPlugin.new.socket_create_tls('127.0.0.1', @port, verify_fqdn: false, cert_paths: [ca_cert_path])
|
110
117
|
client.write('hello')
|
111
118
|
assert_equal 'hello', client.readpartial(100)
|
112
119
|
client.close
|
@@ -121,8 +128,8 @@ class SocketHelperTest < Test::Unit::TestCase
|
|
121
128
|
client_cert_path = File.join(CERT_CHAINS_DIR, 'cert.pem')
|
122
129
|
client_private_key_path = File.join(CERT_CHAINS_DIR, 'cert-key.pem')
|
123
130
|
|
124
|
-
EchoTLSServer.new(cert_path: cert_path, private_key_path: private_key_path, ca_path: client_ca_cert_path).start do
|
125
|
-
client = SocketHelperTestPlugin.new.socket_create_tls('127.0.0.1',
|
131
|
+
EchoTLSServer.new(@port, cert_path: cert_path, private_key_path: private_key_path, ca_path: client_ca_cert_path).start do
|
132
|
+
client = SocketHelperTestPlugin.new.socket_create_tls('127.0.0.1', @port, verify_fqdn: false, cert_path: client_cert_path, private_key_path: client_private_key_path, cert_paths: [cert_path])
|
126
133
|
client.write('hello')
|
127
134
|
assert_equal 'hello', client.readpartial(100)
|
128
135
|
client.close
|
@@ -133,7 +140,7 @@ class SocketHelperTest < Test::Unit::TestCase
|
|
133
140
|
cert_path = File.expand_path(File.dirname(__FILE__) + '/data/cert/empty.pem')
|
134
141
|
|
135
142
|
assert_raise Fluent::ConfigError do
|
136
|
-
SocketHelperTestPlugin.new.socket_create_tls('127.0.0.1',
|
143
|
+
SocketHelperTestPlugin.new.socket_create_tls('127.0.0.1', @port, cert_path: cert_path)
|
137
144
|
end
|
138
145
|
end
|
139
146
|
end
|
data/test/test_config.rb
CHANGED
@@ -160,7 +160,8 @@ class ConfigTest < Test::Unit::TestCase
|
|
160
160
|
prepare_config
|
161
161
|
opts = {
|
162
162
|
:config_path => "#{TMP_DIR}/config_test_1.conf",
|
163
|
-
:inline_config => "<source>\n type http\n port 2222\n </source>"
|
163
|
+
:inline_config => "<source>\n type http\n port 2222\n </source>",
|
164
|
+
:use_v1_config => false
|
164
165
|
}
|
165
166
|
assert_nothing_raised do
|
166
167
|
Fluent::Supervisor.new(opts)
|
data/test/test_event_time.rb
CHANGED
@@ -64,8 +64,8 @@ class EventTimeTest < Test::Unit::TestCase
|
|
64
64
|
|
65
65
|
test 'Oj.dump' do
|
66
66
|
time = Fluent::EventTime.new(100)
|
67
|
-
require 'fluent/
|
68
|
-
|
67
|
+
require 'fluent/oj_options'
|
68
|
+
Fluent::OjOptions.load_env
|
69
69
|
assert_equal('{"time":100}', Oj.dump({'time' => time}))
|
70
70
|
assert_equal('["tag",100,{"key":"value"}]', Oj.dump(["tag", time, {"key" => "value"}], mode: :compat))
|
71
71
|
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require_relative 'helper'
|
2
|
+
require 'fluent/test'
|
3
|
+
require 'fluent/oj_options'
|
4
|
+
|
5
|
+
class OjOptionsTest < ::Test::Unit::TestCase
|
6
|
+
begin
|
7
|
+
require 'oj'
|
8
|
+
@@oj_is_avaibale = true
|
9
|
+
rescue LoadError
|
10
|
+
@@oj_is_avaibale = false
|
11
|
+
end
|
12
|
+
|
13
|
+
setup do
|
14
|
+
@orig_env = {}
|
15
|
+
ENV.each do |key, value|
|
16
|
+
@orig_env[key] = value if key.start_with?("FLUENT_OJ_OPTION_")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
teardown do
|
21
|
+
ENV.delete_if { |key| key.start_with?("FLUENT_OJ_OPTION_") }
|
22
|
+
@orig_env.each { |key, value| ENV[key] = value }
|
23
|
+
end
|
24
|
+
|
25
|
+
test "available?" do
|
26
|
+
assert_equal(@@oj_is_avaibale, Fluent::OjOptions.available?)
|
27
|
+
end
|
28
|
+
|
29
|
+
sub_test_case "set by environment variable" do
|
30
|
+
test "when no env vars set, returns default options" do
|
31
|
+
ENV.delete_if { |key| key.start_with?("FLUENT_OJ_OPTION_") }
|
32
|
+
defaults = Fluent::OjOptions::DEFAULTS
|
33
|
+
assert_equal(defaults, Fluent::OjOptions.load_env)
|
34
|
+
assert_equal(defaults, Oj.default_options.slice(*defaults.keys)) if @@oj_is_avaibale
|
35
|
+
end
|
36
|
+
|
37
|
+
test "valid env var passed with valid value, default is overridden" do
|
38
|
+
ENV["FLUENT_OJ_OPTION_BIGDECIMAL_LOAD"] = ":bigdecimal"
|
39
|
+
assert_equal(:bigdecimal, Fluent::OjOptions.load_env[:bigdecimal_load])
|
40
|
+
assert_equal(:bigdecimal, Oj.default_options[:bigdecimal_load]) if @@oj_is_avaibale
|
41
|
+
end
|
42
|
+
|
43
|
+
test "valid env var passed with invalid value, default is not overriden" do
|
44
|
+
ENV["FLUENT_OJ_OPTION_BIGDECIMAL_LOAD"] = ":conor"
|
45
|
+
assert_equal(:float, Fluent::OjOptions.load_env[:bigdecimal_load])
|
46
|
+
assert_equal(:float, Oj.default_options[:bigdecimal_load]) if @@oj_is_avaibale
|
47
|
+
end
|
48
|
+
|
49
|
+
test "invalid env var passed, nothing done with it" do
|
50
|
+
ENV["FLUENT_OJ_OPTION_CONOR"] = ":conor"
|
51
|
+
assert_equal(nil, Fluent::OjOptions.load_env[:conor])
|
52
|
+
assert_equal(nil, Oj.default_options[:conor]) if @@oj_is_avaibale
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
data/test/test_supervisor.rb
CHANGED
@@ -7,6 +7,7 @@ require_relative 'test_plugin_classes'
|
|
7
7
|
require 'net/http'
|
8
8
|
require 'uri'
|
9
9
|
require 'fileutils'
|
10
|
+
require 'tempfile'
|
10
11
|
|
11
12
|
if Fluent.windows?
|
12
13
|
require 'win32/event'
|
@@ -489,6 +490,40 @@ class SupervisorTest < ::Test::Unit::TestCase
|
|
489
490
|
assert_equal 10, $log.out.instance_variable_get(:@shift_size)
|
490
491
|
end
|
491
492
|
|
493
|
+
sub_test_case "system log rotation" do
|
494
|
+
def parse_text(text)
|
495
|
+
basepath = File.expand_path(File.dirname(__FILE__) + '/../../')
|
496
|
+
Fluent::Config.parse(text, '(test)', basepath, true).elements.find { |e| e.name == 'system' }
|
497
|
+
end
|
498
|
+
|
499
|
+
def test_override_default_log_rotate
|
500
|
+
Tempfile.open do |file|
|
501
|
+
config = parse_text(<<-EOS)
|
502
|
+
<system>
|
503
|
+
<log>
|
504
|
+
rotate_age 3
|
505
|
+
rotate_size 300
|
506
|
+
</log>
|
507
|
+
</system>
|
508
|
+
EOS
|
509
|
+
file.puts(config)
|
510
|
+
file.flush
|
511
|
+
opts = Fluent::Supervisor.default_options.merge(
|
512
|
+
log_path: "#{TMP_DIR}/test.log", config_path: file.path
|
513
|
+
)
|
514
|
+
sv = Fluent::Supervisor.new(opts)
|
515
|
+
|
516
|
+
log = sv.instance_variable_get(:@log)
|
517
|
+
log.init(:standalone, 0)
|
518
|
+
logger = $log.instance_variable_get(:@logger)
|
519
|
+
|
520
|
+
assert_equal([3, 300],
|
521
|
+
[logger.instance_variable_get(:@rotate_age),
|
522
|
+
logger.instance_variable_get(:@rotate_size)])
|
523
|
+
end
|
524
|
+
end
|
525
|
+
end
|
526
|
+
|
492
527
|
def test_inline_config
|
493
528
|
omit 'this feature is deprecated. see https://github.com/fluent/fluentd/issues/2711'
|
494
529
|
|
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.13.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: 2021-
|
11
|
+
date: 2021-07-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -107,7 +107,7 @@ dependencies:
|
|
107
107
|
version: 0.5.1
|
108
108
|
- - "<"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 0.
|
110
|
+
version: 0.8.0
|
111
111
|
type: :runtime
|
112
112
|
prerelease: false
|
113
113
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -117,7 +117,7 @@ dependencies:
|
|
117
117
|
version: 0.5.1
|
118
118
|
- - "<"
|
119
119
|
- !ruby/object:Gem::Version
|
120
|
-
version: 0.
|
120
|
+
version: 0.8.0
|
121
121
|
- !ruby/object:Gem::Dependency
|
122
122
|
name: sigdump
|
123
123
|
requirement: !ruby/object:Gem::Requirement
|
@@ -373,9 +373,9 @@ files:
|
|
373
373
|
- ".deepsource.toml"
|
374
374
|
- ".drone.yml"
|
375
375
|
- ".github/ISSUE_TEMPLATE.md"
|
376
|
-
- ".github/ISSUE_TEMPLATE/bug_report.
|
376
|
+
- ".github/ISSUE_TEMPLATE/bug_report.yaml"
|
377
377
|
- ".github/ISSUE_TEMPLATE/config.yml"
|
378
|
-
- ".github/ISSUE_TEMPLATE/feature_request.
|
378
|
+
- ".github/ISSUE_TEMPLATE/feature_request.yaml"
|
379
379
|
- ".github/PULL_REQUEST_TEMPLATE.md"
|
380
380
|
- ".github/workflows/issue-auto-closer.yml"
|
381
381
|
- ".github/workflows/linux-test.yaml"
|
@@ -519,6 +519,7 @@ files:
|
|
519
519
|
- lib/fluent/match.rb
|
520
520
|
- lib/fluent/mixin.rb
|
521
521
|
- lib/fluent/msgpack_factory.rb
|
522
|
+
- lib/fluent/oj_options.rb
|
522
523
|
- lib/fluent/output.rb
|
523
524
|
- lib/fluent/output_chain.rb
|
524
525
|
- lib/fluent/parser.rb
|
@@ -664,6 +665,7 @@ files:
|
|
664
665
|
- lib/fluent/test/driver/multi_output.rb
|
665
666
|
- lib/fluent/test/driver/output.rb
|
666
667
|
- lib/fluent/test/driver/parser.rb
|
668
|
+
- lib/fluent/test/driver/storage.rb
|
667
669
|
- lib/fluent/test/driver/test_event_router.rb
|
668
670
|
- lib/fluent/test/filter_test.rb
|
669
671
|
- lib/fluent/test/formatter_test.rb
|
@@ -689,12 +691,14 @@ files:
|
|
689
691
|
- templates/new_gem/lib/fluent/plugin/input.rb.erb
|
690
692
|
- templates/new_gem/lib/fluent/plugin/output.rb.erb
|
691
693
|
- templates/new_gem/lib/fluent/plugin/parser.rb.erb
|
694
|
+
- templates/new_gem/lib/fluent/plugin/storage.rb.erb
|
692
695
|
- templates/new_gem/test/helper.rb.erb
|
693
696
|
- templates/new_gem/test/plugin/test_filter.rb.erb
|
694
697
|
- templates/new_gem/test/plugin/test_formatter.rb.erb
|
695
698
|
- templates/new_gem/test/plugin/test_input.rb.erb
|
696
699
|
- templates/new_gem/test/plugin/test_output.rb.erb
|
697
700
|
- templates/new_gem/test/plugin/test_parser.rb.erb
|
701
|
+
- templates/new_gem/test/plugin/test_storage.rb.erb
|
698
702
|
- templates/plugin_config_formatter/param.md-compact.erb
|
699
703
|
- templates/plugin_config_formatter/param.md-table.erb
|
700
704
|
- templates/plugin_config_formatter/param.md.erb
|
@@ -702,6 +706,7 @@ files:
|
|
702
706
|
- test/command/test_binlog_reader.rb
|
703
707
|
- test/command/test_ca_generate.rb
|
704
708
|
- test/command/test_cap_ctl.rb
|
709
|
+
- test/command/test_cat.rb
|
705
710
|
- test/command/test_ctl.rb
|
706
711
|
- test/command/test_fluentd.rb
|
707
712
|
- test/command/test_plugin_config_formatter.rb
|
@@ -898,6 +903,7 @@ files:
|
|
898
903
|
- test/test_match.rb
|
899
904
|
- test/test_mixin.rb
|
900
905
|
- test/test_msgpack_factory.rb
|
906
|
+
- test/test_oj_options.rb
|
901
907
|
- test/test_output.rb
|
902
908
|
- test/test_plugin.rb
|
903
909
|
- test/test_plugin_classes.rb
|
@@ -932,7 +938,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
932
938
|
- !ruby/object:Gem::Version
|
933
939
|
version: '0'
|
934
940
|
requirements: []
|
935
|
-
rubygems_version: 3.
|
941
|
+
rubygems_version: 3.1.6
|
936
942
|
signing_key:
|
937
943
|
specification_version: 4
|
938
944
|
summary: Fluentd event collector
|
@@ -940,6 +946,7 @@ test_files:
|
|
940
946
|
- test/command/test_binlog_reader.rb
|
941
947
|
- test/command/test_ca_generate.rb
|
942
948
|
- test/command/test_cap_ctl.rb
|
949
|
+
- test/command/test_cat.rb
|
943
950
|
- test/command/test_ctl.rb
|
944
951
|
- test/command/test_fluentd.rb
|
945
952
|
- test/command/test_plugin_config_formatter.rb
|
@@ -1136,6 +1143,7 @@ test_files:
|
|
1136
1143
|
- test/test_match.rb
|
1137
1144
|
- test/test_mixin.rb
|
1138
1145
|
- test/test_msgpack_factory.rb
|
1146
|
+
- test/test_oj_options.rb
|
1139
1147
|
- test/test_output.rb
|
1140
1148
|
- test/test_plugin.rb
|
1141
1149
|
- test/test_plugin_classes.rb
|
@@ -1,40 +0,0 @@
|
|
1
|
-
---
|
2
|
-
name: Bug Report
|
3
|
-
about: Create a report with a procedure for reproducing the bug
|
4
|
-
|
5
|
-
---
|
6
|
-
|
7
|
-
Check [CONTRIBUTING guideline](https://github.com/fluent/fluentd/blob/master/CONTRIBUTING.md) first and here is the list to help us investigate the problem.
|
8
|
-
|
9
|
-
**Describe the bug**
|
10
|
-
<!-- A clear and concise description of what the bug is. -->
|
11
|
-
|
12
|
-
**To Reproduce**
|
13
|
-
<!-- Steps to reproduce the behavior: -->
|
14
|
-
|
15
|
-
**Expected behavior**
|
16
|
-
<!-- A clear and concise description of what you expected to happen. -->
|
17
|
-
|
18
|
-
**Your Environment**
|
19
|
-
|
20
|
-
- Fluentd or td-agent version: `fluentd --version` or `td-agent --version`
|
21
|
-
- Operating system: `cat /etc/os-release`
|
22
|
-
- Kernel version: `uname -r`
|
23
|
-
|
24
|
-
If you hit the problem with older fluentd version, try latest version first.
|
25
|
-
|
26
|
-
**Your Configuration**
|
27
|
-
|
28
|
-
```
|
29
|
-
<!-- Write your configuration here -->
|
30
|
-
```
|
31
|
-
|
32
|
-
**Your Error Log**
|
33
|
-
|
34
|
-
```
|
35
|
-
<!-- Write your **ALL** error log here -->
|
36
|
-
```
|
37
|
-
|
38
|
-
**Additional context**
|
39
|
-
|
40
|
-
<!-- Add any other context about the problem here. -->
|