fluentd 1.14.4-x64-mingw-ucrt
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 +7 -0
- data/.deepsource.toml +13 -0
- data/.drone.yml +35 -0
- data/.github/ISSUE_TEMPLATE/bug_report.yaml +70 -0
- data/.github/ISSUE_TEMPLATE/config.yml +5 -0
- data/.github/ISSUE_TEMPLATE/feature_request.yaml +38 -0
- data/.github/ISSUE_TEMPLATE.md +17 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +14 -0
- data/.github/workflows/issue-auto-closer.yml +12 -0
- data/.github/workflows/linux-test.yaml +36 -0
- data/.github/workflows/macos-test.yaml +30 -0
- data/.github/workflows/stale-actions.yml +22 -0
- data/.github/workflows/windows-test.yaml +46 -0
- data/.gitignore +30 -0
- data/.gitlab-ci.yml +103 -0
- data/ADOPTERS.md +5 -0
- data/AUTHORS +2 -0
- data/CHANGELOG.md +2409 -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 +11 -0
- data/README.md +97 -0
- data/Rakefile +79 -0
- data/SECURITY.md +18 -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 +55 -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 +177 -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 +32 -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.rb +76 -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 +15 -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 +34 -0
- data/lib/fluent/event.rb +326 -0
- data/lib/fluent/event_router.rb +297 -0
- data/lib/fluent/ext_monitor_require.rb +28 -0
- data/lib/fluent/filter.rb +21 -0
- data/lib/fluent/fluent_log_event_router.rb +141 -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.rb +713 -0
- data/lib/fluent/match.rb +187 -0
- data/lib/fluent/mixin.rb +31 -0
- data/lib/fluent/msgpack_factory.rb +106 -0
- data/lib/fluent/oj_options.rb +62 -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 +197 -0
- data/lib/fluent/plugin/buf_file.rb +213 -0
- data/lib/fluent/plugin/buf_file_single.rb +225 -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 +311 -0
- data/lib/fluent/plugin/buffer/memory_chunk.rb +91 -0
- data/lib/fluent/plugin/buffer.rb +918 -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/file_wrapper.rb +187 -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 +667 -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/position_file.rb +269 -0
- data/lib/fluent/plugin/in_tail.rb +1228 -0
- data/lib/fluent/plugin/in_tcp.rb +181 -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 +334 -0
- data/lib/fluent/plugin/out_forward/ack_handler.rb +161 -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 +140 -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 +131 -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 +1556 -0
- data/lib/fluent/plugin/owned_by_mixin.rb +42 -0
- data/lib/fluent/plugin/parser.rb +275 -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 +366 -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 +93 -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 +209 -0
- data/lib/fluent/plugin_helper/server.rb +801 -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 +277 -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 +116 -0
- data/lib/fluent/root_agent.rb +372 -0
- data/lib/fluent/rpc.rb +94 -0
- data/lib/fluent/static_config_analysis.rb +194 -0
- data/lib/fluent/supervisor.rb +1054 -0
- data/lib/fluent/system_config.rb +187 -0
- data/lib/fluent/test/base.rb +78 -0
- data/lib/fluent/test/driver/base.rb +225 -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 +57 -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 +46 -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/winsvc.rb +103 -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 +8 -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 +57 -0
- data/test/command/test_fluentd.rb +1106 -0
- data/test/command/test_plugin_config_formatter.rb +398 -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 +199 -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/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 +140 -0
- data/test/plugin/in_tail/test_position_file.rb +379 -0
- data/test/plugin/out_forward/test_ack_handler.rb +101 -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 +149 -0
- data/test/plugin/test_bare_output.rb +131 -0
- data/test/plugin/test_base.rb +115 -0
- data/test/plugin/test_buf_file.rb +1275 -0
- data/test/plugin/test_buf_file_single.rb +833 -0
- data/test/plugin/test_buf_memory.rb +42 -0
- data/test/plugin/test_buffer.rb +1383 -0
- data/test/plugin/test_buffer_chunk.rb +198 -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_file_wrapper.rb +126 -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 +1180 -0
- data/test/plugin/test_in_gc_stat.rb +62 -0
- data/test/plugin/test_in_http.rb +1080 -0
- data/test/plugin/test_in_monitor_agent.rb +923 -0
- data/test/plugin/test_in_object_space.rb +60 -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 +2363 -0
- data/test/plugin/test_in_tcp.rb +243 -0
- data/test/plugin/test_in_udp.rb +268 -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 +1037 -0
- data/test/plugin/test_out_forward.rb +1348 -0
- data/test/plugin/test_out_http.rb +428 -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 +1065 -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 +165 -0
- data/test/plugin/test_output_as_buffered_overflow.rb +250 -0
- data/test/plugin/test_output_as_buffered_retries.rb +919 -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 +35 -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 +289 -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 +167 -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 +840 -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 +442 -0
- data/test/plugin_helper/test_server.rb +1823 -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 +202 -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 +331 -0
- data/test/test_event_time.rb +199 -0
- data/test/test_filter.rb +121 -0
- data/test/test_fluent_log_event_router.rb +99 -0
- data/test/test_formatter.rb +366 -0
- data/test/test_input.rb +31 -0
- data/test/test_log.rb +994 -0
- data/test/test_logger_initializer.rb +46 -0
- data/test/test_match.rb +148 -0
- data/test/test_mixin.rb +351 -0
- data/test/test_msgpack_factory.rb +18 -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 +601 -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 +1261 -0
@@ -0,0 +1,145 @@
|
|
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/counter/error'
|
18
|
+
|
19
|
+
module Fluent
|
20
|
+
module Counter
|
21
|
+
class Validator
|
22
|
+
VALID_NAME = /\A[a-z][a-zA-Z0-9\-_]*\Z/
|
23
|
+
VALID_SCOPE_NAME = /\A[a-z][\ta-zA-Z0-9\-_]*\Z/
|
24
|
+
VALID_METHODS = %w(establish init delete inc get reset)
|
25
|
+
|
26
|
+
def self.request(data)
|
27
|
+
errors = []
|
28
|
+
raise "Received data is not Hash: #{data}" unless data.is_a?(Hash)
|
29
|
+
|
30
|
+
unless data['id']
|
31
|
+
errors << Fluent::Counter::InvalidRequest.new('Request should include `id`')
|
32
|
+
end
|
33
|
+
|
34
|
+
if !data['method']
|
35
|
+
errors << Fluent::Counter::InvalidRequest.new('Request should include `method`')
|
36
|
+
elsif !(VALID_NAME =~ data['method'])
|
37
|
+
errors << Fluent::Counter::InvalidRequest.new('`method` is the invalid format')
|
38
|
+
elsif !VALID_METHODS.include?(data['method'])
|
39
|
+
errors << Fluent::Counter::MethodNotFound.new("Unknown method name passed: #{data['method']}")
|
40
|
+
end
|
41
|
+
|
42
|
+
errors.map(&:to_hash)
|
43
|
+
end
|
44
|
+
|
45
|
+
def initialize(*types)
|
46
|
+
@types = types.map(&:to_s)
|
47
|
+
@empty = @types.delete('empty')
|
48
|
+
end
|
49
|
+
|
50
|
+
def call(data)
|
51
|
+
success = []
|
52
|
+
errors = []
|
53
|
+
|
54
|
+
if @empty && data.empty?
|
55
|
+
errors << Fluent::Counter::InvalidParams.new('One or more `params` are required')
|
56
|
+
else
|
57
|
+
data.each do |d|
|
58
|
+
begin
|
59
|
+
@types.each { |type| dispatch(type, d) }
|
60
|
+
success << d
|
61
|
+
rescue => e
|
62
|
+
errors << e
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
[success, errors]
|
68
|
+
end
|
69
|
+
|
70
|
+
private
|
71
|
+
|
72
|
+
def dispatch(type, data)
|
73
|
+
send("validate_#{type}!", data)
|
74
|
+
rescue NoMethodError => e
|
75
|
+
raise Fluent::Counter::InternalServerError.new(e)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
class ArrayValidator < Validator
|
80
|
+
def validate_key!(name)
|
81
|
+
unless name.is_a?(String)
|
82
|
+
raise Fluent::Counter::InvalidParams.new('The type of `key` should be String')
|
83
|
+
end
|
84
|
+
|
85
|
+
unless VALID_NAME =~ name
|
86
|
+
raise Fluent::Counter::InvalidParams.new('`key` is the invalid format')
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def validate_scope!(name)
|
91
|
+
unless name.is_a?(String)
|
92
|
+
raise Fluent::Counter::InvalidParams.new('The type of `scope` should be String')
|
93
|
+
end
|
94
|
+
|
95
|
+
unless VALID_SCOPE_NAME =~ name
|
96
|
+
raise Fluent::Counter::InvalidParams.new('`scope` is the invalid format')
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
class HashValidator < Validator
|
102
|
+
def validate_name!(hash)
|
103
|
+
name = hash['name']
|
104
|
+
unless name
|
105
|
+
raise Fluent::Counter::InvalidParams.new('`name` is required')
|
106
|
+
end
|
107
|
+
|
108
|
+
unless name.is_a?(String)
|
109
|
+
raise Fluent::Counter::InvalidParams.new('The type of `name` should be String')
|
110
|
+
end
|
111
|
+
|
112
|
+
unless VALID_NAME =~ name
|
113
|
+
raise Fluent::Counter::InvalidParams.new("`name` is the invalid format")
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
def validate_value!(hash)
|
118
|
+
value = hash['value']
|
119
|
+
unless value
|
120
|
+
raise Fluent::Counter::InvalidParams.new('`value` is required')
|
121
|
+
end
|
122
|
+
|
123
|
+
unless value.is_a?(Numeric)
|
124
|
+
raise Fluent::Counter::InvalidParams.new("The type of `value` type should be Numeric")
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
def validate_reset_interval!(hash)
|
129
|
+
interval = hash['reset_interval']
|
130
|
+
|
131
|
+
unless interval
|
132
|
+
raise Fluent::Counter::InvalidParams.new('`reset_interval` is required')
|
133
|
+
end
|
134
|
+
|
135
|
+
unless interval.is_a?(Numeric)
|
136
|
+
raise Fluent::Counter::InvalidParams.new('The type of `reset_interval` should be Numeric')
|
137
|
+
end
|
138
|
+
|
139
|
+
if interval < 0
|
140
|
+
raise Fluent::Counter::InvalidParams.new('`reset_interval` should be a positive number')
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
@@ -0,0 +1,23 @@
|
|
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/counter/client'
|
18
|
+
require 'fluent/counter/server'
|
19
|
+
|
20
|
+
module Fluent
|
21
|
+
module Counter
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# -*- coding: utf-8 -*-
|
3
|
+
|
4
|
+
here = File.dirname(__FILE__)
|
5
|
+
$LOAD_PATH << File.expand_path(File.join(here, '..'))
|
6
|
+
|
7
|
+
require 'serverengine'
|
8
|
+
require 'fluent/supervisor'
|
9
|
+
|
10
|
+
server_module = Fluent.const_get(ARGV[0])
|
11
|
+
worker_module = Fluent.const_get(ARGV[1])
|
12
|
+
# it doesn't call ARGV in block because when reloading config, params will be initialized and then it can't use previous config.
|
13
|
+
config_path = ARGV[2]
|
14
|
+
params = JSON.parse(ARGV[3])
|
15
|
+
ServerEngine::Daemon.run_server(server_module, worker_module) { Fluent::Supervisor.load_config(config_path, params) }
|
@@ -0,0 +1,88 @@
|
|
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/error'
|
18
|
+
|
19
|
+
module Fluent
|
20
|
+
class Daemonizer
|
21
|
+
def self.daemonize(pid_path, args = [], &block)
|
22
|
+
new.daemonize(pid_path, args, &block)
|
23
|
+
end
|
24
|
+
|
25
|
+
def daemonize(pid_path, args = [])
|
26
|
+
pid_fullpath = File.absolute_path(pid_path)
|
27
|
+
check_pidfile(pid_fullpath)
|
28
|
+
|
29
|
+
begin
|
30
|
+
Process.daemon(false, false)
|
31
|
+
|
32
|
+
File.write(pid_fullpath, Process.pid.to_s)
|
33
|
+
|
34
|
+
# install signal and set process name are performed by supervisor
|
35
|
+
install_at_exit_handlers(pid_fullpath)
|
36
|
+
|
37
|
+
yield
|
38
|
+
rescue NotImplementedError
|
39
|
+
daemonize_with_spawn(pid_fullpath, args)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def daemonize_with_spawn(pid_fullpath, args)
|
46
|
+
pid = Process.spawn(*['fluentd'].concat(args))
|
47
|
+
|
48
|
+
File.write(pid_fullpath, pid.to_s)
|
49
|
+
|
50
|
+
pid
|
51
|
+
end
|
52
|
+
|
53
|
+
def check_pidfile(pid_path)
|
54
|
+
if File.exist?(pid_path)
|
55
|
+
if !File.readable?(pid_path) || !File.writable?(pid_path)
|
56
|
+
raise Fluent::ConfigError, "Cannot access pid file: #{pid_path}"
|
57
|
+
end
|
58
|
+
|
59
|
+
pid =
|
60
|
+
begin
|
61
|
+
Integer(File.read(pid_path), 10)
|
62
|
+
rescue TypeError, ArgumentError
|
63
|
+
return # ignore
|
64
|
+
end
|
65
|
+
|
66
|
+
begin
|
67
|
+
Process.kill(0, pid)
|
68
|
+
raise Fluent::ConfigError, "pid(#{pid}) is running"
|
69
|
+
rescue Errno::EPERM
|
70
|
+
raise Fluent::ConfigError, "pid(#{pid}) is running"
|
71
|
+
rescue Errno::ESRCH
|
72
|
+
end
|
73
|
+
else
|
74
|
+
unless File.writable?(File.dirname(pid_path))
|
75
|
+
raise Fluent::ConfigError, "Cannot access directory for pid file: #{File.dirname(pid_path)}"
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def install_at_exit_handlers(pidfile)
|
81
|
+
at_exit do
|
82
|
+
if File.exist?(pidfile)
|
83
|
+
File.delete(pidfile)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,253 @@
|
|
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'
|
18
|
+
require 'fluent/event'
|
19
|
+
require 'fluent/event_router'
|
20
|
+
require 'fluent/msgpack_factory'
|
21
|
+
require 'fluent/root_agent'
|
22
|
+
require 'fluent/time'
|
23
|
+
require 'fluent/system_config'
|
24
|
+
require 'fluent/plugin'
|
25
|
+
require 'fluent/fluent_log_event_router'
|
26
|
+
require 'fluent/static_config_analysis'
|
27
|
+
|
28
|
+
module Fluent
|
29
|
+
class EngineClass
|
30
|
+
# For compat. remove it in fluentd v2
|
31
|
+
include Fluent::MessagePackFactory::Mixin
|
32
|
+
|
33
|
+
def initialize
|
34
|
+
@root_agent = nil
|
35
|
+
@engine_stopped = false
|
36
|
+
@_worker_id = nil
|
37
|
+
|
38
|
+
@log_event_verbose = false
|
39
|
+
@suppress_config_dump = false
|
40
|
+
@without_source = false
|
41
|
+
|
42
|
+
@fluent_log_event_router = nil
|
43
|
+
@system_config = SystemConfig.new
|
44
|
+
|
45
|
+
@supervisor_mode = false
|
46
|
+
end
|
47
|
+
|
48
|
+
MAINLOOP_SLEEP_INTERVAL = 0.3
|
49
|
+
|
50
|
+
attr_reader :root_agent, :system_config, :supervisor_mode
|
51
|
+
|
52
|
+
def init(system_config, supervisor_mode: false)
|
53
|
+
@system_config = system_config
|
54
|
+
@supervisor_mode = supervisor_mode
|
55
|
+
|
56
|
+
@suppress_config_dump = system_config.suppress_config_dump unless system_config.suppress_config_dump.nil?
|
57
|
+
@without_source = system_config.without_source unless system_config.without_source.nil?
|
58
|
+
|
59
|
+
@log_event_verbose = system_config.log_event_verbose unless system_config.log_event_verbose.nil?
|
60
|
+
|
61
|
+
@root_agent = RootAgent.new(log: log, system_config: @system_config)
|
62
|
+
|
63
|
+
self
|
64
|
+
end
|
65
|
+
|
66
|
+
def log
|
67
|
+
$log
|
68
|
+
end
|
69
|
+
|
70
|
+
def parse_config(io, fname, basepath = Dir.pwd, v1_config = false)
|
71
|
+
if fname =~ /\.rb$/
|
72
|
+
require 'fluent/config/dsl'
|
73
|
+
Config::DSL::Parser.parse(io, File.join(basepath, fname))
|
74
|
+
else
|
75
|
+
Config.parse(io, fname, basepath, v1_config)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def run_configure(conf, dry_run: false)
|
80
|
+
configure(conf)
|
81
|
+
conf.check_not_fetched do |key, e|
|
82
|
+
parent_name, plugin_name = e.unused_in
|
83
|
+
message = if parent_name && plugin_name
|
84
|
+
"section <#{e.name}> is not used in <#{parent_name}> of #{plugin_name} plugin"
|
85
|
+
elsif parent_name
|
86
|
+
"section <#{e.name}> is not used in <#{parent_name}>"
|
87
|
+
elsif e.name != 'system' && !(@without_source && e.name == 'source')
|
88
|
+
"parameter '#{key}' in #{e.to_s.strip} is not used."
|
89
|
+
else
|
90
|
+
nil
|
91
|
+
end
|
92
|
+
next if message.nil?
|
93
|
+
|
94
|
+
if dry_run && @supervisor_mode
|
95
|
+
$log.warn :supervisor, message
|
96
|
+
elsif e.for_every_workers?
|
97
|
+
$log.warn :worker0, message
|
98
|
+
elsif e.for_this_worker?
|
99
|
+
$log.warn message
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
def configure(conf)
|
105
|
+
@root_agent.configure(conf)
|
106
|
+
|
107
|
+
@fluent_log_event_router = FluentLogEventRouter.build(@root_agent)
|
108
|
+
|
109
|
+
if @fluent_log_event_router.emittable?
|
110
|
+
$log.enable_event(true)
|
111
|
+
end
|
112
|
+
|
113
|
+
unless @suppress_config_dump
|
114
|
+
$log.info :supervisor, "using configuration file: #{conf.to_s.rstrip}"
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
def add_plugin_dir(dir)
|
119
|
+
$log.warn('Deprecated method: this method is going to be deleted. Use Fluent::Plugin.add_plugin_dir')
|
120
|
+
Plugin.add_plugin_dir(dir)
|
121
|
+
end
|
122
|
+
|
123
|
+
def emit(tag, time, record)
|
124
|
+
raise "BUG: use router.emit instead of Engine.emit"
|
125
|
+
end
|
126
|
+
|
127
|
+
def emit_array(tag, array)
|
128
|
+
raise "BUG: use router.emit_array instead of Engine.emit_array"
|
129
|
+
end
|
130
|
+
|
131
|
+
def emit_stream(tag, es)
|
132
|
+
raise "BUG: use router.emit_stream instead of Engine.emit_stream"
|
133
|
+
end
|
134
|
+
|
135
|
+
def flush!
|
136
|
+
@root_agent.flush!
|
137
|
+
end
|
138
|
+
|
139
|
+
def now
|
140
|
+
# TODO thread update
|
141
|
+
Fluent::EventTime.now
|
142
|
+
end
|
143
|
+
|
144
|
+
def run
|
145
|
+
begin
|
146
|
+
$log.info "starting fluentd worker", pid: Process.pid, ppid: Process.ppid, worker: worker_id
|
147
|
+
start
|
148
|
+
|
149
|
+
@fluent_log_event_router.start
|
150
|
+
|
151
|
+
$log.info "fluentd worker is now running", worker: worker_id
|
152
|
+
sleep MAINLOOP_SLEEP_INTERVAL until @engine_stopped
|
153
|
+
$log.info "fluentd worker is now stopping", worker: worker_id
|
154
|
+
|
155
|
+
rescue Exception => e
|
156
|
+
$log.error "unexpected error", error: e
|
157
|
+
$log.error_backtrace
|
158
|
+
raise
|
159
|
+
end
|
160
|
+
|
161
|
+
stop_phase(@root_agent)
|
162
|
+
end
|
163
|
+
|
164
|
+
# @param conf [Fluent::Config]
|
165
|
+
# @param supervisor [Bool]
|
166
|
+
# @reutrn nil
|
167
|
+
def reload_config(conf, supervisor: false)
|
168
|
+
# configure first to reduce down time while restarting
|
169
|
+
new_agent = RootAgent.new(log: log, system_config: @system_config)
|
170
|
+
ret = Fluent::StaticConfigAnalysis.call(conf, workers: system_config.workers)
|
171
|
+
|
172
|
+
ret.all_plugins.each do |plugin|
|
173
|
+
if plugin.respond_to?(:reloadable_plugin?) && !plugin.reloadable_plugin?
|
174
|
+
raise Fluent::ConfigError, "Unreloadable plugin plugin: #{Fluent::Plugin.lookup_type_from_class(plugin.class)}, plugin_id: #{plugin.plugin_id}, class_name: #{plugin.class})"
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
# Assign @root_agent to new root_agent
|
179
|
+
# for https://github.com/fluent/fluentd/blob/fcef949ce40472547fde295ddd2cfe297e1eddd6/lib/fluent/plugin_helper/event_emitter.rb#L50
|
180
|
+
old_agent, @root_agent = @root_agent, new_agent
|
181
|
+
begin
|
182
|
+
@root_agent.configure(conf)
|
183
|
+
rescue
|
184
|
+
@root_agent = old_agent
|
185
|
+
raise
|
186
|
+
end
|
187
|
+
|
188
|
+
unless @suppress_config_dump
|
189
|
+
$log.info :supervisor, "using configuration file: #{conf.to_s.rstrip}"
|
190
|
+
end
|
191
|
+
|
192
|
+
# supervisor doesn't handle actual data. so the following code is unnecessary.
|
193
|
+
if supervisor
|
194
|
+
old_agent.shutdown # to close thread created in #configure
|
195
|
+
return
|
196
|
+
end
|
197
|
+
|
198
|
+
stop_phase(old_agent)
|
199
|
+
|
200
|
+
$log.info 'restart fluentd worker', worker: worker_id
|
201
|
+
start_phase(new_agent)
|
202
|
+
end
|
203
|
+
|
204
|
+
def stop
|
205
|
+
@engine_stopped = true
|
206
|
+
nil
|
207
|
+
end
|
208
|
+
|
209
|
+
def push_log_event(tag, time, record)
|
210
|
+
@fluent_log_event_router.emit_event([tag, time, record])
|
211
|
+
end
|
212
|
+
|
213
|
+
def worker_id
|
214
|
+
if @supervisor_mode
|
215
|
+
return -1
|
216
|
+
end
|
217
|
+
|
218
|
+
return @_worker_id if @_worker_id
|
219
|
+
# if ENV doesn't have SERVERENGINE_WORKER_ID, it is a worker under --no-supervisor or in tests
|
220
|
+
# so it's (almost) a single worker, worker_id=0
|
221
|
+
@_worker_id = (ENV['SERVERENGINE_WORKER_ID'] || 0).to_i
|
222
|
+
@_worker_id
|
223
|
+
end
|
224
|
+
|
225
|
+
private
|
226
|
+
|
227
|
+
def stop_phase(root_agent)
|
228
|
+
unless @log_event_verbose
|
229
|
+
$log.enable_event(false)
|
230
|
+
@fluent_log_event_router.graceful_stop
|
231
|
+
end
|
232
|
+
$log.info 'shutting down fluentd worker', worker: worker_id
|
233
|
+
root_agent.shutdown
|
234
|
+
|
235
|
+
@fluent_log_event_router.stop
|
236
|
+
end
|
237
|
+
|
238
|
+
def start_phase(root_agent)
|
239
|
+
@fluent_log_event_router = FluentLogEventRouter.build(root_agent)
|
240
|
+
if @fluent_log_event_router.emittable?
|
241
|
+
$log.enable_event(true)
|
242
|
+
end
|
243
|
+
|
244
|
+
@root_agent.start
|
245
|
+
end
|
246
|
+
|
247
|
+
def start
|
248
|
+
@root_agent.start
|
249
|
+
end
|
250
|
+
end
|
251
|
+
|
252
|
+
Engine = EngineClass.new
|
253
|
+
end
|
data/lib/fluent/env.rb
ADDED
@@ -0,0 +1,40 @@
|
|
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 'serverengine/utils'
|
18
|
+
require 'fluent/oj_options'
|
19
|
+
|
20
|
+
module Fluent
|
21
|
+
DEFAULT_CONFIG_PATH = ENV['FLUENT_CONF'] || '/etc/fluent/fluent.conf'
|
22
|
+
DEFAULT_PLUGIN_DIR = ENV['FLUENT_PLUGIN'] || '/etc/fluent/plugin'
|
23
|
+
DEFAULT_SOCKET_PATH = ENV['FLUENT_SOCKET'] || '/var/run/fluent/fluent.sock'
|
24
|
+
DEFAULT_BACKUP_DIR = ENV['FLUENT_BACKUP_DIR'] || '/tmp/fluent'
|
25
|
+
DEFAULT_OJ_OPTIONS = Fluent::OjOptions.load_env
|
26
|
+
DEFAULT_DIR_PERMISSION = 0755
|
27
|
+
DEFAULT_FILE_PERMISSION = 0644
|
28
|
+
|
29
|
+
def self.windows?
|
30
|
+
ServerEngine.windows?
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.linux?
|
34
|
+
/linux/ === RUBY_PLATFORM
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.macos?
|
38
|
+
/darwin/ =~ RUBY_PLATFORM
|
39
|
+
end
|
40
|
+
end
|
data/lib/fluent/error.rb
ADDED
@@ -0,0 +1,34 @@
|
|
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
|
+
class UnrecoverableError < StandardError
|
19
|
+
def initialize(error_message = nil)
|
20
|
+
@message = error_message || "an unrecoverable error occurs in Fluentd process"
|
21
|
+
end
|
22
|
+
|
23
|
+
def to_s
|
24
|
+
@message
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
class InvalidRootDirectory < UnrecoverableError
|
29
|
+
end
|
30
|
+
|
31
|
+
# For internal use
|
32
|
+
class UncatchableError < Exception
|
33
|
+
end
|
34
|
+
end
|