fluentd222 1.16.2-x86_64-linux
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 +7 -0
- data/.deepsource.toml +13 -0
- data/.github/ISSUE_TEMPLATE/bug_report.yaml +71 -0
- data/.github/ISSUE_TEMPLATE/config.yml +5 -0
- data/.github/ISSUE_TEMPLATE/feature_request.yaml +39 -0
- data/.github/ISSUE_TEMPLATE.md +17 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +14 -0
- data/.github/workflows/stale-actions.yml +24 -0
- data/.github/workflows/test-ruby-head.yaml +31 -0
- data/.github/workflows/test.yaml +32 -0
- data/.gitignore +30 -0
- data/ADOPTERS.md +5 -0
- data/AUTHORS +2 -0
- data/CHANGELOG.md +2720 -0
- data/CONTRIBUTING.md +45 -0
- data/GOVERNANCE.md +55 -0
- data/Gemfile +9 -0
- data/GithubWorkflow.md +78 -0
- data/LICENSE +202 -0
- data/MAINTAINERS.md +13 -0
- data/README.md +75 -0
- data/Rakefile +79 -0
- data/SECURITY.md +14 -0
- data/bin/fluent-binlog-reader +7 -0
- data/bin/fluent-ca-generate +6 -0
- data/bin/fluent-cap-ctl +7 -0
- data/bin/fluent-cat +5 -0
- data/bin/fluent-ctl +7 -0
- data/bin/fluent-debug +5 -0
- data/bin/fluent-gem +9 -0
- data/bin/fluent-plugin-config-format +5 -0
- data/bin/fluent-plugin-generate +5 -0
- data/bin/fluentd +15 -0
- data/code-of-conduct.md +3 -0
- data/docs/SECURITY_AUDIT.pdf +0 -0
- data/example/copy_roundrobin.conf +39 -0
- data/example/counter.conf +18 -0
- data/example/filter_stdout.conf +22 -0
- data/example/in_forward.conf +14 -0
- data/example/in_forward_client.conf +37 -0
- data/example/in_forward_shared_key.conf +15 -0
- data/example/in_forward_tls.conf +14 -0
- data/example/in_forward_users.conf +24 -0
- data/example/in_forward_workers.conf +21 -0
- data/example/in_http.conf +16 -0
- data/example/in_out_forward.conf +17 -0
- data/example/in_sample_blocks.conf +17 -0
- data/example/in_sample_with_compression.conf +23 -0
- data/example/in_syslog.conf +15 -0
- data/example/in_tail.conf +14 -0
- data/example/in_tcp.conf +13 -0
- data/example/in_udp.conf +13 -0
- data/example/logevents.conf +25 -0
- data/example/multi_filters.conf +61 -0
- data/example/out_copy.conf +20 -0
- data/example/out_exec_filter.conf +42 -0
- data/example/out_file.conf +13 -0
- data/example/out_forward.conf +35 -0
- data/example/out_forward_buf_file.conf +23 -0
- data/example/out_forward_client.conf +109 -0
- data/example/out_forward_heartbeat_none.conf +16 -0
- data/example/out_forward_sd.conf +17 -0
- data/example/out_forward_shared_key.conf +36 -0
- data/example/out_forward_tls.conf +18 -0
- data/example/out_forward_users.conf +65 -0
- data/example/out_null.conf +36 -0
- data/example/sd.yaml +8 -0
- data/example/secondary_file.conf +42 -0
- data/example/suppress_config_dump.conf +7 -0
- data/example/v0_12_filter.conf +78 -0
- data/example/v1_literal_example.conf +36 -0
- data/example/worker_section.conf +36 -0
- data/fluent.conf +139 -0
- data/fluentd.gemspec +54 -0
- data/lib/fluent/agent.rb +168 -0
- data/lib/fluent/capability.rb +87 -0
- data/lib/fluent/clock.rb +66 -0
- data/lib/fluent/command/binlog_reader.rb +244 -0
- data/lib/fluent/command/bundler_injection.rb +45 -0
- data/lib/fluent/command/ca_generate.rb +184 -0
- data/lib/fluent/command/cap_ctl.rb +174 -0
- data/lib/fluent/command/cat.rb +365 -0
- data/lib/fluent/command/ctl.rb +180 -0
- data/lib/fluent/command/debug.rb +103 -0
- data/lib/fluent/command/fluentd.rb +374 -0
- data/lib/fluent/command/plugin_config_formatter.rb +308 -0
- data/lib/fluent/command/plugin_generator.rb +365 -0
- data/lib/fluent/compat/call_super_mixin.rb +76 -0
- data/lib/fluent/compat/detach_process_mixin.rb +33 -0
- data/lib/fluent/compat/exec_util.rb +129 -0
- data/lib/fluent/compat/file_util.rb +54 -0
- data/lib/fluent/compat/filter.rb +68 -0
- data/lib/fluent/compat/formatter.rb +111 -0
- data/lib/fluent/compat/formatter_utils.rb +85 -0
- data/lib/fluent/compat/handle_tag_and_time_mixin.rb +62 -0
- data/lib/fluent/compat/handle_tag_name_mixin.rb +53 -0
- data/lib/fluent/compat/input.rb +49 -0
- data/lib/fluent/compat/output.rb +721 -0
- data/lib/fluent/compat/output_chain.rb +60 -0
- data/lib/fluent/compat/parser.rb +310 -0
- data/lib/fluent/compat/parser_utils.rb +40 -0
- data/lib/fluent/compat/propagate_default.rb +62 -0
- data/lib/fluent/compat/record_filter_mixin.rb +34 -0
- data/lib/fluent/compat/set_tag_key_mixin.rb +50 -0
- data/lib/fluent/compat/set_time_key_mixin.rb +69 -0
- data/lib/fluent/compat/socket_util.rb +165 -0
- data/lib/fluent/compat/string_util.rb +34 -0
- data/lib/fluent/compat/structured_format_mixin.rb +26 -0
- data/lib/fluent/compat/type_converter.rb +90 -0
- data/lib/fluent/config/basic_parser.rb +123 -0
- data/lib/fluent/config/configure_proxy.rb +424 -0
- data/lib/fluent/config/dsl.rb +152 -0
- data/lib/fluent/config/element.rb +265 -0
- data/lib/fluent/config/error.rb +44 -0
- data/lib/fluent/config/literal_parser.rb +286 -0
- data/lib/fluent/config/parser.rb +107 -0
- data/lib/fluent/config/section.rb +272 -0
- data/lib/fluent/config/types.rb +249 -0
- data/lib/fluent/config/v1_parser.rb +192 -0
- data/lib/fluent/config/yaml_parser/fluent_value.rb +47 -0
- data/lib/fluent/config/yaml_parser/loader.rb +108 -0
- data/lib/fluent/config/yaml_parser/parser.rb +166 -0
- data/lib/fluent/config/yaml_parser/section_builder.rb +107 -0
- data/lib/fluent/config/yaml_parser.rb +56 -0
- data/lib/fluent/config.rb +89 -0
- data/lib/fluent/configurable.rb +201 -0
- data/lib/fluent/counter/base_socket.rb +44 -0
- data/lib/fluent/counter/client.rb +297 -0
- data/lib/fluent/counter/error.rb +86 -0
- data/lib/fluent/counter/mutex_hash.rb +163 -0
- data/lib/fluent/counter/server.rb +273 -0
- data/lib/fluent/counter/store.rb +205 -0
- data/lib/fluent/counter/validator.rb +145 -0
- data/lib/fluent/counter.rb +23 -0
- data/lib/fluent/daemon.rb +13 -0
- data/lib/fluent/daemonizer.rb +88 -0
- data/lib/fluent/engine.rb +253 -0
- data/lib/fluent/env.rb +40 -0
- data/lib/fluent/error.rb +37 -0
- data/lib/fluent/event.rb +330 -0
- data/lib/fluent/event_router.rb +315 -0
- data/lib/fluent/ext_monitor_require.rb +28 -0
- data/lib/fluent/file_wrapper.rb +137 -0
- data/lib/fluent/filter.rb +21 -0
- data/lib/fluent/fluent_log_event_router.rb +139 -0
- data/lib/fluent/formatter.rb +23 -0
- data/lib/fluent/input.rb +21 -0
- data/lib/fluent/label.rb +46 -0
- data/lib/fluent/load.rb +34 -0
- data/lib/fluent/log/console_adapter.rb +66 -0
- data/lib/fluent/log.rb +752 -0
- data/lib/fluent/match.rb +187 -0
- data/lib/fluent/mixin.rb +31 -0
- data/lib/fluent/msgpack_factory.rb +111 -0
- data/lib/fluent/oj_options.rb +61 -0
- data/lib/fluent/output.rb +29 -0
- data/lib/fluent/output_chain.rb +23 -0
- data/lib/fluent/parser.rb +23 -0
- data/lib/fluent/plugin/bare_output.rb +104 -0
- data/lib/fluent/plugin/base.rb +214 -0
- data/lib/fluent/plugin/buf_file.rb +242 -0
- data/lib/fluent/plugin/buf_file_single.rb +254 -0
- data/lib/fluent/plugin/buf_memory.rb +34 -0
- data/lib/fluent/plugin/buffer/chunk.rb +240 -0
- data/lib/fluent/plugin/buffer/file_chunk.rb +413 -0
- data/lib/fluent/plugin/buffer/file_single_chunk.rb +310 -0
- data/lib/fluent/plugin/buffer/memory_chunk.rb +91 -0
- data/lib/fluent/plugin/buffer.rb +941 -0
- data/lib/fluent/plugin/compressable.rb +96 -0
- data/lib/fluent/plugin/exec_util.rb +22 -0
- data/lib/fluent/plugin/file_util.rb +22 -0
- data/lib/fluent/plugin/filter.rb +127 -0
- data/lib/fluent/plugin/filter_grep.rb +189 -0
- data/lib/fluent/plugin/filter_parser.rb +130 -0
- data/lib/fluent/plugin/filter_record_transformer.rb +324 -0
- data/lib/fluent/plugin/filter_stdout.rb +53 -0
- data/lib/fluent/plugin/formatter.rb +75 -0
- data/lib/fluent/plugin/formatter_csv.rb +78 -0
- data/lib/fluent/plugin/formatter_hash.rb +35 -0
- data/lib/fluent/plugin/formatter_json.rb +59 -0
- data/lib/fluent/plugin/formatter_ltsv.rb +44 -0
- data/lib/fluent/plugin/formatter_msgpack.rb +33 -0
- data/lib/fluent/plugin/formatter_out_file.rb +53 -0
- data/lib/fluent/plugin/formatter_single_value.rb +36 -0
- data/lib/fluent/plugin/formatter_stdout.rb +76 -0
- data/lib/fluent/plugin/formatter_tsv.rb +40 -0
- data/lib/fluent/plugin/in_debug_agent.rb +71 -0
- data/lib/fluent/plugin/in_dummy.rb +18 -0
- data/lib/fluent/plugin/in_exec.rb +110 -0
- data/lib/fluent/plugin/in_forward.rb +473 -0
- data/lib/fluent/plugin/in_gc_stat.rb +72 -0
- data/lib/fluent/plugin/in_http.rb +677 -0
- data/lib/fluent/plugin/in_monitor_agent.rb +412 -0
- data/lib/fluent/plugin/in_object_space.rb +93 -0
- data/lib/fluent/plugin/in_sample.rb +141 -0
- data/lib/fluent/plugin/in_syslog.rb +276 -0
- data/lib/fluent/plugin/in_tail/group_watch.rb +204 -0
- data/lib/fluent/plugin/in_tail/position_file.rb +269 -0
- data/lib/fluent/plugin/in_tail.rb +1299 -0
- data/lib/fluent/plugin/in_tcp.rb +226 -0
- data/lib/fluent/plugin/in_udp.rb +92 -0
- data/lib/fluent/plugin/in_unix.rb +195 -0
- data/lib/fluent/plugin/input.rb +75 -0
- data/lib/fluent/plugin/metrics.rb +119 -0
- data/lib/fluent/plugin/metrics_local.rb +96 -0
- data/lib/fluent/plugin/multi_output.rb +195 -0
- data/lib/fluent/plugin/out_copy.rb +120 -0
- data/lib/fluent/plugin/out_exec.rb +105 -0
- data/lib/fluent/plugin/out_exec_filter.rb +319 -0
- data/lib/fluent/plugin/out_file.rb +340 -0
- data/lib/fluent/plugin/out_forward/ack_handler.rb +176 -0
- data/lib/fluent/plugin/out_forward/connection_manager.rb +113 -0
- data/lib/fluent/plugin/out_forward/error.rb +28 -0
- data/lib/fluent/plugin/out_forward/failure_detector.rb +84 -0
- data/lib/fluent/plugin/out_forward/handshake_protocol.rb +125 -0
- data/lib/fluent/plugin/out_forward/load_balancer.rb +114 -0
- data/lib/fluent/plugin/out_forward/socket_cache.rb +142 -0
- data/lib/fluent/plugin/out_forward.rb +826 -0
- data/lib/fluent/plugin/out_http.rb +275 -0
- data/lib/fluent/plugin/out_null.rb +74 -0
- data/lib/fluent/plugin/out_relabel.rb +32 -0
- data/lib/fluent/plugin/out_roundrobin.rb +84 -0
- data/lib/fluent/plugin/out_secondary_file.rb +148 -0
- data/lib/fluent/plugin/out_stdout.rb +74 -0
- data/lib/fluent/plugin/out_stream.rb +130 -0
- data/lib/fluent/plugin/output.rb +1603 -0
- data/lib/fluent/plugin/owned_by_mixin.rb +41 -0
- data/lib/fluent/plugin/parser.rb +274 -0
- data/lib/fluent/plugin/parser_apache.rb +28 -0
- data/lib/fluent/plugin/parser_apache2.rb +88 -0
- data/lib/fluent/plugin/parser_apache_error.rb +26 -0
- data/lib/fluent/plugin/parser_csv.rb +114 -0
- data/lib/fluent/plugin/parser_json.rb +96 -0
- data/lib/fluent/plugin/parser_ltsv.rb +51 -0
- data/lib/fluent/plugin/parser_msgpack.rb +50 -0
- data/lib/fluent/plugin/parser_multiline.rb +152 -0
- data/lib/fluent/plugin/parser_nginx.rb +28 -0
- data/lib/fluent/plugin/parser_none.rb +36 -0
- data/lib/fluent/plugin/parser_regexp.rb +68 -0
- data/lib/fluent/plugin/parser_syslog.rb +496 -0
- data/lib/fluent/plugin/parser_tsv.rb +42 -0
- data/lib/fluent/plugin/sd_file.rb +156 -0
- data/lib/fluent/plugin/sd_srv.rb +135 -0
- data/lib/fluent/plugin/sd_static.rb +58 -0
- data/lib/fluent/plugin/service_discovery.rb +65 -0
- data/lib/fluent/plugin/socket_util.rb +22 -0
- data/lib/fluent/plugin/storage.rb +84 -0
- data/lib/fluent/plugin/storage_local.rb +162 -0
- data/lib/fluent/plugin/string_util.rb +22 -0
- data/lib/fluent/plugin.rb +206 -0
- data/lib/fluent/plugin_helper/cert_option.rb +191 -0
- data/lib/fluent/plugin_helper/child_process.rb +369 -0
- data/lib/fluent/plugin_helper/compat_parameters.rb +343 -0
- data/lib/fluent/plugin_helper/counter.rb +51 -0
- data/lib/fluent/plugin_helper/event_emitter.rb +100 -0
- data/lib/fluent/plugin_helper/event_loop.rb +170 -0
- data/lib/fluent/plugin_helper/extract.rb +104 -0
- data/lib/fluent/plugin_helper/formatter.rb +147 -0
- data/lib/fluent/plugin_helper/http_server/app.rb +79 -0
- data/lib/fluent/plugin_helper/http_server/compat/server.rb +92 -0
- data/lib/fluent/plugin_helper/http_server/compat/ssl_context_extractor.rb +52 -0
- data/lib/fluent/plugin_helper/http_server/compat/webrick_handler.rb +58 -0
- data/lib/fluent/plugin_helper/http_server/methods.rb +35 -0
- data/lib/fluent/plugin_helper/http_server/request.rb +42 -0
- data/lib/fluent/plugin_helper/http_server/router.rb +54 -0
- data/lib/fluent/plugin_helper/http_server/server.rb +94 -0
- data/lib/fluent/plugin_helper/http_server/ssl_context_builder.rb +41 -0
- data/lib/fluent/plugin_helper/http_server.rb +135 -0
- data/lib/fluent/plugin_helper/inject.rb +154 -0
- data/lib/fluent/plugin_helper/metrics.rb +129 -0
- data/lib/fluent/plugin_helper/parser.rb +147 -0
- data/lib/fluent/plugin_helper/record_accessor.rb +207 -0
- data/lib/fluent/plugin_helper/retry_state.rb +219 -0
- data/lib/fluent/plugin_helper/server.rb +828 -0
- data/lib/fluent/plugin_helper/service_discovery/manager.rb +146 -0
- data/lib/fluent/plugin_helper/service_discovery/round_robin_balancer.rb +43 -0
- data/lib/fluent/plugin_helper/service_discovery.rb +125 -0
- data/lib/fluent/plugin_helper/socket.rb +288 -0
- data/lib/fluent/plugin_helper/socket_option.rb +98 -0
- data/lib/fluent/plugin_helper/storage.rb +349 -0
- data/lib/fluent/plugin_helper/thread.rb +180 -0
- data/lib/fluent/plugin_helper/timer.rb +92 -0
- data/lib/fluent/plugin_helper.rb +75 -0
- data/lib/fluent/plugin_id.rb +93 -0
- data/lib/fluent/process.rb +22 -0
- data/lib/fluent/registry.rb +117 -0
- data/lib/fluent/root_agent.rb +372 -0
- data/lib/fluent/rpc.rb +95 -0
- data/lib/fluent/static_config_analysis.rb +194 -0
- data/lib/fluent/supervisor.rb +1076 -0
- data/lib/fluent/system_config.rb +189 -0
- data/lib/fluent/test/base.rb +78 -0
- data/lib/fluent/test/driver/base.rb +231 -0
- data/lib/fluent/test/driver/base_owned.rb +83 -0
- data/lib/fluent/test/driver/base_owner.rb +135 -0
- data/lib/fluent/test/driver/event_feeder.rb +98 -0
- data/lib/fluent/test/driver/filter.rb +61 -0
- data/lib/fluent/test/driver/formatter.rb +30 -0
- data/lib/fluent/test/driver/input.rb +31 -0
- data/lib/fluent/test/driver/multi_output.rb +53 -0
- data/lib/fluent/test/driver/output.rb +102 -0
- data/lib/fluent/test/driver/parser.rb +30 -0
- data/lib/fluent/test/driver/storage.rb +30 -0
- data/lib/fluent/test/driver/test_event_router.rb +45 -0
- data/lib/fluent/test/filter_test.rb +77 -0
- data/lib/fluent/test/formatter_test.rb +65 -0
- data/lib/fluent/test/helpers.rb +134 -0
- data/lib/fluent/test/input_test.rb +174 -0
- data/lib/fluent/test/log.rb +79 -0
- data/lib/fluent/test/output_test.rb +156 -0
- data/lib/fluent/test/parser_test.rb +70 -0
- data/lib/fluent/test/startup_shutdown.rb +44 -0
- data/lib/fluent/test.rb +58 -0
- data/lib/fluent/time.rb +512 -0
- data/lib/fluent/timezone.rb +171 -0
- data/lib/fluent/tls.rb +81 -0
- data/lib/fluent/unique_id.rb +39 -0
- data/lib/fluent/variable_store.rb +40 -0
- data/lib/fluent/version.rb +21 -0
- data/lib/fluent/win32api.rb +38 -0
- data/lib/fluent/winsvc.rb +100 -0
- data/templates/new_gem/Gemfile +3 -0
- data/templates/new_gem/README.md.erb +43 -0
- data/templates/new_gem/Rakefile +13 -0
- data/templates/new_gem/fluent-plugin.gemspec.erb +27 -0
- data/templates/new_gem/lib/fluent/plugin/filter.rb.erb +14 -0
- data/templates/new_gem/lib/fluent/plugin/formatter.rb.erb +14 -0
- data/templates/new_gem/lib/fluent/plugin/input.rb.erb +11 -0
- data/templates/new_gem/lib/fluent/plugin/output.rb.erb +11 -0
- data/templates/new_gem/lib/fluent/plugin/parser.rb.erb +15 -0
- data/templates/new_gem/lib/fluent/plugin/storage.rb.erb +40 -0
- data/templates/new_gem/test/helper.rb.erb +7 -0
- data/templates/new_gem/test/plugin/test_filter.rb.erb +18 -0
- data/templates/new_gem/test/plugin/test_formatter.rb.erb +18 -0
- data/templates/new_gem/test/plugin/test_input.rb.erb +18 -0
- data/templates/new_gem/test/plugin/test_output.rb.erb +18 -0
- data/templates/new_gem/test/plugin/test_parser.rb.erb +18 -0
- data/templates/new_gem/test/plugin/test_storage.rb.erb +18 -0
- data/templates/plugin_config_formatter/param.md-compact.erb +25 -0
- data/templates/plugin_config_formatter/param.md-table.erb +10 -0
- data/templates/plugin_config_formatter/param.md.erb +34 -0
- data/templates/plugin_config_formatter/section.md.erb +12 -0
- data/test/command/test_binlog_reader.rb +362 -0
- data/test/command/test_ca_generate.rb +70 -0
- data/test/command/test_cap_ctl.rb +100 -0
- data/test/command/test_cat.rb +128 -0
- data/test/command/test_ctl.rb +56 -0
- data/test/command/test_fluentd.rb +1291 -0
- data/test/command/test_plugin_config_formatter.rb +397 -0
- data/test/command/test_plugin_generator.rb +109 -0
- data/test/compat/test_calls_super.rb +166 -0
- data/test/compat/test_parser.rb +92 -0
- data/test/config/assertions.rb +42 -0
- data/test/config/test_config_parser.rb +551 -0
- data/test/config/test_configurable.rb +1784 -0
- data/test/config/test_configure_proxy.rb +604 -0
- data/test/config/test_dsl.rb +415 -0
- data/test/config/test_element.rb +518 -0
- data/test/config/test_literal_parser.rb +309 -0
- data/test/config/test_plugin_configuration.rb +56 -0
- data/test/config/test_section.rb +191 -0
- data/test/config/test_system_config.rb +195 -0
- data/test/config/test_types.rb +408 -0
- data/test/counter/test_client.rb +563 -0
- data/test/counter/test_error.rb +44 -0
- data/test/counter/test_mutex_hash.rb +179 -0
- data/test/counter/test_server.rb +589 -0
- data/test/counter/test_store.rb +258 -0
- data/test/counter/test_validator.rb +137 -0
- data/test/helper.rb +155 -0
- data/test/helpers/fuzzy_assert.rb +89 -0
- data/test/helpers/process_extenstion.rb +33 -0
- data/test/log/test_console_adapter.rb +110 -0
- data/test/plugin/data/2010/01/20100102-030405.log +0 -0
- data/test/plugin/data/2010/01/20100102-030406.log +0 -0
- data/test/plugin/data/2010/01/20100102.log +0 -0
- data/test/plugin/data/log/bar +0 -0
- data/test/plugin/data/log/foo/bar.log +0 -0
- data/test/plugin/data/log/foo/bar2 +0 -0
- data/test/plugin/data/log/test.log +0 -0
- data/test/plugin/data/sd_file/config +11 -0
- data/test/plugin/data/sd_file/config.json +17 -0
- data/test/plugin/data/sd_file/config.yaml +11 -0
- data/test/plugin/data/sd_file/config.yml +11 -0
- data/test/plugin/data/sd_file/invalid_config.yml +7 -0
- data/test/plugin/in_tail/test_fifo.rb +121 -0
- data/test/plugin/in_tail/test_io_handler.rb +150 -0
- data/test/plugin/in_tail/test_position_file.rb +346 -0
- data/test/plugin/out_forward/test_ack_handler.rb +140 -0
- data/test/plugin/out_forward/test_connection_manager.rb +145 -0
- data/test/plugin/out_forward/test_handshake_protocol.rb +112 -0
- data/test/plugin/out_forward/test_load_balancer.rb +106 -0
- data/test/plugin/out_forward/test_socket_cache.rb +174 -0
- data/test/plugin/test_bare_output.rb +131 -0
- data/test/plugin/test_base.rb +247 -0
- data/test/plugin/test_buf_file.rb +1314 -0
- data/test/plugin/test_buf_file_single.rb +898 -0
- data/test/plugin/test_buf_memory.rb +42 -0
- data/test/plugin/test_buffer.rb +1434 -0
- data/test/plugin/test_buffer_chunk.rb +209 -0
- data/test/plugin/test_buffer_file_chunk.rb +871 -0
- data/test/plugin/test_buffer_file_single_chunk.rb +611 -0
- data/test/plugin/test_buffer_memory_chunk.rb +339 -0
- data/test/plugin/test_compressable.rb +87 -0
- data/test/plugin/test_file_util.rb +96 -0
- data/test/plugin/test_filter.rb +368 -0
- data/test/plugin/test_filter_grep.rb +697 -0
- data/test/plugin/test_filter_parser.rb +731 -0
- data/test/plugin/test_filter_record_transformer.rb +577 -0
- data/test/plugin/test_filter_stdout.rb +207 -0
- data/test/plugin/test_formatter_csv.rb +136 -0
- data/test/plugin/test_formatter_hash.rb +38 -0
- data/test/plugin/test_formatter_json.rb +61 -0
- data/test/plugin/test_formatter_ltsv.rb +70 -0
- data/test/plugin/test_formatter_msgpack.rb +28 -0
- data/test/plugin/test_formatter_out_file.rb +116 -0
- data/test/plugin/test_formatter_single_value.rb +44 -0
- data/test/plugin/test_formatter_tsv.rb +76 -0
- data/test/plugin/test_in_debug_agent.rb +49 -0
- data/test/plugin/test_in_exec.rb +261 -0
- data/test/plugin/test_in_forward.rb +1178 -0
- data/test/plugin/test_in_gc_stat.rb +62 -0
- data/test/plugin/test_in_http.rb +1102 -0
- data/test/plugin/test_in_monitor_agent.rb +922 -0
- data/test/plugin/test_in_object_space.rb +66 -0
- data/test/plugin/test_in_sample.rb +190 -0
- data/test/plugin/test_in_syslog.rb +505 -0
- data/test/plugin/test_in_tail.rb +3125 -0
- data/test/plugin/test_in_tcp.rb +328 -0
- data/test/plugin/test_in_udp.rb +296 -0
- data/test/plugin/test_in_unix.rb +181 -0
- data/test/plugin/test_input.rb +137 -0
- data/test/plugin/test_metadata.rb +89 -0
- data/test/plugin/test_metrics.rb +294 -0
- data/test/plugin/test_metrics_local.rb +96 -0
- data/test/plugin/test_multi_output.rb +204 -0
- data/test/plugin/test_out_copy.rb +308 -0
- data/test/plugin/test_out_exec.rb +312 -0
- data/test/plugin/test_out_exec_filter.rb +606 -0
- data/test/plugin/test_out_file.rb +1038 -0
- data/test/plugin/test_out_forward.rb +1361 -0
- data/test/plugin/test_out_http.rb +429 -0
- data/test/plugin/test_out_null.rb +105 -0
- data/test/plugin/test_out_relabel.rb +28 -0
- data/test/plugin/test_out_roundrobin.rb +146 -0
- data/test/plugin/test_out_secondary_file.rb +458 -0
- data/test/plugin/test_out_stdout.rb +205 -0
- data/test/plugin/test_out_stream.rb +103 -0
- data/test/plugin/test_output.rb +1334 -0
- data/test/plugin/test_output_as_buffered.rb +2024 -0
- data/test/plugin/test_output_as_buffered_backup.rb +363 -0
- data/test/plugin/test_output_as_buffered_compress.rb +179 -0
- data/test/plugin/test_output_as_buffered_overflow.rb +250 -0
- data/test/plugin/test_output_as_buffered_retries.rb +966 -0
- data/test/plugin/test_output_as_buffered_secondary.rb +882 -0
- data/test/plugin/test_output_as_standard.rb +374 -0
- data/test/plugin/test_owned_by.rb +34 -0
- data/test/plugin/test_parser.rb +399 -0
- data/test/plugin/test_parser_apache.rb +42 -0
- data/test/plugin/test_parser_apache2.rb +47 -0
- data/test/plugin/test_parser_apache_error.rb +45 -0
- data/test/plugin/test_parser_csv.rb +200 -0
- data/test/plugin/test_parser_json.rb +138 -0
- data/test/plugin/test_parser_labeled_tsv.rb +160 -0
- data/test/plugin/test_parser_multiline.rb +111 -0
- data/test/plugin/test_parser_nginx.rb +88 -0
- data/test/plugin/test_parser_none.rb +52 -0
- data/test/plugin/test_parser_regexp.rb +284 -0
- data/test/plugin/test_parser_syslog.rb +650 -0
- data/test/plugin/test_parser_tsv.rb +122 -0
- data/test/plugin/test_sd_file.rb +228 -0
- data/test/plugin/test_sd_srv.rb +230 -0
- data/test/plugin/test_storage.rb +166 -0
- data/test/plugin/test_storage_local.rb +335 -0
- data/test/plugin/test_string_util.rb +26 -0
- data/test/plugin_helper/data/cert/cert-key.pem +27 -0
- data/test/plugin_helper/data/cert/cert-with-CRLF.pem +19 -0
- data/test/plugin_helper/data/cert/cert-with-no-newline.pem +19 -0
- data/test/plugin_helper/data/cert/cert.pem +19 -0
- data/test/plugin_helper/data/cert/cert_chains/ca-cert-key.pem +27 -0
- data/test/plugin_helper/data/cert/cert_chains/ca-cert.pem +20 -0
- data/test/plugin_helper/data/cert/cert_chains/cert-key.pem +27 -0
- data/test/plugin_helper/data/cert/cert_chains/cert.pem +40 -0
- data/test/plugin_helper/data/cert/empty.pem +0 -0
- data/test/plugin_helper/data/cert/generate_cert.rb +125 -0
- data/test/plugin_helper/data/cert/with_ca/ca-cert-key-pass.pem +30 -0
- data/test/plugin_helper/data/cert/with_ca/ca-cert-key.pem +27 -0
- data/test/plugin_helper/data/cert/with_ca/ca-cert-pass.pem +20 -0
- data/test/plugin_helper/data/cert/with_ca/ca-cert.pem +20 -0
- data/test/plugin_helper/data/cert/with_ca/cert-key-pass.pem +30 -0
- data/test/plugin_helper/data/cert/with_ca/cert-key.pem +27 -0
- data/test/plugin_helper/data/cert/with_ca/cert-pass.pem +21 -0
- data/test/plugin_helper/data/cert/with_ca/cert.pem +21 -0
- data/test/plugin_helper/data/cert/without_ca/cert-key-pass.pem +30 -0
- data/test/plugin_helper/data/cert/without_ca/cert-key.pem +27 -0
- data/test/plugin_helper/data/cert/without_ca/cert-pass.pem +20 -0
- data/test/plugin_helper/data/cert/without_ca/cert.pem +20 -0
- data/test/plugin_helper/http_server/test_app.rb +65 -0
- data/test/plugin_helper/http_server/test_route.rb +32 -0
- data/test/plugin_helper/service_discovery/test_manager.rb +93 -0
- data/test/plugin_helper/service_discovery/test_round_robin_balancer.rb +21 -0
- data/test/plugin_helper/test_cert_option.rb +25 -0
- data/test/plugin_helper/test_child_process.rb +862 -0
- data/test/plugin_helper/test_compat_parameters.rb +358 -0
- data/test/plugin_helper/test_event_emitter.rb +80 -0
- data/test/plugin_helper/test_event_loop.rb +52 -0
- data/test/plugin_helper/test_extract.rb +194 -0
- data/test/plugin_helper/test_formatter.rb +255 -0
- data/test/plugin_helper/test_http_server_helper.rb +372 -0
- data/test/plugin_helper/test_inject.rb +561 -0
- data/test/plugin_helper/test_metrics.rb +137 -0
- data/test/plugin_helper/test_parser.rb +264 -0
- data/test/plugin_helper/test_record_accessor.rb +238 -0
- data/test/plugin_helper/test_retry_state.rb +1006 -0
- data/test/plugin_helper/test_server.rb +1895 -0
- data/test/plugin_helper/test_service_discovery.rb +165 -0
- data/test/plugin_helper/test_socket.rb +146 -0
- data/test/plugin_helper/test_storage.rb +542 -0
- data/test/plugin_helper/test_thread.rb +164 -0
- data/test/plugin_helper/test_timer.rb +130 -0
- data/test/scripts/exec_script.rb +32 -0
- data/test/scripts/fluent/plugin/formatter1/formatter_test1.rb +7 -0
- data/test/scripts/fluent/plugin/formatter2/formatter_test2.rb +7 -0
- data/test/scripts/fluent/plugin/formatter_known.rb +8 -0
- data/test/scripts/fluent/plugin/out_test.rb +81 -0
- data/test/scripts/fluent/plugin/out_test2.rb +80 -0
- data/test/scripts/fluent/plugin/parser_known.rb +4 -0
- data/test/test_capability.rb +74 -0
- data/test/test_clock.rb +164 -0
- data/test/test_config.rb +369 -0
- data/test/test_configdsl.rb +148 -0
- data/test/test_daemonizer.rb +91 -0
- data/test/test_engine.rb +203 -0
- data/test/test_event.rb +531 -0
- data/test/test_event_router.rb +348 -0
- data/test/test_event_time.rb +199 -0
- data/test/test_file_wrapper.rb +53 -0
- data/test/test_filter.rb +121 -0
- data/test/test_fluent_log_event_router.rb +99 -0
- data/test/test_formatter.rb +369 -0
- data/test/test_input.rb +31 -0
- data/test/test_log.rb +1076 -0
- data/test/test_match.rb +148 -0
- data/test/test_mixin.rb +351 -0
- data/test/test_msgpack_factory.rb +50 -0
- data/test/test_oj_options.rb +55 -0
- data/test/test_output.rb +278 -0
- data/test/test_plugin.rb +251 -0
- data/test/test_plugin_classes.rb +370 -0
- data/test/test_plugin_helper.rb +81 -0
- data/test/test_plugin_id.rb +119 -0
- data/test/test_process.rb +14 -0
- data/test/test_root_agent.rb +951 -0
- data/test/test_static_config_analysis.rb +177 -0
- data/test/test_supervisor.rb +821 -0
- data/test/test_test_drivers.rb +136 -0
- data/test/test_time_formatter.rb +301 -0
- data/test/test_time_parser.rb +362 -0
- data/test/test_tls.rb +65 -0
- data/test/test_unique_id.rb +47 -0
- data/test/test_variable_store.rb +65 -0
- metadata +1183 -0
@@ -0,0 +1,47 @@
|
|
1
|
+
#
|
2
|
+
# Fluentd
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
module Fluent
|
18
|
+
module Config
|
19
|
+
module YamlParser
|
20
|
+
module FluentValue
|
21
|
+
JsonValue = Struct.new(:val) do
|
22
|
+
def to_s
|
23
|
+
val.to_json
|
24
|
+
end
|
25
|
+
|
26
|
+
def to_element
|
27
|
+
to_s
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
StringValue = Struct.new(:val, :context) do
|
32
|
+
def to_s
|
33
|
+
context.instance_eval("\"#{val}\"")
|
34
|
+
rescue Fluent::SetNil => _
|
35
|
+
''
|
36
|
+
rescue Fluent::SetDefault => _
|
37
|
+
':default'
|
38
|
+
end
|
39
|
+
|
40
|
+
def to_element
|
41
|
+
to_s
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,108 @@
|
|
1
|
+
#
|
2
|
+
# Fluentd
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
require 'psych'
|
18
|
+
require 'json'
|
19
|
+
require 'fluent/config/error'
|
20
|
+
require 'fluent/config/yaml_parser/fluent_value'
|
21
|
+
|
22
|
+
# Based on https://github.com/eagletmt/hako/blob/34cdde06fe8f3aeafd794be830180c3cedfbb4dc/lib/hako/yaml_loader.rb
|
23
|
+
|
24
|
+
module Fluent
|
25
|
+
module Config
|
26
|
+
module YamlParser
|
27
|
+
class Loader
|
28
|
+
INCLUDE_TAG = 'tag:include'.freeze
|
29
|
+
FLUENT_JSON_TAG = 'tag:fluent/json'.freeze
|
30
|
+
FLUENT_STR_TAG = 'tag:fluent/s'.freeze
|
31
|
+
SHOVEL = '<<'.freeze
|
32
|
+
|
33
|
+
def initialize(context = Kernel.binding)
|
34
|
+
@context = context
|
35
|
+
@current_path = nil
|
36
|
+
end
|
37
|
+
|
38
|
+
# @param [String] path
|
39
|
+
# @return [Hash]
|
40
|
+
def load(path)
|
41
|
+
class_loader = Psych::ClassLoader.new
|
42
|
+
scanner = Psych::ScalarScanner.new(class_loader)
|
43
|
+
|
44
|
+
visitor = Visitor.new(scanner, class_loader)
|
45
|
+
|
46
|
+
visitor._register_domain(INCLUDE_TAG) do |_, val|
|
47
|
+
eval_include(Pathname.new(val), path.parent)
|
48
|
+
end
|
49
|
+
|
50
|
+
visitor._register_domain(FLUENT_JSON_TAG) do |_, val|
|
51
|
+
Fluent::Config::YamlParser::FluentValue::JsonValue.new(val)
|
52
|
+
end
|
53
|
+
|
54
|
+
visitor._register_domain(FLUENT_STR_TAG) do |_, val|
|
55
|
+
Fluent::Config::YamlParser::FluentValue::StringValue.new(val, @context)
|
56
|
+
end
|
57
|
+
|
58
|
+
path.open do |f|
|
59
|
+
visitor.accept(Psych.parse(f))
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def eval_include(path, parent)
|
64
|
+
if path.relative?
|
65
|
+
pattern = parent.join(path)
|
66
|
+
else
|
67
|
+
pattern = path
|
68
|
+
end
|
69
|
+
result = []
|
70
|
+
Dir.glob(pattern).sort.each do |path|
|
71
|
+
result.concat(load(Pathname.new(path)))
|
72
|
+
end
|
73
|
+
result
|
74
|
+
rescue SystemCallError => e
|
75
|
+
parse_error = ConfigParseError.new("include error #{path} - #{e}")
|
76
|
+
parse_error.set_backtrace(e.backtrace)
|
77
|
+
raise parse_error
|
78
|
+
end
|
79
|
+
|
80
|
+
class Visitor < Psych::Visitors::ToRuby
|
81
|
+
def initialize(scanner, class_loader)
|
82
|
+
super(scanner, class_loader)
|
83
|
+
end
|
84
|
+
|
85
|
+
def _register_domain(name, &block)
|
86
|
+
@domain_types.merge!({ name => [name, block] })
|
87
|
+
end
|
88
|
+
|
89
|
+
def revive_hash(hash, o)
|
90
|
+
super(hash, o).tap do |r|
|
91
|
+
if r[SHOVEL].is_a?(Hash)
|
92
|
+
h2 = {}
|
93
|
+
r.each do |k, v|
|
94
|
+
if k == SHOVEL
|
95
|
+
h2.merge!(v)
|
96
|
+
else
|
97
|
+
h2[k] = v
|
98
|
+
end
|
99
|
+
end
|
100
|
+
r.replace(h2)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
@@ -0,0 +1,166 @@
|
|
1
|
+
#
|
2
|
+
# Fluentd
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
require 'fluent/config/yaml_parser/section_builder'
|
18
|
+
|
19
|
+
module Fluent
|
20
|
+
module Config
|
21
|
+
module YamlParser
|
22
|
+
class Parser
|
23
|
+
def initialize(config, indent: 2)
|
24
|
+
@base_indent = indent
|
25
|
+
@config = config
|
26
|
+
end
|
27
|
+
|
28
|
+
def build
|
29
|
+
s = @config['system'] && system_config_build(@config['system'])
|
30
|
+
c = @config['config'] && config_build(@config['config'], root: true)
|
31
|
+
RootBuilder.new(s, c)
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def system_config_build(config)
|
37
|
+
section_build('system', config)
|
38
|
+
end
|
39
|
+
|
40
|
+
def config_build(config, indent: 0, root: false)
|
41
|
+
sb = SectionBodyBuilder.new(indent, root: root)
|
42
|
+
config.each do |c|
|
43
|
+
if (lc = c.delete('label'))
|
44
|
+
sb.add_section(label_build(lc, indent: indent))
|
45
|
+
end
|
46
|
+
|
47
|
+
if (sc = c.delete('source'))
|
48
|
+
sb.add_section(source_build(sc, indent: indent))
|
49
|
+
end
|
50
|
+
|
51
|
+
if (fc = c.delete('filter'))
|
52
|
+
sb.add_section(filter_build(fc, indent: indent))
|
53
|
+
end
|
54
|
+
|
55
|
+
if (mc = c.delete('match'))
|
56
|
+
sb.add_section(match_build(mc, indent: indent))
|
57
|
+
end
|
58
|
+
|
59
|
+
if (wc = c.delete('worker'))
|
60
|
+
sb.add_section(worker_build(wc, indent: indent))
|
61
|
+
end
|
62
|
+
|
63
|
+
included_sections_build(c, sb, indent: indent)
|
64
|
+
end
|
65
|
+
|
66
|
+
sb
|
67
|
+
end
|
68
|
+
|
69
|
+
def label_build(config, indent: 0)
|
70
|
+
config = config.dup
|
71
|
+
name = config.delete('$name')
|
72
|
+
c = config.delete('config')
|
73
|
+
SectionBuilder.new('label', config_build(c, indent: indent + @base_indent), indent, name)
|
74
|
+
end
|
75
|
+
|
76
|
+
def worker_build(config, indent: 0)
|
77
|
+
config = config.dup
|
78
|
+
num = config.delete('$arg')
|
79
|
+
c = config.delete('config')
|
80
|
+
SectionBuilder.new('worker', config_build(c, indent: indent + @base_indent), indent, num)
|
81
|
+
end
|
82
|
+
|
83
|
+
def source_build(config, indent: 0)
|
84
|
+
section_build('source', config, indent: indent)
|
85
|
+
end
|
86
|
+
|
87
|
+
def filter_build(config, indent: 0)
|
88
|
+
config = config.dup
|
89
|
+
tag = config.delete('$tag')
|
90
|
+
if tag.is_a?(Array)
|
91
|
+
section_build('filter', config, indent: indent, arg: tag&.join(','))
|
92
|
+
else
|
93
|
+
section_build('filter', config, indent: indent, arg: tag)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
def match_build(config, indent: 0)
|
98
|
+
config = config.dup
|
99
|
+
tag = config.delete('$tag')
|
100
|
+
if tag.is_a?(Array)
|
101
|
+
section_build('match', config, indent: indent, arg: tag&.join(','))
|
102
|
+
else
|
103
|
+
section_build('match', config, indent: indent, arg: tag)
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
def included_sections_build(config, section_builder, indent: 0)
|
108
|
+
config.each_entry do |e|
|
109
|
+
k = e.keys.first
|
110
|
+
cc = e.delete(k)
|
111
|
+
case k
|
112
|
+
when 'label'
|
113
|
+
section_builder.add_section(label_build(cc, indent: indent))
|
114
|
+
when 'worker'
|
115
|
+
section_builder.add_section(worker_build(cc, indent: indent))
|
116
|
+
when 'source'
|
117
|
+
section_builder.add_section(source_build(cc, indent: indent))
|
118
|
+
when 'filter'
|
119
|
+
section_builder.add_section(filter_build(cc, indent: indent))
|
120
|
+
when 'match'
|
121
|
+
section_builder.add_section(match_build(cc, indent: indent))
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
def section_build(name, config, indent: 0, arg: nil)
|
127
|
+
sb = SectionBodyBuilder.new(indent + @base_indent)
|
128
|
+
|
129
|
+
if (v = config.delete('$type'))
|
130
|
+
sb.add_line('@type', v)
|
131
|
+
end
|
132
|
+
|
133
|
+
if (v = config.delete('$label'))
|
134
|
+
sb.add_line('@label', v)
|
135
|
+
end
|
136
|
+
|
137
|
+
if (v = config.delete('$id'))
|
138
|
+
sb.add_line('@id', v)
|
139
|
+
end
|
140
|
+
|
141
|
+
config.each do |key, val|
|
142
|
+
if val.is_a?(Array)
|
143
|
+
val.each do |v|
|
144
|
+
sb.add_section(section_build(key, v, indent: indent + @base_indent))
|
145
|
+
end
|
146
|
+
elsif val.is_a?(Hash)
|
147
|
+
harg = val.delete('$arg')
|
148
|
+
if harg.is_a?(Array)
|
149
|
+
# To prevent to generate invalid configuration for arg.
|
150
|
+
# "arg" should be String object and concatenated by ","
|
151
|
+
# when two or more objects are specified there.
|
152
|
+
sb.add_section(section_build(key, val, indent: indent + @base_indent, arg: harg&.join(',')))
|
153
|
+
else
|
154
|
+
sb.add_section(section_build(key, val, indent: indent + @base_indent, arg: harg))
|
155
|
+
end
|
156
|
+
else
|
157
|
+
sb.add_line(key, val)
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
SectionBuilder.new(name, sb, indent, arg)
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
@@ -0,0 +1,107 @@
|
|
1
|
+
#
|
2
|
+
# Fluentd
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
module Fluent
|
18
|
+
module Config
|
19
|
+
module YamlParser
|
20
|
+
SectionBuilder = Struct.new(:name, :body, :indent_size, :arg) do
|
21
|
+
def to_s
|
22
|
+
indent = ' ' * indent_size
|
23
|
+
|
24
|
+
if arg && !arg.to_s.empty?
|
25
|
+
"#{indent}<#{name} #{arg}>\n#{body}\n#{indent}</#{name}>"
|
26
|
+
else
|
27
|
+
"#{indent}<#{name}>\n#{body}\n#{indent}</#{name}>"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def to_element
|
32
|
+
elem = body.to_element
|
33
|
+
elem.name = name
|
34
|
+
elem.arg = arg.to_s if arg
|
35
|
+
elem.v1_config = true
|
36
|
+
elem
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
class RootBuilder
|
41
|
+
def initialize(system, conf)
|
42
|
+
@system = system
|
43
|
+
@conf = conf
|
44
|
+
end
|
45
|
+
|
46
|
+
attr_reader :system, :conf
|
47
|
+
|
48
|
+
def to_element
|
49
|
+
Fluent::Config::Element.new('ROOT', '', {}, [@system, @conf].compact.map(&:to_element).flatten)
|
50
|
+
end
|
51
|
+
|
52
|
+
def to_s
|
53
|
+
s = StringIO.new(+'')
|
54
|
+
s.puts(@system.to_s) if @system
|
55
|
+
s.puts(@conf.to_s) if @conf
|
56
|
+
|
57
|
+
s.string
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
class SectionBodyBuilder
|
62
|
+
Row = Struct.new(:key, :value, :indent) do
|
63
|
+
def to_s
|
64
|
+
"#{indent}#{key} #{value}"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def initialize(indent, root: false)
|
69
|
+
@indent = ' ' * indent
|
70
|
+
@bodies = []
|
71
|
+
@root = root
|
72
|
+
end
|
73
|
+
|
74
|
+
def add_line(k, v)
|
75
|
+
@bodies << Row.new(k, v, @indent)
|
76
|
+
end
|
77
|
+
|
78
|
+
def add_section(section)
|
79
|
+
@bodies << section
|
80
|
+
end
|
81
|
+
|
82
|
+
def to_element
|
83
|
+
if @root
|
84
|
+
return @bodies.map(&:to_element)
|
85
|
+
end
|
86
|
+
|
87
|
+
not_section, section = @bodies.partition { |e| e.is_a?(Row) }
|
88
|
+
r = {}
|
89
|
+
not_section.each do |e|
|
90
|
+
v = e.value
|
91
|
+
r[e.key] = v.respond_to?(:to_element) ? v.to_element : v
|
92
|
+
end
|
93
|
+
|
94
|
+
if @root
|
95
|
+
section.map(&:to_element)
|
96
|
+
else
|
97
|
+
Fluent::Config::Element.new('', '', r, section.map(&:to_element))
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
def to_s
|
102
|
+
@bodies.map(&:to_s).join("\n")
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
#
|
2
|
+
# Fluentd
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
require 'fluent/config/yaml_parser/loader'
|
18
|
+
require 'fluent/config/yaml_parser/parser'
|
19
|
+
require 'pathname'
|
20
|
+
|
21
|
+
module Fluent
|
22
|
+
module Config
|
23
|
+
module YamlParser
|
24
|
+
def self.parse(path)
|
25
|
+
context = Kernel.binding
|
26
|
+
|
27
|
+
unless context.respond_to?(:use_nil)
|
28
|
+
context.define_singleton_method(:use_nil) do
|
29
|
+
raise Fluent::SetNil
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
unless context.respond_to?(:use_default)
|
34
|
+
context.define_singleton_method(:use_default) do
|
35
|
+
raise Fluent::SetDefault
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
unless context.respond_to?(:hostname)
|
40
|
+
context.define_singleton_method(:hostname) do
|
41
|
+
Socket.gethostname
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
unless context.respond_to?(:worker_id)
|
46
|
+
context.define_singleton_method(:worker_id) do
|
47
|
+
ENV['SERVERENGINE_WORKER_ID'] || ''
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
s = Fluent::Config::YamlParser::Loader.new(context).load(Pathname.new(path))
|
52
|
+
Fluent::Config::YamlParser::Parser.new(s).build.to_element
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
#
|
2
|
+
# Fluent
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
require 'fluent/config/error'
|
18
|
+
require 'fluent/config/element'
|
19
|
+
require 'fluent/configurable'
|
20
|
+
require 'fluent/config/yaml_parser'
|
21
|
+
|
22
|
+
module Fluent
|
23
|
+
module Config
|
24
|
+
# @param config_path [String] config file path
|
25
|
+
# @param encoding [String] encoding of config file
|
26
|
+
# @param additional_config [String] config which is added to last of config body
|
27
|
+
# @param use_v1_config [Bool] config is formatted with v1 or not
|
28
|
+
# @return [Fluent::Config]
|
29
|
+
def self.build(config_path:, encoding: 'utf-8', additional_config: nil, use_v1_config: true, type: nil)
|
30
|
+
if type == :guess
|
31
|
+
config_file_ext = File.extname(config_path)
|
32
|
+
if config_file_ext == '.yaml' || config_file_ext == '.yml'
|
33
|
+
type = :yaml
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
if type == :yaml || type == :yml
|
38
|
+
return Fluent::Config::YamlParser.parse(config_path)
|
39
|
+
end
|
40
|
+
|
41
|
+
config_fname = File.basename(config_path)
|
42
|
+
config_basedir = File.dirname(config_path)
|
43
|
+
config_data = File.open(config_path, "r:#{encoding}:utf-8") do |f|
|
44
|
+
s = f.read
|
45
|
+
if additional_config
|
46
|
+
c = additional_config.gsub("\\n", "\n")
|
47
|
+
s += "\n#{c}"
|
48
|
+
end
|
49
|
+
s
|
50
|
+
end
|
51
|
+
|
52
|
+
Fluent::Config.parse(config_data, config_fname, config_basedir, use_v1_config)
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.parse(str, fname, basepath = Dir.pwd, v1_config = nil, syntax: :v1)
|
56
|
+
parser = if fname =~ /\.rb$/ || syntax == :ruby
|
57
|
+
:ruby
|
58
|
+
elsif v1_config.nil?
|
59
|
+
case syntax
|
60
|
+
when :v1 then :v1
|
61
|
+
when :v0 then :v0
|
62
|
+
else
|
63
|
+
raise ArgumentError, "Unknown Fluentd configuration syntax: '#{syntax}'"
|
64
|
+
end
|
65
|
+
elsif v1_config then :v1
|
66
|
+
else :v0
|
67
|
+
end
|
68
|
+
case parser
|
69
|
+
when :v1
|
70
|
+
require 'fluent/config/v1_parser'
|
71
|
+
V1Parser.parse(str, fname, basepath, Kernel.binding)
|
72
|
+
when :v0
|
73
|
+
# TODO: show deprecated message in v1
|
74
|
+
require 'fluent/config/parser'
|
75
|
+
Parser.parse(str, fname, basepath)
|
76
|
+
when :ruby
|
77
|
+
require 'fluent/config/dsl'
|
78
|
+
$log.warn("Ruby DSL configuration format is deprecated. Please use original configuration format. https://docs.fluentd.org/configuration/config-file") if $log
|
79
|
+
Config::DSL::Parser.parse(str, File.join(basepath, fname))
|
80
|
+
else
|
81
|
+
raise "[BUG] unknown configuration parser specification:'#{parser}'"
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def self.new(name = '')
|
86
|
+
Element.new(name, '', {}, [])
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|