fluentd 1.16.8 → 1.17.0
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/.github/DISCUSSION_TEMPLATE/q-a-japanese.yml +50 -0
- data/.github/DISCUSSION_TEMPLATE/q-a.yml +47 -0
- data/.github/workflows/test-ruby-head.yml +31 -0
- data/.github/workflows/test.yml +2 -13
- data/CHANGELOG.md +33 -69
- data/README.md +3 -1
- data/Rakefile +1 -1
- data/fluentd.gemspec +9 -10
- data/lib/fluent/command/binlog_reader.rb +1 -1
- data/lib/fluent/command/fluentd.rb +1 -1
- data/lib/fluent/compat/formatter.rb +0 -6
- data/lib/fluent/config/configure_proxy.rb +2 -2
- data/lib/fluent/config/parser.rb +3 -15
- data/lib/fluent/config/types.rb +1 -1
- data/lib/fluent/config/v1_parser.rb +1 -1
- data/lib/fluent/config/yaml_parser/parser.rb +0 -4
- data/lib/fluent/configurable.rb +2 -2
- data/lib/fluent/counter/mutex_hash.rb +1 -1
- data/lib/fluent/fluent_log_event_router.rb +0 -2
- data/lib/fluent/plugin/buf_file.rb +1 -1
- data/lib/fluent/plugin/buffer/file_chunk.rb +1 -1
- data/lib/fluent/plugin/buffer/file_single_chunk.rb +2 -3
- data/lib/fluent/plugin/filter_parser.rb +26 -8
- data/lib/fluent/plugin/formatter_csv.rb +4 -18
- data/lib/fluent/plugin/in_http.rb +17 -52
- data/lib/fluent/plugin/in_tail.rb +35 -3
- data/lib/fluent/plugin/out_file.rb +0 -8
- data/lib/fluent/plugin/out_http.rb +125 -13
- data/lib/fluent/plugin/owned_by_mixin.rb +0 -1
- data/lib/fluent/plugin/parser_json.rb +34 -9
- data/lib/fluent/plugin/parser_msgpack.rb +24 -3
- data/lib/fluent/plugin_helper/metrics.rb +2 -2
- data/lib/fluent/registry.rb +6 -6
- data/lib/fluent/supervisor.rb +3 -3
- data/lib/fluent/test/output_test.rb +1 -1
- data/lib/fluent/unique_id.rb +1 -1
- data/lib/fluent/version.rb +1 -1
- data/lib/fluent/winsvc.rb +8 -38
- data/test/command/test_cat.rb +2 -2
- data/test/command/test_fluentd.rb +10 -57
- data/test/config/test_plugin_configuration.rb +6 -6
- data/test/helper.rb +7 -27
- data/test/log/test_console_adapter.rb +10 -3
- data/test/plugin/data/log_numeric/01.log +0 -0
- data/test/plugin/data/log_numeric/02.log +0 -0
- data/test/plugin/data/log_numeric/12.log +0 -0
- data/test/plugin/data/log_numeric/14.log +0 -0
- data/test/plugin/in_tail/test_io_handler.rb +14 -13
- data/test/plugin/in_tail/test_position_file.rb +7 -6
- data/test/plugin/out_forward/test_ack_handler.rb +3 -3
- data/test/plugin/out_forward/test_socket_cache.rb +3 -3
- data/test/plugin/test_buffer.rb +2 -2
- data/test/plugin/test_filter_grep.rb +1 -1
- data/test/plugin/test_in_forward.rb +1 -2
- data/test/plugin/test_in_http.rb +23 -1
- data/test/plugin/test_in_monitor_agent.rb +6 -6
- data/test/plugin/test_in_syslog.rb +18 -25
- data/test/plugin/test_in_tail.rb +153 -5
- data/test/plugin/test_in_tcp.rb +1 -1
- data/test/plugin/test_in_udp.rb +10 -16
- data/test/plugin/test_out_exec_filter.rb +7 -12
- data/test/plugin/test_out_file.rb +2 -22
- data/test/plugin/test_out_forward.rb +3 -2
- data/test/plugin/test_out_http.rb +128 -0
- data/test/plugin/test_out_stream.rb +1 -1
- data/test/plugin/test_output.rb +1 -1
- data/test/plugin/test_output_as_buffered.rb +2 -2
- data/test/plugin/test_output_as_buffered_retries.rb +2 -2
- data/test/plugin/test_owned_by.rb +0 -1
- data/test/plugin/test_parser_csv.rb +1 -1
- data/test/plugin/test_parser_json.rb +106 -31
- data/test/plugin/test_parser_msgpack.rb +127 -0
- data/test/plugin/test_storage.rb +0 -1
- data/test/plugin_helper/test_child_process.rb +4 -4
- data/test/plugin_helper/test_http_server_helper.rb +1 -1
- data/test/plugin_helper/test_server.rb +41 -64
- data/test/plugin_helper/test_socket.rb +1 -1
- data/test/test_config.rb +0 -6
- data/test/test_event_router.rb +2 -2
- data/test/test_supervisor.rb +21 -30
- data/test/test_tls.rb +1 -1
- metadata +85 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: df7f40114152fe9cd139ef2c195e7baf19b501a3e949ba8412de445a3337c26f
|
4
|
+
data.tar.gz: e7b728c294b2797223405571ffc66853fb21210fe696b5299179c8a85f1c51a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad48b5478ae93b0c41e6db5cec80b1e67ac18c24b44ce43193143150d8fbf765b3b2674ddc6e32dfd649095647bb6113687c436fa463249f0e1ab64c665ab7b3
|
7
|
+
data.tar.gz: 4cfc5bb3ecd1b116346d6d899c243142c4c4a8768e980f895a3d5b6ee3a49b5b7fc132710316a657fb6353651b7fe42345371d536ed6123d52bce3a79bd4ff35
|
@@ -0,0 +1,50 @@
|
|
1
|
+
title: "[QA (Japanese)]"
|
2
|
+
labels: ["Q&A (Japanese)"]
|
3
|
+
body:
|
4
|
+
- type: markdown
|
5
|
+
attributes:
|
6
|
+
value: |
|
7
|
+
日本語で気軽に質問するためのカテゴリです。もし他の人が困っているのを見つけたらぜひ回答してあげてください。
|
8
|
+
- type: textarea
|
9
|
+
id: question
|
10
|
+
attributes:
|
11
|
+
label: やりたいこと
|
12
|
+
description: |
|
13
|
+
何について困っているのかを書いてください。試したことや実際の結果を示してください。
|
14
|
+
期待する挙動と実際の結果の違いがあればそれも書くのをおすすめします。
|
15
|
+
render: markdown
|
16
|
+
validations:
|
17
|
+
required: true
|
18
|
+
- type: textarea
|
19
|
+
id: configuration
|
20
|
+
attributes:
|
21
|
+
label: 設定した内容
|
22
|
+
description: |
|
23
|
+
どのような設定をして期待する挙動を実現しようとしたのかを書いてください。(例: fluentd.confの内容を貼り付ける)
|
24
|
+
render: apache
|
25
|
+
- type: textarea
|
26
|
+
id: logs
|
27
|
+
attributes:
|
28
|
+
label: ログの内容
|
29
|
+
description: |
|
30
|
+
Fluentdのログを提示してください。エラーログがあると回答の助けになります。(例: fluentd.logの内容を貼り付ける)
|
31
|
+
render: shell
|
32
|
+
- type: textarea
|
33
|
+
id: environment
|
34
|
+
attributes:
|
35
|
+
label: 環境について
|
36
|
+
description: |
|
37
|
+
- Fluentd or td-agent version: `fluentd --version` or `td-agent --version`
|
38
|
+
- Operating system: `cat /etc/os-release`
|
39
|
+
- Kernel version: `uname -r`
|
40
|
+
|
41
|
+
どんな環境で困っているかの情報がないと、再現できないため誰も回答できないことがあります。
|
42
|
+
必要な情報を記入することをおすすめします。
|
43
|
+
value: |
|
44
|
+
- Fluentd version:
|
45
|
+
- TD Agent version:
|
46
|
+
- Fluent Package version:
|
47
|
+
- Docker image (tag):
|
48
|
+
- Operating system:
|
49
|
+
- Kernel version:
|
50
|
+
render: markdown
|
@@ -0,0 +1,47 @@
|
|
1
|
+
title: "[Q&A]"
|
2
|
+
labels: ["Q&A"]
|
3
|
+
body:
|
4
|
+
- type: markdown
|
5
|
+
attributes:
|
6
|
+
value: |
|
7
|
+
It is recommended to support each other.
|
8
|
+
- type: textarea
|
9
|
+
id: question
|
10
|
+
attributes:
|
11
|
+
label: What is a problem?
|
12
|
+
description: |
|
13
|
+
A clear and concise description of what you want to happen.
|
14
|
+
What exactly did you do (or not do) that was effective (or ineffective)?
|
15
|
+
render: markdown
|
16
|
+
validations:
|
17
|
+
required: true
|
18
|
+
- type: textarea
|
19
|
+
id: configuration
|
20
|
+
attributes:
|
21
|
+
label: Describe the configuration of Fluentd
|
22
|
+
description: |
|
23
|
+
If there is the actual configuration of Fluentd, it will help.
|
24
|
+
- type: textarea
|
25
|
+
id: logs
|
26
|
+
attributes:
|
27
|
+
label: Describe the logs of Fluentd
|
28
|
+
description: |
|
29
|
+
If there are error logs of Fluentd, it will help.
|
30
|
+
- type: textarea
|
31
|
+
id: environment
|
32
|
+
attributes:
|
33
|
+
label: Environment
|
34
|
+
description: |
|
35
|
+
- Fluentd or td-agent version: `fluentd --version` or `td-agent --version`
|
36
|
+
- Operating system: `cat /etc/os-release`
|
37
|
+
- Kernel version: `uname -r`
|
38
|
+
|
39
|
+
Please describe your environment information. If will help to support.
|
40
|
+
value: |
|
41
|
+
- Fluentd version:
|
42
|
+
- TD Agent version:
|
43
|
+
- Fluent Package version:
|
44
|
+
- Docker image (tag):
|
45
|
+
- Operating system:
|
46
|
+
- Kernel version:
|
47
|
+
render: markdown
|
@@ -0,0 +1,31 @@
|
|
1
|
+
name: Test with Ruby head
|
2
|
+
|
3
|
+
on:
|
4
|
+
schedule:
|
5
|
+
- cron: '11 14 * * 0'
|
6
|
+
workflow_dispatch:
|
7
|
+
|
8
|
+
jobs:
|
9
|
+
test:
|
10
|
+
runs-on: ${{ matrix.os }}
|
11
|
+
continue-on-error: true
|
12
|
+
strategy:
|
13
|
+
fail-fast: false
|
14
|
+
matrix:
|
15
|
+
os: ['ubuntu-latest', 'macos-latest', 'windows-latest']
|
16
|
+
ruby-version: ['head']
|
17
|
+
|
18
|
+
name: Ruby ${{ matrix.ruby-version }} on ${{ matrix.os }}
|
19
|
+
steps:
|
20
|
+
- uses: actions/checkout@v3
|
21
|
+
- name: Set up Ruby
|
22
|
+
uses: ruby/setup-ruby@v1
|
23
|
+
with:
|
24
|
+
ruby-version: ${{ matrix.ruby-version }}
|
25
|
+
- name: Install addons
|
26
|
+
if: ${{ matrix.os == 'ubuntu-latest' }}
|
27
|
+
run: sudo apt-get install libgmp3-dev libcap-ng-dev
|
28
|
+
- name: Install dependencies
|
29
|
+
run: bundle install
|
30
|
+
- name: Run tests
|
31
|
+
run: bundle exec rake test TESTOPTS="-v --no-show-detail-immediately"
|
data/.github/workflows/test.yml
CHANGED
@@ -2,19 +2,9 @@ name: Test
|
|
2
2
|
|
3
3
|
on:
|
4
4
|
push:
|
5
|
-
branches: [
|
6
|
-
paths-ignore:
|
7
|
-
- '*.md'
|
8
|
-
- 'lib/fluent/version.rb'
|
5
|
+
branches: [master]
|
9
6
|
pull_request:
|
10
|
-
branches: [
|
11
|
-
paths-ignore:
|
12
|
-
- '*.md'
|
13
|
-
- 'lib/fluent/version.rb'
|
14
|
-
|
15
|
-
concurrency:
|
16
|
-
group: ${{ github.head_ref || github.sha }}-${{ github.workflow }}
|
17
|
-
cancel-in-progress: true
|
7
|
+
branches: [master]
|
18
8
|
|
19
9
|
jobs:
|
20
10
|
test:
|
@@ -33,7 +23,6 @@ jobs:
|
|
33
23
|
uses: ruby/setup-ruby@v1
|
34
24
|
with:
|
35
25
|
ruby-version: ${{ matrix.ruby-version }}
|
36
|
-
rubygems: latest
|
37
26
|
- name: Install addons
|
38
27
|
if: ${{ matrix.os == 'ubuntu-latest' }}
|
39
28
|
run: sudo apt-get install libgmp3-dev libcap-ng-dev
|
data/CHANGELOG.md
CHANGED
@@ -1,82 +1,46 @@
|
|
1
|
-
# v1.
|
2
|
-
|
3
|
-
## Release v1.16.8 - 2025/05/01
|
4
|
-
|
5
|
-
### Bug Fix
|
1
|
+
# v1.17
|
6
2
|
|
7
|
-
|
8
|
-
https://github.com/fluent/fluentd/pull/4942
|
9
|
-
* formatter_csv: Fix memory leak
|
10
|
-
https://github.com/fluent/fluentd/pull/4920
|
3
|
+
## Release v1.17.0 - 2024/04/30
|
11
4
|
|
12
|
-
###
|
5
|
+
### Enhancement
|
13
6
|
|
14
|
-
*
|
15
|
-
https://github.com/fluent/fluentd/pull/
|
16
|
-
*
|
17
|
-
https://github.com/fluent/fluentd/pull/
|
18
|
-
|
19
|
-
https://github.com/fluent/fluentd/pull/
|
20
|
-
|
21
|
-
|
22
|
-
https://github.com/fluent/fluentd/pull/4821
|
23
|
-
https://github.com/fluent/fluentd/pull/4850
|
24
|
-
https://github.com/fluent/fluentd/pull/4851
|
25
|
-
https://github.com/fluent/fluentd/pull/4862
|
26
|
-
https://github.com/fluent/fluentd/pull/4915
|
27
|
-
https://github.com/fluent/fluentd/pull/4923
|
28
|
-
https://github.com/fluent/fluentd/pull/4925
|
29
|
-
https://github.com/fluent/fluentd/pull/4927
|
30
|
-
|
31
|
-
## Release v1.16.7 - 2025/01/29
|
7
|
+
* in_http: Recognize CSP reports as JSON data
|
8
|
+
https://github.com/fluent/fluentd/pull/4282
|
9
|
+
* out_http: Add option to reuse connections
|
10
|
+
https://github.com/fluent/fluentd/pull/4330
|
11
|
+
* in_tail: Expand glob capability for square brackets and one character matcher
|
12
|
+
https://github.com/fluent/fluentd/pull/4401
|
13
|
+
* out_http: Support AWS Signature Version 4 authentication
|
14
|
+
https://github.com/fluent/fluentd/pull/4459
|
32
15
|
|
33
16
|
### Bug Fix
|
34
17
|
|
35
|
-
*
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
https://github.com/fluent/fluentd/pull/4782
|
18
|
+
* Make sure `parser_json` and `parser_msgpack` return `Hash`.
|
19
|
+
Make `parser_json` and `parser_msgpack` accept only `Hash` or `Array` of `Hash`.
|
20
|
+
https://github.com/fluent/fluentd/pull/4474
|
21
|
+
* filter_parser: Add error event for multiple parsed results
|
22
|
+
https://github.com/fluent/fluentd/pull/4478
|
41
23
|
|
42
24
|
### Misc
|
43
25
|
|
44
|
-
*
|
45
|
-
https://github.com/fluent/fluentd/pull/
|
46
|
-
*
|
47
|
-
https://github.com/fluent/fluentd/pull/
|
48
|
-
*
|
49
|
-
https://github.com/fluent/fluentd/pull/
|
50
|
-
https://github.com/fluent/fluentd/pull/
|
51
|
-
https://github.com/fluent/fluentd/pull/
|
52
|
-
https://github.com/fluent/fluentd/pull/
|
53
|
-
|
54
|
-
https://github.com/fluent/fluentd/pull/
|
55
|
-
https://github.com/fluent/fluentd/pull/
|
56
|
-
https://github.com/fluent/fluentd/pull/
|
57
|
-
https://github.com/fluent/fluentd/pull/
|
58
|
-
|
59
|
-
https://github.com/fluent/fluentd/pull/
|
60
|
-
https://github.com/fluent/fluentd/pull/4801
|
61
|
-
https://github.com/fluent/fluentd/pull/4803
|
62
|
-
|
63
|
-
## Release v1.16.6 - 2024/08/16
|
26
|
+
* Raise minimum required ruby version
|
27
|
+
https://github.com/fluent/fluentd/pull/4288
|
28
|
+
* Require missing dependent gems as of Ruby 3.4-dev
|
29
|
+
https://github.com/fluent/fluentd/pull/4411
|
30
|
+
* Minor code refactoring
|
31
|
+
https://github.com/fluent/fluentd/pull/4294
|
32
|
+
https://github.com/fluent/fluentd/pull/4299
|
33
|
+
https://github.com/fluent/fluentd/pull/4302
|
34
|
+
https://github.com/fluent/fluentd/pull/4320
|
35
|
+
* CI fixes
|
36
|
+
https://github.com/fluent/fluentd/pull/4369
|
37
|
+
https://github.com/fluent/fluentd/pull/4433
|
38
|
+
https://github.com/fluent/fluentd/pull/4452
|
39
|
+
https://github.com/fluent/fluentd/pull/4477
|
40
|
+
* github: unify YAML file extension to .yml
|
41
|
+
https://github.com/fluent/fluentd/pull/4429
|
64
42
|
|
65
|
-
|
66
|
-
|
67
|
-
* YAML config syntax: Fix issue where `$log_level` element was not supported correctly
|
68
|
-
https://github.com/fluent/fluentd/pull/4486
|
69
|
-
* parser_json: Fix wrong LoadError warning
|
70
|
-
https://github.com/fluent/fluentd/pull/4592
|
71
|
-
* `fluentd` command: Fix `--plugin` (`-p`) option not to overwrite default value
|
72
|
-
https://github.com/fluent/fluentd/pull/4605
|
73
|
-
|
74
|
-
### Misc
|
75
|
-
|
76
|
-
* out_file: Add warn message for symlink_path setting
|
77
|
-
https://github.com/fluent/fluentd/pull/4512
|
78
|
-
* Keep console gem v1.23 to avoid LoadError
|
79
|
-
https://github.com/fluent/fluentd/pull/4510
|
43
|
+
# v1.16
|
80
44
|
|
81
45
|
## Release v1.16.5 - 2024/03/27
|
82
46
|
|
data/README.md
CHANGED
@@ -29,7 +29,7 @@ Fluentd: Open-Source Log Collector
|
|
29
29
|
|
30
30
|
### Prerequisites
|
31
31
|
|
32
|
-
- Ruby 2.
|
32
|
+
- Ruby 2.7 or later
|
33
33
|
- git
|
34
34
|
|
35
35
|
`git` should be in `PATH`. On Windows, you can use `Github for Windows` and `GitShell` for easy setup.
|
@@ -71,3 +71,5 @@ See [SECURITY](SECURITY.md) to contact us about vulnerability.
|
|
71
71
|
## Contributors:
|
72
72
|
|
73
73
|
Patches contributed by [great developers](https://github.com/fluent/fluentd/contributors).
|
74
|
+
|
75
|
+
[<img src="https://ga-beacon.appspot.com/UA-24890265-6/fluent/fluentd" />](https://github.com/fluent/fluentd)
|
data/Rakefile
CHANGED
@@ -13,7 +13,7 @@ task test: [:base_test]
|
|
13
13
|
namespace :build do
|
14
14
|
desc 'Build gems for all platforms'
|
15
15
|
task :all do
|
16
|
-
Bundler.
|
16
|
+
Bundler.with_original_env do
|
17
17
|
%w[ruby x86-mingw32 x64-mingw32 x64-mingw-ucrt].each do |name|
|
18
18
|
ENV['GEM_BUILD_FAKE_PLATFORM'] = name
|
19
19
|
Rake::Task["build"].execute
|
data/fluentd.gemspec
CHANGED
@@ -16,7 +16,7 @@ Gem::Specification.new do |gem|
|
|
16
16
|
gem.require_paths = ["lib"]
|
17
17
|
gem.license = "Apache-2.0"
|
18
18
|
|
19
|
-
gem.required_ruby_version = '>= 2.
|
19
|
+
gem.required_ruby_version = '>= 2.7'
|
20
20
|
|
21
21
|
gem.add_runtime_dependency("bundler")
|
22
22
|
gem.add_runtime_dependency("msgpack", [">= 1.3.1", "< 2.0.0"])
|
@@ -29,10 +29,11 @@ Gem::Specification.new do |gem|
|
|
29
29
|
gem.add_runtime_dependency("tzinfo-data", ["~> 1.0"])
|
30
30
|
gem.add_runtime_dependency("strptime", [">= 0.2.4", "< 1.0.0"])
|
31
31
|
gem.add_runtime_dependency("webrick", ["~> 1.4"])
|
32
|
-
gem.add_runtime_dependency("console", ["< 1.24"])
|
33
32
|
|
34
|
-
# gems that aren't default gems as of Ruby 3.
|
35
|
-
gem.add_runtime_dependency("
|
33
|
+
# gems that aren't default gems as of Ruby 3.4
|
34
|
+
gem.add_runtime_dependency("base64", ["~> 0.2"])
|
35
|
+
gem.add_runtime_dependency("csv", ["~> 3.2"])
|
36
|
+
gem.add_runtime_dependency("drb", ["~> 2.2"])
|
36
37
|
|
37
38
|
# build gem for a certain platform. see also Rakefile
|
38
39
|
fake_platform = ENV['GEM_BUILD_FAKE_PLATFORM'].to_s
|
@@ -42,9 +43,6 @@ Gem::Specification.new do |gem|
|
|
42
43
|
gem.add_runtime_dependency("win32-ipc", ["~> 0.7.0"])
|
43
44
|
gem.add_runtime_dependency("win32-event", ["~> 0.6.3"])
|
44
45
|
gem.add_runtime_dependency("certstore_c", ["~> 0.1.7"])
|
45
|
-
|
46
|
-
# gems that aren't default gems as of Ruby 3.5
|
47
|
-
gem.add_runtime_dependency("fiddle", ["~> 1.1"])
|
48
46
|
end
|
49
47
|
|
50
48
|
gem.add_development_dependency("rake", ["~> 13.0"])
|
@@ -52,12 +50,13 @@ Gem::Specification.new do |gem|
|
|
52
50
|
gem.add_development_dependency("parallel_tests", ["~> 0.15.3"])
|
53
51
|
gem.add_development_dependency("simplecov", ["~> 0.7"])
|
54
52
|
gem.add_development_dependency("rr", ["~> 3.0"])
|
55
|
-
|
56
|
-
# (https://github.com/fluent/fluentd/pull/4521)
|
57
|
-
gem.add_development_dependency("timecop", ["< 0.9.9"])
|
53
|
+
gem.add_development_dependency("timecop", ["~> 0.9"])
|
58
54
|
gem.add_development_dependency("test-unit", ["~> 3.3"])
|
59
55
|
gem.add_development_dependency("test-unit-rr", ["~> 1.0"])
|
60
56
|
gem.add_development_dependency("oj", [">= 2.14", "< 4"])
|
61
57
|
gem.add_development_dependency("async", "~> 1.23")
|
62
58
|
gem.add_development_dependency("async-http", ">= 0.50.0")
|
59
|
+
gem.add_development_dependency("aws-sigv4", ["~> 1.8"])
|
60
|
+
gem.add_development_dependency("aws-sdk-core", ["~> 3.191"])
|
61
|
+
gem.add_development_dependency("rexml", ["~> 3.2"])
|
63
62
|
end
|
@@ -130,7 +130,7 @@ module BinlogReaderCommand
|
|
130
130
|
private
|
131
131
|
|
132
132
|
def configure_option_parser
|
133
|
-
@options
|
133
|
+
@options[:config_params] = {}
|
134
134
|
|
135
135
|
@opt_parser.banner = "Usage: fluent-binlog-reader #{self.class.to_s.split('::').last.downcase} [options] file"
|
136
136
|
|
@@ -46,7 +46,7 @@ op.on('--show-plugin-config=PLUGIN', "[DEPRECATED] Show PLUGIN configuration and
|
|
46
46
|
}
|
47
47
|
|
48
48
|
op.on('-p', '--plugin DIR', "add plugin directory") {|s|
|
49
|
-
(cmd_opts[:plugin_dirs] ||=
|
49
|
+
(cmd_opts[:plugin_dirs] ||= []) << s
|
50
50
|
}
|
51
51
|
|
52
52
|
op.on('-I PATH', "add library path") {|s|
|
@@ -101,12 +101,6 @@ module Fluent
|
|
101
101
|
|
102
102
|
class CsvFormatter < Fluent::Plugin::CsvFormatter
|
103
103
|
# TODO: warn when deprecated
|
104
|
-
|
105
|
-
# Do not cache because it is hard to consider the thread key correctly.
|
106
|
-
# (We can try, but it would be low priority.)
|
107
|
-
def csv_cacheable?
|
108
|
-
false
|
109
|
-
end
|
110
104
|
end
|
111
105
|
|
112
106
|
class SingleValueFormatter < Fluent::Plugin::SingleValueFormatter
|
@@ -201,7 +201,7 @@ module Fluent
|
|
201
201
|
|
202
202
|
def overwrite_defaults(other) # other is owner plugin's corresponding proxy
|
203
203
|
self.defaults = self.defaults.merge(other.defaults)
|
204
|
-
self.sections.
|
204
|
+
self.sections.each_key do |section_key|
|
205
205
|
if other.sections.has_key?(section_key)
|
206
206
|
self.sections[section_key].overwrite_defaults(other.sections[section_key])
|
207
207
|
end
|
@@ -274,7 +274,7 @@ module Fluent
|
|
274
274
|
option_value_type!(name, opts, :deprecated, String)
|
275
275
|
option_value_type!(name, opts, :obsoleted, String)
|
276
276
|
if type == :enum
|
277
|
-
if !opts.has_key?(:list) || !opts[:list].is_a?(Array) || opts[:list].empty? || !opts[:list].all?
|
277
|
+
if !opts.has_key?(:list) || !opts[:list].is_a?(Array) || opts[:list].empty? || !opts[:list].all?(Symbol)
|
278
278
|
raise ArgumentError, "#{name}: enum parameter requires :list of Symbols"
|
279
279
|
end
|
280
280
|
end
|
data/lib/fluent/config/parser.rb
CHANGED
@@ -92,23 +92,10 @@ module Fluent
|
|
92
92
|
else
|
93
93
|
basepath = '/'
|
94
94
|
fname = path
|
95
|
-
|
95
|
+
require 'open-uri'
|
96
|
+
URI.open(uri) {|f|
|
96
97
|
Parser.new(basepath, f.each_line, fname).parse!(allow_include, nil, attrs, elems)
|
97
98
|
}
|
98
|
-
|
99
|
-
case u.scheme
|
100
|
-
when 'http', 'https', 'ftp'
|
101
|
-
# URI#open can be able to handle URIs for http, https and ftp.
|
102
|
-
require 'open-uri'
|
103
|
-
u.open(&parser_proc)
|
104
|
-
else
|
105
|
-
# TODO: This case should be handled in the previous if condition. Glob is not applied to some Windows path formats.
|
106
|
-
# 'c:/path/to/file' will be passed as URI, 'uri' and 'u.path' will be:
|
107
|
-
# - uri is 'c:/path/to/file'
|
108
|
-
# - u.path is '/path/to/file' and u.scheme is 'c'
|
109
|
-
# Therefore, the condition of the if statement above is not met and it is handled here.
|
110
|
-
File.open(uri, &parser_proc)
|
111
|
-
end
|
112
99
|
end
|
113
100
|
|
114
101
|
rescue SystemCallError => e
|
@@ -117,3 +104,4 @@ module Fluent
|
|
117
104
|
end
|
118
105
|
end
|
119
106
|
end
|
107
|
+
|
data/lib/fluent/config/types.rb
CHANGED
@@ -123,7 +123,7 @@ module Fluent
|
|
123
123
|
|
124
124
|
s = val.to_sym
|
125
125
|
list = opts[:list]
|
126
|
-
raise "Plugin BUG: config type 'enum' requires :list of symbols" unless list.is_a?(Array) && list.all?
|
126
|
+
raise "Plugin BUG: config type 'enum' requires :list of symbols" unless list.is_a?(Array) && list.all?(Symbol)
|
127
127
|
unless list.include?(s)
|
128
128
|
raise ConfigError, "valid options are #{list.join(',')} but got #{val}"
|
129
129
|
end
|
@@ -172,7 +172,7 @@ module Fluent
|
|
172
172
|
require 'open-uri'
|
173
173
|
basepath = '/'
|
174
174
|
fname = path
|
175
|
-
data =
|
175
|
+
data = URI.open(uri) { |f| f.read }
|
176
176
|
data.force_encoding('UTF-8')
|
177
177
|
ss = StringScanner.new(data)
|
178
178
|
V1Parser.new(ss, basepath, fname, @eval_context).parse_element(true, nil, attrs, elems)
|
data/lib/fluent/configurable.rb
CHANGED
@@ -31,13 +31,13 @@ module Fluent
|
|
31
31
|
super
|
32
32
|
# to simulate implicit 'attr_accessor' by config_param / config_section and its value by config_set_default
|
33
33
|
proxy = self.class.merged_configure_proxy
|
34
|
-
proxy.params.
|
34
|
+
proxy.params.each_key do |name|
|
35
35
|
next if name.to_s.start_with?('@')
|
36
36
|
if proxy.defaults.has_key?(name)
|
37
37
|
instance_variable_set("@#{name}".to_sym, proxy.defaults[name])
|
38
38
|
end
|
39
39
|
end
|
40
|
-
proxy.sections.
|
40
|
+
proxy.sections.each_key do |name|
|
41
41
|
next if name.to_s.start_with?('@')
|
42
42
|
subproxy = proxy.sections[name]
|
43
43
|
if subproxy.multi?
|
@@ -47,8 +47,6 @@ module Fluent
|
|
47
47
|
# it's not suppressed in default event router for non-log-event events
|
48
48
|
log_event_router.suppress_missing_match!
|
49
49
|
|
50
|
-
log_event_router = log_event_router
|
51
|
-
|
52
50
|
unmatched_tags = Fluent::Log.event_tags.select { |t| !log_event_router.match?(t) }
|
53
51
|
unless unmatched_tags.empty?
|
54
52
|
$log.warn "match for some tags of log events are not defined in @FLUENT_LOG label (to be ignored)", tags: unmatched_tags
|
@@ -56,7 +56,7 @@ module Fluent
|
|
56
56
|
|
57
57
|
@variable_store = Fluent::VariableStore.fetch_or_build(:buf_file)
|
58
58
|
|
59
|
-
multi_workers_configured = owner.system_config.workers > 1
|
59
|
+
multi_workers_configured = owner.system_config.workers > 1
|
60
60
|
|
61
61
|
using_plugin_root_dir = false
|
62
62
|
unless @path
|
@@ -399,7 +399,7 @@ module Fluent
|
|
399
399
|
end
|
400
400
|
|
401
401
|
if chunk.slice(0, 2) == BUFFER_HEADER
|
402
|
-
size = chunk.slice(2, 4).
|
402
|
+
size = chunk.slice(2, 4).unpack1('N')
|
403
403
|
if size
|
404
404
|
return Fluent::MessagePackFactory.msgpack_unpacker(symbolize_keys: true).feed(chunk.slice(6, size)).read rescue nil
|
405
405
|
end
|
@@ -238,17 +238,16 @@ module Fluent
|
|
238
238
|
callback.call(file) if callback
|
239
239
|
end
|
240
240
|
|
241
|
-
URI_PARSER = URI::Parser.new
|
242
241
|
ESCAPE_REGEXP = /[^-_.a-zA-Z0-9]/n
|
243
242
|
|
244
243
|
def encode_key(metadata)
|
245
244
|
k = @key ? metadata.variables[@key] : metadata.tag
|
246
245
|
k ||= ''
|
247
|
-
|
246
|
+
URI::DEFAULT_PARSER.escape(k, ESCAPE_REGEXP)
|
248
247
|
end
|
249
248
|
|
250
249
|
def decode_key(key)
|
251
|
-
|
250
|
+
URI::DEFAULT_PARSER.unescape(key)
|
252
251
|
end
|
253
252
|
|
254
253
|
def create_new_chunk(path, metadata, perm)
|
@@ -70,6 +70,13 @@ module Fluent::Plugin
|
|
70
70
|
end
|
71
71
|
end
|
72
72
|
begin
|
73
|
+
# Note: https://github.com/fluent/fluentd/issues/4100
|
74
|
+
# If the parser returns multiple records from one raw_value,
|
75
|
+
# this returns only the first one record.
|
76
|
+
# This should be fixed in the future version.
|
77
|
+
result_time = nil
|
78
|
+
result_record = nil
|
79
|
+
|
73
80
|
@parser.parse(raw_value) do |t, values|
|
74
81
|
if values
|
75
82
|
t = if @reserve_time
|
@@ -79,20 +86,31 @@ module Fluent::Plugin
|
|
79
86
|
end
|
80
87
|
@accessor.delete(record) if @remove_key_name_field
|
81
88
|
r = handle_parsed(tag, record, t, values)
|
82
|
-
|
89
|
+
|
90
|
+
if result_record.nil?
|
91
|
+
result_time = t
|
92
|
+
result_record = r
|
93
|
+
else
|
94
|
+
if @emit_invalid_record_to_error
|
95
|
+
router.emit_error_event(tag, t, r, Fluent::Plugin::Parser::ParserError.new(
|
96
|
+
"Could not emit the event. The parser returned multiple results, but currently filter_parser plugin only returns the first parsed result. Raw data: '#{raw_value}'"
|
97
|
+
))
|
98
|
+
end
|
99
|
+
end
|
83
100
|
else
|
84
101
|
if @emit_invalid_record_to_error
|
85
102
|
router.emit_error_event(tag, time, record, Fluent::Plugin::Parser::ParserError.new("pattern not matched with data '#{raw_value}'"))
|
86
103
|
end
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
end
|
104
|
+
|
105
|
+
next unless @reserve_data
|
106
|
+
next unless result_record.nil?
|
107
|
+
|
108
|
+
result_time = time
|
109
|
+
result_record = handle_parsed(tag, record, time, {})
|
94
110
|
end
|
95
111
|
end
|
112
|
+
|
113
|
+
return result_time, result_record
|
96
114
|
rescue Fluent::Plugin::Parser::ParserError => e
|
97
115
|
if @emit_invalid_record_to_error
|
98
116
|
raise e
|