├── .buildkite ├── aarch64_pipeline.yml ├── benchmark_marathon_pipeline.yml ├── benchmark_pipeline.yml ├── dra_pipeline.yml ├── exhaustive_tests_pipeline.yml ├── health_report_tests_pipeline.yml ├── jdk_availability_check_pipeline.yml ├── linux_jdk_matrix_pipeline.yml ├── pull-requests.json ├── pull_request_pipeline.yml ├── scripts │ ├── benchmark │ │ ├── README.md │ │ ├── config │ │ │ ├── filebeat.yml │ │ │ ├── logstash.yml │ │ │ ├── pipelines.yml │ │ │ └── uuid │ │ ├── core.sh │ │ ├── main.sh │ │ ├── marathon.sh │ │ ├── save-objects │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ └── benchmark_objects.ndjson │ │ ├── setup │ │ │ ├── alias │ │ │ └── benchmark_summary_v2 │ │ └── util.sh │ ├── common │ │ ├── check-files-changed.sh │ │ ├── container-agent.sh │ │ ├── qualified-version.sh │ │ ├── trigger-pipeline-generate-steps.sh │ │ ├── vm-agent-multi-jdk.sh │ │ ├── vm-agent.sh │ │ └── vm-images.json │ ├── dra │ │ ├── build_docker.sh │ │ ├── build_packages.sh │ │ ├── common.sh │ │ ├── docker-env-setup.sh │ │ ├── docker-env-teardown.sh │ │ ├── generatesteps.py │ │ └── publish.sh │ ├── exhaustive-tests │ │ └── generate-steps.py │ ├── health-report-tests │ │ ├── README.md │ │ ├── __init__.py │ │ ├── bootstrap.py │ │ ├── config │ │ │ └── pipelines.yml │ │ ├── config_validator.py │ │ ├── logstash_health_report.py │ │ ├── main.py │ │ ├── main.sh │ │ ├── requirements.txt │ │ ├── scenario_executor.py │ │ ├── tests │ │ │ ├── abnormal-termination.yaml │ │ │ ├── backpressure-1m.yaml │ │ │ ├── backpressure-5m.yaml │ │ │ ├── multipipeline.yaml │ │ │ ├── normal-termination.yaml │ │ │ └── slow-start.yaml │ │ └── util.py │ ├── jdk-matrix-tests │ │ ├── generate-steps.py │ │ └── launch-command.ps1 │ ├── setup_java.sh │ └── snyk │ │ ├── report.sh │ │ └── resolve_stack_version.sh ├── serverless_integration_pipeline.yml ├── snyk_report_pipeline.yml ├── supported_plugins_test_pipeline.yml ├── trigger_pipelines.yml └── windows_jdk_matrix_pipeline.yml ├── .ci ├── Makefile └── java-versions.properties ├── .dockerignore ├── .fossa.yml ├── .github ├── ISSUE_TEMPLATE │ ├── bug.md │ ├── config.yml │ ├── doc-request.md │ ├── feature-request.md │ └── test-failure.md ├── PULL_REQUEST_TEMPLATE.md ├── PULL_REQUEST_TEMPLATE.md.unused ├── dependabot.yml └── workflows │ ├── backport-active.yml │ ├── catalog-info.yml │ ├── critical_vulnerability_scan.yml │ ├── docs-build.yml │ ├── docs-cleanup.yml │ ├── gen_release_notes.yml │ ├── github-commands-comment.yml │ ├── lint_docs.yml │ ├── logstash_project_board.yml │ ├── mergify-labels-copier.yml │ ├── platform_ingest_docs_project_board.yml │ ├── platform_logstash_project_board.yml │ ├── pre-commit.yml │ ├── project-board-assigner.yml │ └── version_bumps.yml ├── .gitignore ├── .mergify.yml ├── .pre-commit-config.yaml ├── .rubocop.yml ├── .ruby-version ├── CONTRIBUTING.md ├── CONTRIBUTORS ├── COPYING.csv ├── Gemfile.template ├── LICENSE.txt ├── NOTICE.TXT ├── README.md ├── ROADMAP.md ├── Rakefile ├── SECURITY.md ├── STYLE.md ├── bin ├── benchmark.bat ├── benchmark.sh ├── bundle ├── cpdump ├── dependencies-report ├── logstash ├── logstash-keystore ├── logstash-keystore.bat ├── logstash-plugin ├── logstash-plugin.bat ├── logstash.bat ├── logstash.lib.sh ├── pqcheck ├── pqcheck.bat ├── pqrepair ├── pqrepair.bat ├── rspec ├── rspec.bat ├── ruby ├── setup.bat └── system-install ├── build.gradle ├── buildSrc ├── build.gradle └── src │ ├── main │ └── groovy │ │ └── org │ │ └── logstash │ │ └── gradle │ │ └── tooling │ │ ├── ExtractBundledJdkVersion.groovy │ │ ├── ListProjectDependencies.groovy │ │ ├── SignAliasDefinitions.groovy │ │ ├── SnapshotArtifactURLs.groovy │ │ └── ToolingUtils.groovy │ └── test │ └── groovy │ └── org │ └── logstash │ └── gradle │ └── tooling │ ├── ExtractBundledJdkVersionTest.groovy │ ├── ListProjectDependenciesTest.groovy │ └── SignAliasDefinitionsTest.groovy ├── catalog-info.yaml ├── ci ├── acceptance_tests.sh ├── bootstrap_dependencies.sh ├── check_jdk_version_availability.sh ├── ci_docs.sh ├── docker_acceptance_tests.sh ├── integration_tests.sh ├── license_check.sh ├── logstash_releases.json ├── partition-files.lib.sh ├── serverless │ ├── README.md │ ├── common.sh │ ├── config │ │ └── logstash.yml │ ├── cpm_tests.sh │ ├── dlq_rspec_tests.sh │ ├── elastic_integration_filter_tests.sh │ ├── es_filter_tests.sh │ ├── es_input_tests.sh │ ├── es_output_tests.sh │ ├── kibana_api_tests.sh │ ├── metricbeat │ │ └── metricbeat.yml │ ├── metricbeat_monitoring_tests.sh │ ├── monitoring_tests.sh │ ├── pipeline │ │ ├── 001_es-output.conf │ │ ├── 002_es-filter.conf │ │ ├── 003_es-input.conf │ │ ├── 004_integration-filter.conf │ │ └── 005_uptime.conf │ └── test_data │ │ ├── book.json │ │ ├── index_template.json │ │ ├── ingest_pipeline.json │ │ └── stdin_stdout.json ├── test_plugins.rb ├── test_plugins.sh ├── unit_tests.ps1 └── unit_tests.sh ├── config ├── jvm.options ├── log4j2.properties ├── logstash-sample.conf ├── logstash.yml ├── pipelines.yml └── startup.options ├── data └── .gitkeep ├── devtools └── label ├── docker ├── LICENSE ├── Makefile ├── README.md ├── bin │ └── elastic-version ├── data │ └── logstash │ │ ├── bin │ │ └── docker-entrypoint │ │ ├── config │ │ ├── log4j2.file.properties │ │ ├── log4j2.properties │ │ ├── logstash-full.yml │ │ ├── logstash-oss.yml │ │ └── pipelines.yml │ │ ├── env2yaml │ │ ├── env2yaml.go │ │ ├── go.mod │ │ └── go.sum │ │ └── pipeline │ │ └── default.conf ├── examples │ └── logstash.conf ├── ironbank │ ├── LICENSE │ ├── README.md │ └── go │ │ └── src │ │ └── env2yaml │ │ ├── go.mod │ │ ├── go.sum │ │ └── vendor │ │ └── modules.txt └── templates │ ├── Dockerfile.erb │ ├── IronbankDockerfile.erb │ └── hardening_manifest.yaml.erb ├── docs ├── docset.yml ├── extend │ ├── codec-new-plugin.md │ ├── community-maintainer.md │ ├── contribute-to-core.md │ ├── contributing-patch-plugin.md │ ├── create-logstash-plugins.md │ ├── filter-new-plugin.md │ ├── index.md │ ├── input-new-plugin.md │ ├── java-codec-plugin.md │ ├── java-filter-plugin.md │ ├── java-input-plugin.md │ ├── java-output-plugin.md │ ├── output-new-plugin.md │ ├── plugin-doc.md │ ├── plugin-listing.md │ ├── publish-plugin.md │ └── toc.yml ├── reference │ ├── advanced-logstash-configurations.md │ ├── advanced-pipeline.md │ ├── config-examples.md │ ├── config-setting-files.md │ ├── configuration-file-structure.md │ ├── configuring-centralized-pipelines.md │ ├── configuring-geoip-database-management.md │ ├── connecting-to-cloud.md │ ├── core-operations.md │ ├── creating-logstash-pipeline.md │ ├── dashboard-monitoring-with-elastic-agent.md │ ├── data-deserialization.md │ ├── dead-letter-queues.md │ ├── deploying-scaling-logstash.md │ ├── dir-layout.md │ ├── docker-config.md │ ├── docker.md │ ├── ecs-ls.md │ ├── environment-variables.md │ ├── event-api.md │ ├── event-dependent-configuration.md │ ├── execution-model.md │ ├── field-extraction.md │ ├── first-event.md │ ├── getting-started-with-logstash.md │ ├── glob-support.md │ ├── how-logstash-works.md │ ├── images │ │ ├── basic_logstash_pipeline.png │ │ ├── centralized_config.png │ │ ├── dead_letter_queue.png │ │ ├── deploy1.png │ │ ├── deploy2.png │ │ ├── deploy3.png │ │ ├── deploy4.png │ │ ├── integration-assets-dashboards.png │ │ ├── integration-dashboard-overview.png │ │ ├── kibana-filebeat-data.png │ │ ├── kibana-home.png │ │ ├── monitoring-ui.png │ │ ├── nodestats.png │ │ ├── overviewstats.png │ │ ├── pipeline-input-detail.png │ │ ├── pipeline-tree.png │ │ ├── pipeline_correct_load.png │ │ └── pipeline_overload.png │ ├── index.md │ ├── installing-logstash.md │ ├── jvm-settings.md │ ├── keystore.md │ ├── logging.md │ ├── logstash-centralized-pipeline-management.md │ ├── logstash-geoip-database-management.md │ ├── logstash-monitoring-ui.md │ ├── logstash-pipeline-viewer.md │ ├── logstash-settings-file.md │ ├── logstash-to-logstash-communications.md │ ├── lookup-enrichment.md │ ├── ls-to-ls-http.md │ ├── ls-to-ls-lumberjack.md │ ├── ls-to-ls-native.md │ ├── managing-geoip-databases.md │ ├── managing-logstash.md │ ├── memory-queue.md │ ├── monitoring-internal-collection-legacy.md │ ├── monitoring-logstash-legacy.md │ ├── monitoring-logstash-with-elastic-agent.md │ ├── monitoring-logstash.md │ ├── monitoring-troubleshooting.md │ ├── monitoring-with-elastic-agent.md │ ├── monitoring-with-metricbeat.md │ ├── multiline.md │ ├── multiple-input-output-plugins.md │ ├── multiple-pipelines.md │ ├── offline-plugins.md │ ├── performance-troubleshooting.md │ ├── performance-tuning.md │ ├── persistent-queues.md │ ├── pipeline-to-pipeline.md │ ├── plugin-concepts.md │ ├── plugin-generator.md │ ├── private-rubygem.md │ ├── processing.md │ ├── queues-data-resiliency.md │ ├── reloading-config.md │ ├── running-logstash-command-line.md │ ├── running-logstash-kubernetes.md │ ├── running-logstash-windows.md │ ├── running-logstash.md │ ├── secure-connection.md │ ├── serverless-monitoring-with-elastic-agent.md │ ├── setting-up-running-logstash.md │ ├── shutdown.md │ ├── tips-best-practices.md │ ├── toc.yml │ ├── transforming-data.md │ ├── tuning-logstash.md │ ├── upgrading-logstash.md │ ├── upgrading-minor-versions.md │ ├── upgrading-using-direct-download.md │ ├── upgrading-using-package-managers.md │ ├── use-filebeat-modules-kafka.md │ ├── use-ingest-pipelines.md │ ├── using-logstash-with-elastic-integrations.md │ ├── working-with-filebeat-modules.md │ ├── working-with-plugins.md │ └── working-with-winlogbeat-modules.md ├── release-notes │ ├── breaking-changes.md │ ├── deprecations.md │ ├── index.md │ ├── known-issues.md │ └── toc.yml └── static │ ├── filebeat_modules │ ├── apache2 │ │ └── pipeline.conf │ ├── mysql │ │ └── pipeline.conf │ ├── nginx │ │ └── pipeline.conf │ └── system │ │ └── pipeline.conf │ ├── monitoring │ └── pipelines │ │ └── tweets_about_rain.conf │ └── spec │ └── openapi │ ├── logstash-api.yaml │ └── redocly.yaml ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── lib ├── bootstrap │ ├── bundler.rb │ ├── environment.rb │ ├── patches │ │ ├── gems.rb │ │ └── jar_dependencies.rb │ ├── rspec.rb │ ├── rubygems.rb │ └── util │ │ └── compress.rb ├── pluginmanager │ ├── bundler │ │ ├── logstash_injector.rb │ │ └── logstash_uninstall.rb │ ├── command.rb │ ├── errors.rb │ ├── gem_installer.rb │ ├── gemfile.rb │ ├── generate.rb │ ├── install.rb │ ├── install_strategy_factory.rb │ ├── list.rb │ ├── main.rb │ ├── offline_plugin_packager.rb │ ├── pack.rb │ ├── pack_command.rb │ ├── pack_fetch_strategy │ │ ├── repository.rb │ │ └── uri.rb │ ├── pack_installer │ │ ├── local.rb │ │ ├── pack.rb │ │ └── remote.rb │ ├── prepare_offline_pack.rb │ ├── proxy_support.rb │ ├── remove.rb │ ├── settings.xml.erb │ ├── templates │ │ ├── codec-plugin │ │ │ ├── .ruby-version │ │ │ ├── CHANGELOG.md │ │ │ ├── CONTRIBUTORS.erb │ │ │ ├── DEVELOPER.md.erb │ │ │ ├── Gemfile.erb │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── Rakefile │ │ │ ├── docs │ │ │ │ └── index.asciidoc │ │ │ ├── lib │ │ │ │ └── logstash │ │ │ │ │ └── codecs │ │ │ │ │ └── example.rb.erb │ │ │ ├── logstash-codec-example.gemspec.erb │ │ │ └── spec │ │ │ │ ├── codecs │ │ │ │ └── example_spec.rb.erb │ │ │ │ └── spec_helper.rb │ │ ├── filter-plugin │ │ │ ├── .ruby-version │ │ │ ├── CHANGELOG.md │ │ │ ├── CONTRIBUTORS.erb │ │ │ ├── DEVELOPER.md.erb │ │ │ ├── Gemfile.erb │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── Rakefile │ │ │ ├── docs │ │ │ │ └── index.asciidoc │ │ │ ├── lib │ │ │ │ └── logstash │ │ │ │ │ └── filters │ │ │ │ │ └── example.rb.erb │ │ │ ├── logstash-filter-example.gemspec.erb │ │ │ └── spec │ │ │ │ ├── filters │ │ │ │ └── example_spec.rb.erb │ │ │ │ └── spec_helper.rb │ │ ├── input-plugin │ │ │ ├── .ruby-version │ │ │ ├── CHANGELOG.md │ │ │ ├── CONTRIBUTORS.erb │ │ │ ├── DEVELOPER.md.erb │ │ │ ├── Gemfile.erb │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── Rakefile │ │ │ ├── docs │ │ │ │ └── index.asciidoc │ │ │ ├── lib │ │ │ │ └── logstash │ │ │ │ │ └── inputs │ │ │ │ │ └── example.rb.erb │ │ │ ├── logstash-input-example.gemspec.erb │ │ │ └── spec │ │ │ │ └── inputs │ │ │ │ └── example_spec.rb.erb │ │ ├── output-plugin │ │ │ ├── .ruby-version │ │ │ ├── CHANGELOG.md │ │ │ ├── CONTRIBUTORS.erb │ │ │ ├── DEVELOPER.md.erb │ │ │ ├── Gemfile.erb │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── Rakefile │ │ │ ├── docs │ │ │ │ └── index.asciidoc │ │ │ ├── lib │ │ │ │ └── logstash │ │ │ │ │ └── outputs │ │ │ │ │ └── example.rb.erb │ │ │ ├── logstash-output-example.gemspec.erb │ │ │ └── spec │ │ │ │ └── outputs │ │ │ │ └── example_spec.rb.erb │ │ └── render_context.rb │ ├── ui.rb │ ├── unpack.rb │ ├── update.rb │ ├── util.rb │ ├── utils │ │ ├── downloader.rb │ │ └── http_client.rb │ └── x_pack_interceptor.rb ├── secretstore │ └── cli.rb └── systeminstall │ └── pleasewrap.rb ├── licenses ├── APACHE-LICENSE-2.0.txt └── ELASTIC-LICENSE.txt ├── logstash-core-plugin-api ├── lib │ └── logstash-core-plugin-api │ │ └── version.rb └── logstash-core-plugin-api.gemspec ├── logstash-core ├── .lock ├── benchmarks │ ├── Readme.md │ ├── build.gradle │ ├── gradle.properties │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── logstash │ │ │ └── benchmark │ │ │ ├── BufferedTokenizerExtBenchmark.java │ │ │ ├── EventSerializationBenchmark.java │ │ │ ├── EventSprintfBenchmark.java │ │ │ ├── LogPerPipelineBenchmark.java │ │ │ ├── QueueRWBenchmark.java │ │ │ └── QueueWriteBenchmark.java │ │ └── resources │ │ ├── log4j2-with-script.properties │ │ ├── log4j2-without-script.properties │ │ └── log4j2.xml ├── build.gradle ├── gradle.properties ├── lib │ ├── logstash-core.rb │ ├── logstash-core │ │ ├── logstash-core.rb │ │ └── version.rb │ └── logstash │ │ ├── agent.rb │ │ ├── api │ │ ├── app_helpers.rb │ │ ├── command_factory.rb │ │ ├── commands │ │ │ ├── base.rb │ │ │ ├── default_metadata.rb │ │ │ ├── health_report.rb │ │ │ ├── hot_threads_reporter.rb │ │ │ ├── node.rb │ │ │ ├── stats.rb │ │ │ └── system │ │ │ │ ├── basicinfo_command.rb │ │ │ │ └── plugins_command.rb │ │ ├── errors.rb │ │ ├── modules │ │ │ ├── base.rb │ │ │ ├── health_report.rb │ │ │ ├── logging.rb │ │ │ ├── node.rb │ │ │ ├── node_stats.rb │ │ │ ├── plugins.rb │ │ │ ├── root.rb │ │ │ └── stats.rb │ │ ├── rack_app.rb │ │ └── service.rb │ │ ├── bootstrap_check │ │ └── default_config.rb │ │ ├── build.rb │ │ ├── codecs │ │ ├── base.rb │ │ └── delegator.rb │ │ ├── compiler.rb │ │ ├── compiler │ │ ├── lscl.rb │ │ ├── lscl │ │ │ ├── helpers.rb │ │ │ ├── lscl_grammar.rb │ │ │ └── lscl_grammar.treetop │ │ └── treetop_monkeypatches.rb │ │ ├── config │ │ ├── config_ast.rb │ │ ├── cpu_core_strategy.rb │ │ ├── defaults.rb │ │ ├── file.rb │ │ ├── grammar.rb │ │ ├── grammar.treetop │ │ ├── lir_serializer.rb │ │ ├── mixin.rb │ │ ├── pipeline_config.rb │ │ ├── pipelines_info.rb │ │ ├── source │ │ │ ├── base.rb │ │ │ ├── local.rb │ │ │ └── multi_local.rb │ │ ├── source_loader.rb │ │ └── string_escape.rb │ │ ├── dependency_report.rb │ │ ├── dependency_report_runner.rb │ │ ├── deprecation_message.rb │ │ ├── environment.rb │ │ ├── errors.rb │ │ ├── event.rb │ │ ├── event_dispatcher.rb │ │ ├── execution_context.rb │ │ ├── filter_delegator.rb │ │ ├── filters │ │ └── base.rb │ │ ├── inputs │ │ ├── base.rb │ │ └── threadable.rb │ │ ├── instrument │ │ ├── collector.rb │ │ ├── metric.rb │ │ ├── metric_store.rb │ │ ├── metric_type.rb │ │ ├── metric_type │ │ │ ├── counter.rb │ │ │ └── gauge.rb │ │ ├── namespaced_metric.rb │ │ ├── namespaced_null_metric.rb │ │ ├── null_metric.rb │ │ ├── periodic_poller │ │ │ ├── base.rb │ │ │ ├── cgroup.rb │ │ │ ├── dlq.rb │ │ │ ├── flow_rate.rb │ │ │ ├── jvm.rb │ │ │ ├── load_average.rb │ │ │ ├── os.rb │ │ │ └── pq.rb │ │ └── periodic_pollers.rb │ │ ├── java_pipeline.rb │ │ ├── json.rb │ │ ├── logging.rb │ │ ├── logging │ │ └── logger.rb │ │ ├── namespace.rb │ │ ├── outputs │ │ └── base.rb │ │ ├── patches.rb │ │ ├── patches │ │ ├── bugfix_jruby_2558.rb │ │ ├── cabin.rb │ │ ├── clamp.rb │ │ ├── exception_to_json.rb │ │ ├── manticore │ │ │ └── trust_strategies.rb │ │ ├── polyglot.rb │ │ ├── profile_require_calls.rb │ │ ├── puma.rb │ │ └── stronger_openssl_defaults.rb │ │ ├── persisted_queue_config_validator.rb │ │ ├── pipeline.rb │ │ ├── pipeline_action.rb │ │ ├── pipeline_action │ │ ├── base.rb │ │ ├── create.rb │ │ ├── delete.rb │ │ ├── reload.rb │ │ ├── stop.rb │ │ └── stop_and_delete.rb │ │ ├── pipeline_reporter.rb │ │ ├── pipeline_resource_usage_validator.rb │ │ ├── pipelines_registry.rb │ │ ├── plugin.rb │ │ ├── plugin_metadata.rb │ │ ├── plugins.rb │ │ ├── plugins │ │ ├── builtin.rb │ │ ├── builtin │ │ │ └── pipeline │ │ │ │ ├── input.rb │ │ │ │ └── output.rb │ │ ├── ca_trusted_fingerprint_support.rb │ │ ├── ecs_compatibility_support.rb │ │ ├── event_factory_support.rb │ │ ├── hooks_registry.rb │ │ └── registry.rb │ │ ├── runner.rb │ │ ├── settings.rb │ │ ├── shutdown_watcher.rb │ │ ├── state_resolver.rb │ │ ├── timestamp.rb │ │ ├── universal_plugin.rb │ │ ├── util.rb │ │ ├── util │ │ ├── buftok.rb │ │ ├── byte_value.rb │ │ ├── charset.rb │ │ ├── cloud_setting_auth.rb │ │ ├── cloud_setting_id.rb │ │ ├── dead_letter_queue_manager.rb │ │ ├── decorators.rb │ │ ├── jackson.rb │ │ ├── java_version.rb │ │ ├── lazy_singleton.rb │ │ ├── loggable.rb │ │ ├── password.rb │ │ ├── plugin_version.rb │ │ ├── prctl.rb │ │ ├── safe_uri.rb │ │ ├── secretstore.rb │ │ ├── settings_helper.rb │ │ ├── socket_peer.rb │ │ ├── substitution_variables.rb │ │ ├── thread_dump.rb │ │ ├── thread_safe_attributes.rb │ │ ├── time_value.rb │ │ ├── unicode_trimmer.rb │ │ └── worker_threads_default_printer.rb │ │ ├── version.rb │ │ ├── webserver.rb │ │ └── worker_loop_thread.rb ├── locales │ └── en.yml ├── logstash-core.gemspec ├── settings.gradle ├── spec │ ├── conditionals_spec.rb │ ├── logstash │ │ ├── acked_queue_concurrent_stress_spec.rb │ │ ├── agent │ │ │ ├── converge_spec.rb │ │ │ └── metrics_spec.rb │ │ ├── agent_spec.rb │ │ ├── api │ │ │ ├── commands │ │ │ │ ├── default_metadata_spec.rb │ │ │ │ ├── node_spec.rb │ │ │ │ └── stats_spec.rb │ │ │ ├── errors_spec.rb │ │ │ ├── modules │ │ │ │ ├── logging_spec.rb │ │ │ │ ├── node_plugins_spec.rb │ │ │ │ ├── node_spec.rb │ │ │ │ ├── node_stats_spec.rb │ │ │ │ ├── plugins_spec.rb │ │ │ │ └── root_spec.rb │ │ │ └── rack_app_spec.rb │ │ ├── codecs │ │ │ ├── base_spec.rb │ │ │ └── delegator_spec.rb │ │ ├── compiler │ │ │ └── compiler_spec.rb │ │ ├── config │ │ │ ├── config_ast_spec.rb │ │ │ ├── cpu_core_strategy_spec.rb │ │ │ ├── defaults_spec.rb │ │ │ ├── mixin_spec.rb │ │ │ ├── source │ │ │ │ ├── local_spec.rb │ │ │ │ └── multi_local_spec.rb │ │ │ ├── source_loader_spec.rb │ │ │ └── string_escape_spec.rb │ │ ├── converge_result_spec.rb │ │ ├── environment_spec.rb │ │ ├── event_dispatcher_spec.rb │ │ ├── event_spec.rb │ │ ├── execution_context_factory_spec.rb │ │ ├── execution_context_spec.rb │ │ ├── filter_delegator_spec.rb │ │ ├── filters │ │ │ └── base_spec.rb │ │ ├── inputs │ │ │ └── base_spec.rb │ │ ├── instrument │ │ │ ├── collector_spec.rb │ │ │ ├── metric_spec.rb │ │ │ ├── metric_store_spec.rb │ │ │ ├── metric_type │ │ │ │ ├── counter_spec.rb │ │ │ │ └── gauge_spec.rb │ │ │ ├── namespaced_metric_spec.rb │ │ │ ├── namespaced_null_metric_spec.rb │ │ │ ├── null_metric_spec.rb │ │ │ ├── periodic_poller │ │ │ │ ├── base_spec.rb │ │ │ │ ├── cgroup_spec.rb │ │ │ │ ├── dlq_spec.rb │ │ │ │ ├── jvm_spec.rb │ │ │ │ ├── load_average_spec.rb │ │ │ │ └── os_spec.rb │ │ │ └── wrapped_write_client_spec.rb │ │ ├── java_filter_delegator_spec.rb │ │ ├── java_integration_spec.rb │ │ ├── java_pipeline_spec.rb │ │ ├── json_spec.rb │ │ ├── legacy_ruby_timestamp_spec.rb │ │ ├── outputs │ │ │ └── base_spec.rb │ │ ├── patches │ │ │ └── puma_spec.rb │ │ ├── patches_spec.rb │ │ ├── persisted_queue_config_validator_spec.rb │ │ ├── pipeline_action │ │ │ ├── create_spec.rb │ │ │ ├── delete_spec.rb │ │ │ ├── reload_spec.rb │ │ │ ├── stop_and_delete_spec.rb │ │ │ └── stop_spec.rb │ │ ├── pipeline_dlq_commit_spec.rb │ │ ├── pipeline_pq_file_spec.rb │ │ ├── pipeline_reporter_spec.rb │ │ ├── pipeline_resource_usage_validator_spec.rb │ │ ├── pipelines_registry_spec.rb │ │ ├── plugin_spec.rb │ │ ├── plugins │ │ │ ├── builtin │ │ │ │ └── pipeline_input_output_spec.rb │ │ │ ├── ca_trusted_fingerprint_support_spec.rb │ │ │ ├── event_factory_support_spec.rb │ │ │ ├── hooks_registry_spec.rb │ │ │ └── registry_spec.rb │ │ ├── queue_factory_spec.rb │ │ ├── runner_spec.rb │ │ ├── setting_spec.rb │ │ ├── settings │ │ │ ├── array_coercible_spec.rb │ │ │ ├── bytes_spec.rb │ │ │ ├── integer_spec.rb │ │ │ ├── nullable_spec.rb │ │ │ ├── numeric_spec.rb │ │ │ ├── password_spec.rb │ │ │ ├── port_range_spec.rb │ │ │ ├── setting_with_deprecated_alias_spec.rb │ │ │ ├── splittable_string_array_spec.rb │ │ │ ├── string_array_spec.rb │ │ │ ├── string_spec.rb │ │ │ ├── time_value_spec.rb │ │ │ └── writable_directory_spec.rb │ │ ├── settings_spec.rb │ │ ├── shutdown_watcher_spec.rb │ │ ├── state_resolver_spec.rb │ │ ├── util │ │ │ ├── accessors_spec.rb │ │ │ ├── buftok_spec.rb │ │ │ ├── byte_value_spec.rb │ │ │ ├── charset_spec.rb │ │ │ ├── cloud_setting_id_spec.rb │ │ │ ├── java_version_spec.rb │ │ │ ├── plugin_version_spec.rb │ │ │ ├── safe_uri_spec.rb │ │ │ ├── secretstore_spec.rb │ │ │ ├── substitution_variables_spec.rb │ │ │ ├── time_value_spec.rb │ │ │ ├── unicode_trimmer_spec.rb │ │ │ ├── wrapped_acked_queue_spec.rb │ │ │ └── wrapped_synchronous_queue_spec.rb │ │ ├── util_spec.rb │ │ └── webserver_spec.rb │ ├── plugin_metadata_spec.rb │ ├── static │ │ └── i18n_spec.rb │ └── support │ │ ├── helpers.rb │ │ ├── matchers.rb │ │ ├── mocks_classes.rb │ │ ├── pipeline │ │ └── pipeline_helpers.rb │ │ ├── shared_contexts.rb │ │ └── shared_examples.rb └── src │ ├── main │ ├── java │ │ ├── co │ │ │ └── elastic │ │ │ │ └── logstash │ │ │ │ └── api │ │ │ │ ├── Codec.java │ │ │ │ ├── Configuration.java │ │ │ │ ├── Context.java │ │ │ │ ├── CounterMetric.java │ │ │ │ ├── DeadLetterQueueWriter.java │ │ │ │ ├── DeprecationLogger.java │ │ │ │ ├── Event.java │ │ │ │ ├── EventFactory.java │ │ │ │ ├── Filter.java │ │ │ │ ├── FilterMatchListener.java │ │ │ │ ├── Input.java │ │ │ │ ├── LogstashPlugin.java │ │ │ │ ├── Metric.java │ │ │ │ ├── NamespacedMetric.java │ │ │ │ ├── Output.java │ │ │ │ ├── Password.java │ │ │ │ ├── Plugin.java │ │ │ │ ├── PluginConfigSpec.java │ │ │ │ ├── PluginHelper.java │ │ │ │ └── TimerMetric.java │ │ └── org │ │ │ └── logstash │ │ │ ├── Accessors.java │ │ │ ├── Cloner.java │ │ │ ├── ConvertedList.java │ │ │ ├── ConvertedMap.java │ │ │ ├── DLQEntry.java │ │ │ ├── Event.java │ │ │ ├── FieldReference.java │ │ │ ├── FileLockFactory.java │ │ │ ├── JavaVersionUtils.java │ │ │ ├── Javafier.java │ │ │ ├── KeyNode.java │ │ │ ├── LockException.java │ │ │ ├── Logstash.java │ │ │ ├── MissingConverterException.java │ │ │ ├── ObjectMappers.java │ │ │ ├── RubyJavaIntegration.java │ │ │ ├── RubyUtil.java │ │ │ ├── Rubyfier.java │ │ │ ├── StringInterpolation.java │ │ │ ├── Timestamp.java │ │ │ ├── Util.java │ │ │ ├── Valuefier.java │ │ │ ├── ackedqueue │ │ │ ├── AckedBatch.java │ │ │ ├── AckedReadBatch.java │ │ │ ├── Batch.java │ │ │ ├── Checkpoint.java │ │ │ ├── Page.java │ │ │ ├── PageFactory.java │ │ │ ├── PqCheck.java │ │ │ ├── PqRepair.java │ │ │ ├── Queue.java │ │ │ ├── QueueExceptionMessages.java │ │ │ ├── QueueFactoryExt.java │ │ │ ├── QueueRuntimeException.java │ │ │ ├── QueueUpgrade.java │ │ │ ├── Queueable.java │ │ │ ├── SequencedList.java │ │ │ ├── Settings.java │ │ │ ├── SettingsImpl.java │ │ │ ├── ext │ │ │ │ ├── JRubyAckedQueueExt.java │ │ │ │ └── JRubyWrappedAckedQueueExt.java │ │ │ └── io │ │ │ │ ├── ByteBufferCleaner.java │ │ │ │ ├── ByteBufferCleanerImpl.java │ │ │ │ ├── CheckpointIO.java │ │ │ │ ├── FileCheckpointIO.java │ │ │ │ ├── IntVector.java │ │ │ │ ├── LongVector.java │ │ │ │ ├── MmapPageIOV1.java │ │ │ │ ├── MmapPageIOV2.java │ │ │ │ └── PageIO.java │ │ │ ├── common │ │ │ ├── AbstractDeadLetterQueueWriterExt.java │ │ │ ├── BufferedTokenizerExt.java │ │ │ ├── DLQWriterAdapter.java │ │ │ ├── DeadLetterQueueFactory.java │ │ │ ├── EnvironmentVariableProvider.java │ │ │ ├── FsUtil.java │ │ │ ├── IncompleteSourceWithMetadataException.java │ │ │ ├── LsQueueUtils.java │ │ │ ├── NullDeadLetterQueueWriter.java │ │ │ ├── SettingKeyDefinitions.java │ │ │ ├── SourceWithMetadata.java │ │ │ ├── Util.java │ │ │ └── io │ │ │ │ ├── DeadLetterQueueReader.java │ │ │ │ ├── DeadLetterQueueUtils.java │ │ │ │ ├── DeadLetterQueueWriter.java │ │ │ │ ├── QueueStorageType.java │ │ │ │ ├── RecordHeader.java │ │ │ │ ├── RecordIOReader.java │ │ │ │ ├── RecordIOWriter.java │ │ │ │ ├── RecordType.java │ │ │ │ └── SegmentListener.java │ │ │ ├── config │ │ │ └── ir │ │ │ │ ├── BaseSourceComponent.java │ │ │ │ ├── CompiledPipeline.java │ │ │ │ ├── ConfigCompiler.java │ │ │ │ ├── DSL.java │ │ │ │ ├── Hashable.java │ │ │ │ ├── HashableWithSource.java │ │ │ │ ├── InvalidIRException.java │ │ │ │ ├── PipelineConfig.java │ │ │ │ ├── PipelineIR.java │ │ │ │ ├── PluginDefinition.java │ │ │ │ ├── SourceComponent.java │ │ │ │ ├── compiler │ │ │ │ ├── AbstractFilterDelegatorExt.java │ │ │ │ ├── AbstractOutputDelegatorExt.java │ │ │ │ ├── BaseDataset.java │ │ │ │ ├── ClassFields.java │ │ │ │ ├── Closure.java │ │ │ │ ├── CommonActions.java │ │ │ │ ├── ComputeStepSyntaxElement.java │ │ │ │ ├── ConditionalEvaluationError.java │ │ │ │ ├── Dataset.java │ │ │ │ ├── DatasetCompiler.java │ │ │ │ ├── EventCondition.java │ │ │ │ ├── FieldDeclarationGroup.java │ │ │ │ ├── FieldDefinition.java │ │ │ │ ├── FilterDelegatorExt.java │ │ │ │ ├── JavaCodecDelegator.java │ │ │ │ ├── JavaFilterDelegatorExt.java │ │ │ │ ├── JavaInputDelegatorExt.java │ │ │ │ ├── JavaOutputDelegatorExt.java │ │ │ │ ├── MethodLevelSyntaxElement.java │ │ │ │ ├── MethodSyntaxElement.java │ │ │ │ ├── OutputDelegatorExt.java │ │ │ │ ├── OutputStrategyExt.java │ │ │ │ ├── RubyIntegration.java │ │ │ │ ├── SplitDataset.java │ │ │ │ ├── SyntaxElement.java │ │ │ │ ├── SyntaxFactory.java │ │ │ │ ├── Utils.java │ │ │ │ ├── ValueSyntaxElement.java │ │ │ │ └── VariableDefinition.java │ │ │ │ ├── expression │ │ │ │ ├── BinaryBooleanExpression.java │ │ │ │ ├── BooleanExpression.java │ │ │ │ ├── EventValueExpression.java │ │ │ │ ├── Expression.java │ │ │ │ ├── ExpressionSubstitution.java │ │ │ │ ├── RegexValueExpression.java │ │ │ │ ├── UnaryBooleanExpression.java │ │ │ │ ├── ValueExpression.java │ │ │ │ ├── binary │ │ │ │ │ ├── And.java │ │ │ │ │ ├── Eq.java │ │ │ │ │ ├── Gt.java │ │ │ │ │ ├── Gte.java │ │ │ │ │ ├── In.java │ │ │ │ │ ├── Lt.java │ │ │ │ │ ├── Lte.java │ │ │ │ │ ├── Neq.java │ │ │ │ │ ├── Or.java │ │ │ │ │ └── RegexEq.java │ │ │ │ └── unary │ │ │ │ │ ├── Not.java │ │ │ │ │ └── Truthy.java │ │ │ │ ├── graph │ │ │ │ ├── BooleanEdge.java │ │ │ │ ├── Edge.java │ │ │ │ ├── Graph.java │ │ │ │ ├── IfVertex.java │ │ │ │ ├── PlainEdge.java │ │ │ │ ├── PluginVertex.java │ │ │ │ ├── QueueVertex.java │ │ │ │ ├── SeparatorVertex.java │ │ │ │ ├── Vertex.java │ │ │ │ └── algorithms │ │ │ │ │ ├── BreadthFirst.java │ │ │ │ │ ├── DepthFirst.java │ │ │ │ │ ├── GraphDiff.java │ │ │ │ │ └── TopologicalSort.java │ │ │ │ └── imperative │ │ │ │ ├── ComposedParallelStatement.java │ │ │ │ ├── ComposedSequenceStatement.java │ │ │ │ ├── ComposedStatement.java │ │ │ │ ├── IfStatement.java │ │ │ │ ├── NoopStatement.java │ │ │ │ ├── PluginStatement.java │ │ │ │ └── Statement.java │ │ │ ├── execution │ │ │ ├── AbortedBatchException.java │ │ │ ├── AbstractPipelineExt.java │ │ │ ├── AbstractWrappedQueueExt.java │ │ │ ├── ConvergeResultExt.java │ │ │ ├── EventDispatcherExt.java │ │ │ ├── ExecutionContextExt.java │ │ │ ├── MemoryReadBatch.java │ │ │ ├── ObservedExecution.java │ │ │ ├── PeriodicFlush.java │ │ │ ├── PipelineReporterExt.java │ │ │ ├── QueueBatch.java │ │ │ ├── QueueReadClient.java │ │ │ ├── QueueReadClientBase.java │ │ │ ├── ShutdownWatcherExt.java │ │ │ ├── WorkerLoop.java │ │ │ ├── WorkerObserver.java │ │ │ └── queue │ │ │ │ └── QueueWriter.java │ │ │ ├── ext │ │ │ ├── JRubyAbstractQueueWriteClientExt.java │ │ │ ├── JRubyLogstashErrorsExt.java │ │ │ ├── JRubyWrappedWriteClientExt.java │ │ │ ├── JrubyAckedReadClientExt.java │ │ │ ├── JrubyAckedWriteClientExt.java │ │ │ ├── JrubyEventExtLibrary.java │ │ │ ├── JrubyMemoryReadClientExt.java │ │ │ ├── JrubyMemoryWriteClientExt.java │ │ │ ├── JrubyTimestampExtLibrary.java │ │ │ └── JrubyWrappedSynchronousQueueExt.java │ │ │ ├── health │ │ │ ├── ApiHealthReport.java │ │ │ ├── Diagnosis.java │ │ │ ├── HealthObserver.java │ │ │ ├── HelpUrl.java │ │ │ ├── Impact.java │ │ │ ├── ImpactArea.java │ │ │ ├── Indicator.java │ │ │ ├── MultiIndicator.java │ │ │ ├── PipelineIndicator.java │ │ │ ├── Probe.java │ │ │ ├── ProbeIndicator.java │ │ │ ├── ReportContext.java │ │ │ └── Status.java │ │ │ ├── instrument │ │ │ ├── metrics │ │ │ │ ├── AbstractMetric.java │ │ │ │ ├── AbstractMetricExt.java │ │ │ │ ├── AbstractNamespacedMetricExt.java │ │ │ │ ├── AbstractSimpleMetricExt.java │ │ │ │ ├── BaseFlowMetric.java │ │ │ │ ├── ExtendedFlowMetric.java │ │ │ │ ├── FlowCapture.java │ │ │ │ ├── FlowMetric.java │ │ │ │ ├── FlowMetricRetentionPolicy.java │ │ │ │ ├── LazyInstantiatedFlowMetric.java │ │ │ │ ├── Metric.java │ │ │ │ ├── MetricExt.java │ │ │ │ ├── MetricKeys.java │ │ │ │ ├── MetricType.java │ │ │ │ ├── NamespacedMetricExt.java │ │ │ │ ├── NullMetricExt.java │ │ │ │ ├── NullNamespacedMetricExt.java │ │ │ │ ├── SimpleFlowMetric.java │ │ │ │ ├── SnapshotExt.java │ │ │ │ ├── UpScaledMetric.java │ │ │ │ ├── UptimeMetric.java │ │ │ │ ├── counter │ │ │ │ │ ├── CounterMetric.java │ │ │ │ │ └── LongCounter.java │ │ │ │ ├── gauge │ │ │ │ │ ├── AbstractGaugeMetric.java │ │ │ │ │ ├── BooleanGauge.java │ │ │ │ │ ├── GaugeMetric.java │ │ │ │ │ ├── LazyDelegatingGauge.java │ │ │ │ │ ├── NumberGauge.java │ │ │ │ │ ├── RubyHashGauge.java │ │ │ │ │ ├── RubyTimeStampGauge.java │ │ │ │ │ ├── TextGauge.java │ │ │ │ │ └── UnknownGauge.java │ │ │ │ └── timer │ │ │ │ │ ├── ConcurrentLiveTimerMetric.java │ │ │ │ │ ├── NullTimerMetric.java │ │ │ │ │ ├── TimerMetric.java │ │ │ │ │ ├── TimerMetricFactory.java │ │ │ │ │ └── Util.java │ │ │ ├── monitors │ │ │ │ ├── HotThreadsMonitor.java │ │ │ │ ├── MemoryMonitor.java │ │ │ │ ├── ProcessMonitor.java │ │ │ │ └── SystemMonitor.java │ │ │ └── reports │ │ │ │ ├── MemoryReport.java │ │ │ │ ├── ProcessReport.java │ │ │ │ └── ThreadsReport.java │ │ │ ├── jackson │ │ │ └── StreamReadConstraintsUtil.java │ │ │ ├── log │ │ │ ├── CustomLogEvent.java │ │ │ ├── CustomLogEventSerializer.java │ │ │ ├── DefaultDeprecationLogger.java │ │ │ ├── DeprecationLoggerExt.java │ │ │ ├── LoggableExt.java │ │ │ ├── LoggerExt.java │ │ │ ├── LogstashConfigurationFactory.java │ │ │ ├── LogstashLogEventFactory.java │ │ │ ├── LogstashLoggerContextFactory.java │ │ │ ├── LogstashMessageFactory.java │ │ │ ├── PipelineRoutingAppender.java │ │ │ ├── PipelineRoutingFilter.java │ │ │ ├── RubyBasicObjectSerializer.java │ │ │ ├── SlowLoggerExt.java │ │ │ └── StructuredMessage.java │ │ │ ├── plugins │ │ │ ├── AliasRegistry.java │ │ │ ├── BasicEventFactory.java │ │ │ ├── ConfigVariableExpander.java │ │ │ ├── ConfigurationImpl.java │ │ │ ├── ContextImpl.java │ │ │ ├── CounterMetricImpl.java │ │ │ ├── HooksRegistryExt.java │ │ │ ├── NamespacedMetricImpl.java │ │ │ ├── PluginClassLoader.java │ │ │ ├── PluginLookup.java │ │ │ ├── PluginUtil.java │ │ │ ├── PluginValidator.java │ │ │ ├── RootMetricImpl.java │ │ │ ├── UniversalPluginExt.java │ │ │ ├── aliases │ │ │ │ ├── AliasDocumentReplace.java │ │ │ │ └── AliasPlugin.java │ │ │ ├── codecs │ │ │ │ ├── Dots.java │ │ │ │ ├── Line.java │ │ │ │ └── Plain.java │ │ │ ├── discovery │ │ │ │ └── PluginRegistry.java │ │ │ ├── factory │ │ │ │ ├── AbstractPluginCreator.java │ │ │ │ ├── CodecPluginCreator.java │ │ │ │ ├── ContextualizerExt.java │ │ │ │ ├── ExecutionContextFactoryExt.java │ │ │ │ ├── FilterPluginCreator.java │ │ │ │ ├── InputPluginCreator.java │ │ │ │ ├── OutputPluginCreator.java │ │ │ │ ├── PluginFactoryExt.java │ │ │ │ ├── PluginMetricsFactoryExt.java │ │ │ │ └── RubyCodecDelegator.java │ │ │ ├── filters │ │ │ │ └── Uuid.java │ │ │ ├── inputs │ │ │ │ ├── Generator.java │ │ │ │ └── Stdin.java │ │ │ ├── outputs │ │ │ │ ├── Sink.java │ │ │ │ └── Stdout.java │ │ │ └── pipeline │ │ │ │ ├── AbstractPipelineBus.java │ │ │ │ ├── AddressState.java │ │ │ │ ├── PipelineBus.java │ │ │ │ ├── PipelineBusV2.java │ │ │ │ ├── PipelineInput.java │ │ │ │ ├── PipelineOutput.java │ │ │ │ └── ReceiveResponse.java │ │ │ ├── secret │ │ │ ├── SecretIdentifier.java │ │ │ ├── SecretVariable.java │ │ │ ├── cli │ │ │ │ ├── SecretStoreCli.java │ │ │ │ └── Terminal.java │ │ │ ├── password │ │ │ │ ├── DigitValidator.java │ │ │ │ ├── EmptyStringValidator.java │ │ │ │ ├── LengthValidator.java │ │ │ │ ├── LowerCaseValidator.java │ │ │ │ ├── PasswordParamConverter.java │ │ │ │ ├── PasswordPolicyParam.java │ │ │ │ ├── PasswordPolicyType.java │ │ │ │ ├── PasswordValidator.java │ │ │ │ ├── SymbolValidator.java │ │ │ │ ├── UpperCaseValidator.java │ │ │ │ └── Validator.java │ │ │ └── store │ │ │ │ ├── SecretStore.java │ │ │ │ ├── SecretStoreException.java │ │ │ │ ├── SecretStoreExt.java │ │ │ │ ├── SecretStoreFactory.java │ │ │ │ ├── SecretStoreUtil.java │ │ │ │ ├── SecureConfig.java │ │ │ │ └── backend │ │ │ │ └── JavaKeyStore.java │ │ │ ├── settings │ │ │ ├── BaseSetting.java │ │ │ ├── Boolean.java │ │ │ ├── Coercible.java │ │ │ ├── DeprecatedAlias.java │ │ │ ├── NullableSetting.java │ │ │ ├── Setting.java │ │ │ ├── SettingDelegator.java │ │ │ ├── SettingNullableString.java │ │ │ ├── SettingNumeric.java │ │ │ ├── SettingString.java │ │ │ └── SettingWithDeprecatedAlias.java │ │ │ └── util │ │ │ ├── CATrustedFingerprintTrustStrategy.java │ │ │ ├── CheckedSupplier.java │ │ │ ├── CloudSettingAuth.java │ │ │ ├── CloudSettingId.java │ │ │ ├── EscapeHandler.java │ │ │ ├── ExponentialBackoff.java │ │ │ ├── JavaVersion.java │ │ │ ├── JavaVersionChecker.java │ │ │ ├── SetOnceReference.java │ │ │ ├── TimeValue.java │ │ │ └── UtilExt.java │ └── resources │ │ ├── log4j2.component.properties │ │ ├── log4j2.properties │ │ └── org │ │ └── logstash │ │ └── plugins │ │ └── AliasRegistry.yml │ └── test │ ├── java │ └── org │ │ └── logstash │ │ ├── AccessorsTest.java │ │ ├── ClonerTest.java │ │ ├── ConvertedMapTest.java │ │ ├── DLQEntryTest.java │ │ ├── EventTest.java │ │ ├── FieldReferenceTest.java │ │ ├── FileLockFactoryMain.java │ │ ├── FileLockFactoryTest.java │ │ ├── JavafierTest.java │ │ ├── KeyNodeTest.java │ │ ├── ObjectMappersTest.java │ │ ├── RSpecTests.java │ │ ├── RubyTestBase.java │ │ ├── RubyfierTest.java │ │ ├── StringInterpolationTest.java │ │ ├── TimestampTest.java │ │ ├── ValuefierTest.java │ │ ├── ackedqueue │ │ ├── CheckpointTest.java │ │ ├── HeadPageTest.java │ │ ├── PqRepairTest.java │ │ ├── QueueTest.java │ │ ├── QueueTestHelpers.java │ │ ├── SettingsImplTest.java │ │ ├── StringElement.java │ │ ├── TestSettings.java │ │ └── io │ │ │ ├── FileCheckpointIOTest.java │ │ │ ├── FileMmapIOTest.java │ │ │ ├── IntVectorTest.java │ │ │ ├── LongVectorTest.java │ │ │ └── MmapPageIOTest.java │ │ ├── common │ │ ├── AbstractDeadLetterQueueWriterExtTest.java │ │ ├── BufferedTokenizerExtTest.java │ │ ├── BufferedTokenizerExtWithDelimiterTest.java │ │ ├── BufferedTokenizerExtWithSizeLimitTest.java │ │ ├── ConfigVariableExpanderTest.java │ │ ├── DeadLetterQueueFactoryTest.java │ │ ├── FsUtilTest.java │ │ ├── SourceWithMetadataTest.java │ │ └── io │ │ │ ├── DeadLetterQueueReaderTest.java │ │ │ ├── DeadLetterQueueTestUtils.java │ │ │ ├── DeadLetterQueueWriterAgeRetentionTest.java │ │ │ ├── DeadLetterQueueWriterTest.java │ │ │ ├── RecordIOReaderTest.java │ │ │ └── RecordIOWriterTest.java │ │ ├── config │ │ └── ir │ │ │ ├── CompiledPipelineTest.java │ │ │ ├── ConfigCompilerTest.java │ │ │ ├── EventConditionTest.java │ │ │ ├── IRHelpers.java │ │ │ ├── PipelineConfigTest.java │ │ │ ├── PipelineIRTest.java │ │ │ ├── PipelineTestUtil.java │ │ │ ├── PluginConfigNameMethodDouble.java │ │ │ ├── RubyEnvTestCase.java │ │ │ ├── compiler │ │ │ ├── CommonActionsTest.java │ │ │ ├── DatasetCompilerTest.java │ │ │ ├── FakeOutClass.java │ │ │ ├── JavaCodecDelegatorTest.java │ │ │ ├── OutputDelegatorTest.java │ │ │ └── PluginDelegatorTestCase.java │ │ │ ├── expression │ │ │ └── ExpressionSubstitutionTest.java │ │ │ ├── graph │ │ │ ├── BooleanEdgeTest.java │ │ │ ├── EdgeTest.java │ │ │ ├── GraphTest.java │ │ │ ├── IfVertexTest.java │ │ │ ├── PlainEdgeTest.java │ │ │ ├── PluginVertexTest.java │ │ │ ├── QueueVertexTest.java │ │ │ ├── VertexTest.java │ │ │ └── algorithms │ │ │ │ ├── BreadthFirstTest.java │ │ │ │ ├── DepthFirstTest.java │ │ │ │ ├── GraphDiffTest.java │ │ │ │ └── TopologicalSortTest.java │ │ │ └── imperative │ │ │ ├── DSLTest.java │ │ │ ├── IfStatementTest.java │ │ │ └── ImperativeToGraphtest.java │ │ ├── execution │ │ ├── AbstractPipelineExtTest.java │ │ ├── ObservedExecutionTest.java │ │ └── ShutdownWatcherExtTest.java │ │ ├── ext │ │ ├── JrubyEventExtLibraryTest.java │ │ ├── JrubyMemoryReadClientExtTest.java │ │ ├── JrubyTimestampExtLibraryTest.java │ │ └── TimestampTest.java │ │ ├── health │ │ ├── HealthObserverTest.java │ │ ├── PipelineIndicatorTest.java │ │ ├── ProbeIndicatorTest.java │ │ └── StatusTest.java │ │ ├── instrument │ │ └── metrics │ │ │ ├── ExtendedFlowMetricTest.java │ │ │ ├── ManualAdvanceClock.java │ │ │ ├── MetricExtFactory.java │ │ │ ├── MetricTypeTest.java │ │ │ ├── NullableLongMetric.java │ │ │ ├── SimpleFlowMetricTest.java │ │ │ ├── TestClock.java │ │ │ ├── TestUptimeMetricFactory.java │ │ │ ├── UpScaledMetricTest.java │ │ │ ├── UptimeMetricTest.java │ │ │ ├── counter │ │ │ └── LongCounterTest.java │ │ │ ├── gauge │ │ │ ├── BooleanGaugeTest.java │ │ │ ├── LazyDelegatingGaugeTest.java │ │ │ ├── NumberGaugeTest.java │ │ │ ├── RubyHashGaugeTest.java │ │ │ ├── RubyTimeStampGaugeTest.java │ │ │ ├── TextGaugeTest.java │ │ │ └── UnknownGaugeTest.java │ │ │ └── timer │ │ │ ├── BlockingTask.java │ │ │ ├── ConcurrentLiveTimerMetricTest.java │ │ │ ├── TestTimerMetricFactory.java │ │ │ └── TimerMetricTest.java │ │ ├── instruments │ │ └── monitors │ │ │ ├── HotThreadMonitorTest.java │ │ │ ├── MemoryMonitorTest.java │ │ │ ├── ProcessMonitorTest.java │ │ │ └── SystemMonitorTest.java │ │ ├── jackson │ │ └── StreamReadConstraintsUtilTest.java │ │ ├── log │ │ ├── CustomLogEventTests.java │ │ ├── DefaultDeprecationLoggerTest.java │ │ ├── LogTestUtils.java │ │ ├── LogstashConfigurationFactoryTest.java │ │ ├── LogstashLoggerContextFactoryTest.java │ │ ├── PipelineRoutingAppenderTest.java │ │ ├── PipelineRoutingFilterTest.java │ │ ├── PluginDeprecationLoggerTest.java │ │ ├── RubyBasicObjectSerializerTest.java │ │ ├── SystemPropsSnapshotHelper.java │ │ └── TestingDeprecationPlugin.java │ │ ├── plugins │ │ ├── AliasRegistryTest.java │ │ ├── ConfigurationImplTest.java │ │ ├── CounterMetricImplTest.java │ │ ├── MetricTestCase.java │ │ ├── NamespacedMetricImplTest.java │ │ ├── PluginUtilValidateConfigTest.java │ │ ├── PluginValidatorTest.java │ │ ├── TestContext.java │ │ ├── TestPluginFactory.java │ │ ├── TestingPlugin.java │ │ ├── codecs │ │ │ ├── LineTest.java │ │ │ ├── PlainTest.java │ │ │ └── TestEventConsumer.java │ │ ├── factory │ │ │ └── PluginFactoryExtTest.java │ │ ├── filters │ │ │ └── UuidTest.java │ │ ├── inputs │ │ │ └── StdinTest.java │ │ ├── outputs │ │ │ └── StdoutTest.java │ │ └── pipeline │ │ │ └── PipelineBusTest.java │ │ ├── secret │ │ ├── SecretIdentifierTest.java │ │ ├── cli │ │ │ └── SecretStoreCliTest.java │ │ ├── password │ │ │ ├── DigitValidatorTest.java │ │ │ ├── EmptyStringValidatorTest.java │ │ │ ├── LengthValidatorTest.java │ │ │ ├── LowerCaseValidatorTest.java │ │ │ ├── PasswordParamConverterTest.java │ │ │ ├── PasswordValidatorTest.java │ │ │ ├── SymbolValidatorTest.java │ │ │ └── UpperCaseValidatorTest.java │ │ └── store │ │ │ ├── SecretStoreFactoryTest.java │ │ │ ├── SecretStoreUtilTest.java │ │ │ ├── SecureConfigTest.java │ │ │ └── backend │ │ │ └── JavaKeyStoreTest.java │ │ ├── settings │ │ ├── BooleanTest.java │ │ ├── SettingNullableStringTest.java │ │ ├── SettingNumericTest.java │ │ └── SettingStringTest.java │ │ └── util │ │ ├── CATrustedFingerprintTrustStrategyTest.java │ │ ├── CloudSettingAuthTest.java │ │ ├── CloudSettingIdTest.java │ │ ├── ExponentialBackoffTest.java │ │ └── SetOnceReferenceTest.java │ └── resources │ ├── log4j-list.properties │ ├── log4j-pipeline-routing.xml │ ├── log4j2-log-deprecation-test.properties │ ├── log4j2-log-pipeline-test.properties │ ├── log4j2-log-stream-read-constraints.xml │ ├── log4j2-test1.xml │ ├── log4j2.properties │ ├── logstash.keystore.with.default.pass │ ├── logstash.keystore.with.defined.pass │ ├── not.a.logstash.keystore │ ├── org │ └── logstash │ │ ├── ackedqueue │ │ └── io │ │ │ └── checkpoint.head │ │ ├── common │ │ └── io │ │ │ └── 1.log │ │ ├── config │ │ └── ir │ │ │ ├── cache │ │ │ ├── pipeline1.conf │ │ │ ├── pipeline2.conf │ │ │ ├── pipeline_reuse_baseline.conf │ │ │ └── pipeline_reuse_test.conf │ │ │ └── complex.cfg │ │ ├── plugins │ │ ├── AliasRegistry.yml │ │ └── logstash-input-java_input_example-1.0.3.jar │ │ └── util │ │ └── x509_certificates │ │ ├── generate.sh │ │ ├── generated │ │ ├── GENERATED_AT │ │ ├── README.txt │ │ ├── intermediate-ca.crt │ │ ├── intermediate-ca.der.sha256 │ │ ├── intermediate-ca.key │ │ ├── root.crt │ │ ├── root.der.sha256 │ │ ├── root.key │ │ ├── server_from_intermediate.chain.crt │ │ ├── server_from_intermediate.crt │ │ ├── server_from_intermediate.der.sha256 │ │ ├── server_from_intermediate.key │ │ ├── server_from_root.chain.crt │ │ ├── server_from_root.crt │ │ ├── server_from_root.der.sha256 │ │ └── server_from_root.key │ │ └── openssl.cnf │ └── shutdown_watcher_ext_pipeline_template.rb ├── pkg ├── centos │ ├── after-install.sh │ ├── before-install.sh │ └── before-remove.sh ├── debian │ ├── after-install.sh │ ├── before-install.sh │ └── before-remove.sh ├── logrotate.conf ├── pipelines.yml ├── service_templates │ ├── systemd │ │ └── lib │ │ │ └── systemd │ │ │ └── system │ │ │ └── logstash.service │ └── sysv │ │ └── etc │ │ ├── default │ │ └── logstash │ │ └── init.d │ │ └── logstash └── ubuntu │ ├── after-install.sh │ ├── before-install.sh │ └── before-remove.sh ├── qa ├── .gitignore ├── .rspec ├── Gemfile ├── README.md ├── Rakefile ├── acceptance │ ├── helpers.rb │ └── spec │ │ ├── lib │ │ ├── artifact_composition_spec.rb │ │ ├── artifact_operation_spec.rb │ │ └── cli_operation_spec.rb │ │ ├── shared_examples │ │ ├── cli │ │ │ ├── logstash-plugin │ │ │ │ ├── generate.rb │ │ │ │ ├── install.rb │ │ │ │ ├── integration_plugin.rb │ │ │ │ ├── list.rb │ │ │ │ ├── remove.rb │ │ │ │ ├── uninstall.rb │ │ │ │ └── update.rb │ │ │ └── logstash │ │ │ │ └── version.rb │ │ ├── installed.rb │ │ ├── installed_with_jdk.rb │ │ ├── running.rb │ │ └── updated.rb │ │ └── spec_helper.rb ├── docker │ ├── fixtures │ │ ├── custom_logstash_yml │ │ │ └── logstash.yml │ │ ├── multiple_pipelines │ │ │ ├── config │ │ │ │ └── pipelines.yml │ │ │ └── pipelines │ │ │ │ ├── basic1.cfg │ │ │ │ └── basic2.cfg │ │ └── simple_pipeline │ │ │ └── basic.cfg │ ├── patches │ │ └── excon │ │ │ └── unix_socket.rb │ ├── shared_examples │ │ ├── container.rb │ │ ├── container_config.rb │ │ ├── container_options.rb │ │ ├── image_metadata.rb │ │ └── xpack.rb │ └── spec │ │ ├── full │ │ ├── container_spec.rb │ │ └── image_spec.rb │ │ ├── oss │ │ ├── container_spec.rb │ │ └── image_spec.rb │ │ ├── spec_helper.rb │ │ └── wolfi │ │ ├── container_spec.rb │ │ └── image_spec.rb ├── integration │ ├── .gitignore │ ├── .rspec │ ├── Gemfile │ ├── README.md │ ├── build.gradle │ ├── fixtures │ │ ├── 01_logstash_bin_smoke_spec.yml │ │ ├── beats_input_spec.yml │ │ ├── command_line_spec.yml │ │ ├── deprecation_log_spec.yml │ │ ├── direct_heap_allocator_flag_spec.yml │ │ ├── dlq_spec.yml │ │ ├── env_variables_condition_spec.yml │ │ ├── env_variables_config_spec.yml │ │ ├── es_output_how_spec.yml │ │ ├── fatal_error_spec.yml │ │ ├── how_sample.input │ │ ├── http_proxy_install_spec.yml │ │ ├── install_java_plugin_spec.yml │ │ ├── install_spec.yml │ │ ├── java_api_spec.yml │ │ ├── kafka_input_spec.yml │ │ ├── keystore_spec.yml │ │ ├── list_spec.yml │ │ ├── logstash-dummy-pack │ │ │ ├── .gitignore │ │ │ ├── Gemfile │ │ │ ├── Rakefile │ │ │ ├── bundle.sh │ │ │ ├── lib │ │ │ │ └── logstash │ │ │ │ │ └── outputs │ │ │ │ │ └── secret.rb │ │ │ ├── logstash-dummy-pack.zip │ │ │ ├── logstash-output-secret.gemspec │ │ │ └── spec │ │ │ │ └── outputs │ │ │ │ └── secret_spec.rb │ │ ├── logstash-filter-qatest-0.1.1.gem │ │ ├── logstash.keystore │ │ ├── logstash_to_logstash_spec.yml │ │ ├── mixed_codec_spec.yml │ │ ├── monitoring_api_spec.yml │ │ ├── multiple_pipeline_spec.yml │ │ ├── offline_wrapper │ │ │ ├── .gitignore │ │ │ ├── Makefile │ │ │ ├── README.md │ │ │ └── offline.c │ │ ├── persistent_queues │ │ │ ├── log4j2.properties │ │ │ └── logstash.yml │ │ ├── pipeline_log_spec.yml │ │ ├── plugin_name_log_spec.yml │ │ ├── plugins │ │ │ ├── .gitignore │ │ │ ├── generate-gems.sh │ │ │ ├── logstash-filter-four_depends_on_one_and_three.gemspec │ │ │ ├── logstash-filter-one_no_dependencies.gemspec │ │ │ ├── logstash-filter-three_no_dependencies.gemspec │ │ │ ├── logstash-filter-two_depends_on_one.gemspec │ │ │ └── logstash-filter-zero_no_dependencies.gemspec │ │ ├── prepare_offline_pack_spec.yml │ │ ├── reload_config_spec.yml │ │ ├── remove_spec.yml │ │ ├── reserved_tags_field_spec.yml │ │ ├── secret_store_spec.yml │ │ ├── settings_spec.yml │ │ ├── slowlog_spec.yml │ │ ├── update_spec.yml │ │ └── webserver_certs │ │ │ ├── generate.sh │ │ │ ├── generated │ │ │ ├── README.txt │ │ │ ├── intermediate-ca.crt │ │ │ ├── intermediate-ca.key │ │ │ ├── root.crt │ │ │ ├── root.key │ │ │ ├── server_from_intermediate.chain.crt │ │ │ ├── server_from_intermediate.crt │ │ │ ├── server_from_intermediate.jks │ │ │ ├── server_from_intermediate.key │ │ │ ├── server_from_intermediate.p12 │ │ │ ├── server_from_root.chain.crt │ │ │ ├── server_from_root.crt │ │ │ ├── server_from_root.jks │ │ │ ├── server_from_root.key │ │ │ └── server_from_root.p12 │ │ │ └── openssl.cnf │ ├── framework │ │ ├── fixture.rb │ │ ├── helpers.rb │ │ └── settings.rb │ ├── gradle.properties │ ├── integration_tests.gemspec │ ├── logstash.keystore │ ├── rspec.rb │ ├── services │ │ ├── elasticsearch_service.rb │ │ ├── elasticsearch_setup.sh │ │ ├── elasticsearch_teardown.sh │ │ ├── filebeat_service.rb │ │ ├── filebeat_setup.sh │ │ ├── helpers.sh │ │ ├── http_proxy_service.rb │ │ ├── http_proxy_setup.sh │ │ ├── http_proxy_teardown.sh │ │ ├── kafka_service.rb │ │ ├── kafka_setup.sh │ │ ├── kafka_teardown.sh │ │ ├── logstash_service.rb │ │ ├── monitoring_api.rb │ │ ├── service.rb │ │ └── service_locator.rb │ ├── settings.gradle │ ├── specs │ │ ├── 01_logstash_bin_smoke_spec.rb │ │ ├── beats_input_spec.rb │ │ ├── cli │ │ │ ├── http_proxy_install_spec.rb │ │ │ ├── install_spec.rb │ │ │ ├── keystore_spec.rb │ │ │ ├── list_spec.rb │ │ │ ├── pluginmanager_spec_helper.rb │ │ │ ├── prepare_offline_pack_spec.rb │ │ │ ├── remove_spec.rb │ │ │ └── update_spec.rb │ │ ├── command_line_spec.rb │ │ ├── deprecation_log_spec.rb │ │ ├── direct_heap_allocator_flag_spec.rb │ │ ├── dlq_spec.rb │ │ ├── env_variables_condition_spec.rb │ │ ├── env_variables_config_spec.rb │ │ ├── es_output_how_spec.rb │ │ ├── fatal_error_spec.rb │ │ ├── install_java_plugin_spec.rb │ │ ├── java_api_spec.rb │ │ ├── kafka_input_spec.rb │ │ ├── logstash_to_logstash_spec.rb │ │ ├── mixed_codec_spec.rb │ │ ├── monitoring_api_spec.rb │ │ ├── multiple_pipeline_spec.rb │ │ ├── pipeline_log_spec.rb │ │ ├── plugin_name_log_spec.rb │ │ ├── reload_config_spec.rb │ │ ├── reserved_tags_field_spec.rb │ │ ├── secret_store_spec.rb │ │ ├── settings_spec.rb │ │ ├── slowlog_spec.rb │ │ ├── spec_helper.rb │ │ └── webserver_spec.rb │ ├── src │ │ └── test │ │ │ └── java │ │ │ └── org │ │ │ └── logstash │ │ │ └── integration │ │ │ └── RSpecTests.java │ └── suite.yml ├── rspec │ ├── commands.rb │ ├── commands │ │ ├── base.rb │ │ ├── centos │ │ │ └── centos-6.rb │ │ ├── debian.rb │ │ ├── oel │ │ │ └── oel-6.rb │ │ ├── opensuse.rb │ │ ├── redhat.rb │ │ ├── suse.rb │ │ ├── suse │ │ │ └── sles-11.rb │ │ ├── system_helpers.rb │ │ └── ubuntu.rb │ ├── matchers.rb │ └── matchers │ │ ├── be_installed.rb │ │ ├── be_running.rb │ │ └── cli_matchers.rb ├── scripts │ └── windows │ │ ├── acceptance │ │ ├── logstash_release_acceptance.ps1 │ │ └── logstash_release_default_plugins.ps1 │ │ ├── event_log │ │ └── logstash_event_log_plugin_integration.ps1 │ │ └── integration │ │ └── logstash_simple_integration.ps1 └── support │ ├── logstash-filter-qatest │ ├── logstash-filter-qatest-0.1.1.gem │ ├── logstash-filter-qatest-newer.gemspec │ └── logstash-filter-qatest-old.gemspec │ └── logstash-integration-failure_injector │ ├── README.md │ ├── lib │ └── logstash │ │ ├── filters │ │ └── failure_injector.rb │ │ ├── outputs │ │ └── failure_injector.rb │ │ └── utils │ │ └── failure_injector_util.rb │ ├── logstash-integration-failure_injector-0.0.1.gem │ ├── logstash-integration-failure_injector.gemspec │ └── spec │ └── unit │ └── failure_injector_spec.rb ├── rakelib ├── artifacts.rake ├── bootstrap.rake ├── build.rake ├── compile.rake ├── default_plugins.rb ├── docs.rake ├── gems.rake ├── lint.rake ├── plugin.rake ├── plugins-metadata.json ├── plugins_docs_dependencies.rake ├── test.rake ├── vendor.rake ├── version.rake └── z_rubycheck.rake ├── rubyUtils.gradle ├── settings.gradle ├── sonar-project.properties ├── spec ├── README.md ├── bootstrap │ └── environment_spec.rb ├── compliance │ └── license_spec.rb ├── fixtures │ └── dummy.gemspec ├── spec_helper.rb ├── support │ ├── lscl_configs │ │ ├── apache_logstash.conf │ │ ├── nginx_json_logstash.conf │ │ ├── nginx_logstash.conf │ │ ├── nyc_collision_logstash.conf │ │ ├── twitter_logstash.conf │ │ └── usfec_logstash.conf │ ├── pack │ │ ├── empty-pack.zip │ │ ├── valid-pack.zip │ │ └── valid-pack │ │ │ └── logstash │ │ │ └── valid-pack │ │ │ ├── dependencies │ │ │ ├── logstash-input-packtestdep-0.0.1.gem │ │ │ └── logstash-input-packtestdep.gemspec │ │ │ ├── logstash-input-packtest-0.0.1.gem │ │ │ ├── logstash-input-packtest.gemspec │ │ │ ├── logstash-input-packtest_pim-0.0.1.gem │ │ │ └── logstash-input-packtest_pim.gemspec │ └── resource_dsl_methods.rb └── unit │ ├── bootstrap │ └── bundler_spec.rb │ ├── plugin_manager │ ├── gem_installer_spec.rb │ ├── gemfile_spec.rb │ ├── install_spec.rb │ ├── install_strategy_factory_spec.rb │ ├── offline_plugin_packager_spec.rb │ ├── pack_fetch_strategy │ │ ├── repository_spec.rb │ │ └── uri_spec.rb │ ├── pack_installer │ │ ├── local_spec.rb │ │ ├── pack_spec.rb │ │ └── remote_spec.rb │ ├── prepare_offline_pack_spec.rb │ ├── proxy_support_spec.rb │ ├── ui_spec.rb │ ├── update_spec.rb │ ├── util_spec.rb │ └── utils │ │ ├── downloader_spec.rb │ │ └── http_client_spec.rb │ └── util │ └── compress_spec.rb ├── tools ├── benchmark-cli │ ├── README.md │ ├── build.gradle │ ├── gradle.properties │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── logstash │ │ │ │ └── benchmark │ │ │ │ └── cli │ │ │ │ ├── BenchmarkMeta.java │ │ │ │ ├── DataStore.java │ │ │ │ ├── JRubyInstallation.java │ │ │ │ ├── LogstashInstallation.java │ │ │ │ ├── LsBenchSettings.java │ │ │ │ ├── LsMetricsMonitor.java │ │ │ │ ├── Main.java │ │ │ │ ├── cases │ │ │ │ ├── ApacheLogsComplex.java │ │ │ │ ├── Case.java │ │ │ │ ├── CustomTestCase.java │ │ │ │ └── GeneratorToStdout.java │ │ │ │ ├── ui │ │ │ │ ├── LsMetricStats.java │ │ │ │ ├── LsVersionType.java │ │ │ │ ├── UserInput.java │ │ │ │ └── UserOutput.java │ │ │ │ └── util │ │ │ │ ├── LsBenchCompressUtil.java │ │ │ │ ├── LsBenchDownloader.java │ │ │ │ ├── LsBenchFileUtil.java │ │ │ │ ├── LsBenchJsonUtil.java │ │ │ │ └── LsBenchLsSetup.java │ │ └── resources │ │ │ └── org │ │ │ └── logstash │ │ │ └── benchmark │ │ │ └── cli │ │ │ ├── cases │ │ │ └── apache.cfg │ │ │ └── ls-benchmark.properties │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── logstash │ │ │ └── benchmark │ │ │ └── cli │ │ │ ├── LsMetricsMonitorTest.java │ │ │ ├── MainEsStorageTest.java │ │ │ └── MainTest.java │ │ └── resources │ │ └── org │ │ └── logstash │ │ └── benchmark │ │ └── cli │ │ └── metrics.json ├── dependencies-report │ ├── README.md │ ├── build.gradle │ ├── gradle.properties │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── logstash │ │ │ │ └── dependencies │ │ │ │ ├── Dependency.java │ │ │ │ ├── Main.java │ │ │ │ └── ReportGenerator.java │ │ └── resources │ │ │ ├── acceptableLicenses.csv │ │ │ ├── licenseMapping.csv │ │ │ └── notices │ │ │ ├── Red Hat Universal Base Image minimal-NOTICE.txt │ │ │ ├── addressable-NOTICE.txt │ │ │ ├── amazing_print-NOTICE.txt │ │ │ ├── atomic-NOTICE.txt │ │ │ ├── avl_tree-NOTICE.txt │ │ │ ├── avro-NOTICE.txt │ │ │ ├── awesome_print-NOTICE.txt │ │ │ ├── aws-eventstream-NOTICE.txt │ │ │ ├── aws-partitions-NOTICE.txt │ │ │ ├── aws-sdk-cloudfront-NOTICE.txt │ │ │ ├── aws-sdk-cloudwatch-NOTICE.txt │ │ │ ├── aws-sdk-core-NOTICE.txt │ │ │ ├── aws-sdk-kms-NOTICE.txt │ │ │ ├── aws-sdk-resourcegroups-NOTICE.txt │ │ │ ├── aws-sdk-s3-NOTICE.txt │ │ │ ├── aws-sdk-sns-NOTICE.txt │ │ │ ├── aws-sdk-sqs-NOTICE.txt │ │ │ ├── aws-sigv4-NOTICE.txt │ │ │ ├── back_pressure-NOTICE.txt │ │ │ ├── base64-NOTICE.txt │ │ │ ├── bigdecimal-NOTICE.txt │ │ │ ├── bindata-NOTICE.txt │ │ │ ├── buftok-NOTICE.txt │ │ │ ├── builder-NOTICE.txt │ │ │ ├── bundler-NOTICE.txt │ │ │ ├── cabin-NOTICE.txt │ │ │ ├── cgi-NOTICE.txt │ │ │ ├── clamp-NOTICE.txt │ │ │ ├── coderay-NOTICE.txt │ │ │ ├── com.fasterxml.jackson.core!jackson-annotations-NOTICE.txt │ │ │ ├── com.fasterxml.jackson.core!jackson-core-NOTICE.txt │ │ │ ├── com.fasterxml.jackson.core!jackson-databind-NOTICE.txt │ │ │ ├── com.fasterxml.jackson.dataformat!jackson-dataformat-cbor-NOTICE.txt │ │ │ ├── com.fasterxml.jackson.dataformat!jackson-dataformat-yaml-NOTICE.txt │ │ │ ├── com.fasterxml.jackson.module!jackson-module-afterburner-NOTICE.txt │ │ │ ├── com.google.code.findbugs!jsr305-NOTICE.txt │ │ │ ├── com.google.errorprone!error_prone_annotations-NOTICE.txt │ │ │ ├── com.google.googlejavaformat!google-java-format-NOTICE.txt │ │ │ ├── com.google.guava!guava-NOTICE.txt │ │ │ ├── com.google.j2objc!j2objc-annotations-NOTICE.txt │ │ │ ├── commons-codec!commons-codec-NOTICE.txt │ │ │ ├── commons-logging!commons-logging-NOTICE.txt │ │ │ ├── concurrent-ruby-NOTICE.txt │ │ │ ├── csv-NOTICE.txt │ │ │ ├── dalli-NOTICE.txt │ │ │ ├── date-NOTICE.txt │ │ │ ├── diff-lcs-NOTICE.txt │ │ │ ├── domain_name-NOTICE.txt │ │ │ ├── dotenv-NOTICE.txt │ │ │ ├── down-NOTICE.txt │ │ │ ├── e2mmap-NOTICE.txt │ │ │ ├── edn-NOTICE.txt │ │ │ ├── elastic-app-search-NOTICE.txt │ │ │ ├── elastic-enterprise-search-NOTICE.txt │ │ │ ├── elastic-transport-NOTICE.txt │ │ │ ├── elastic-workplace-search-NOTICE.txt │ │ │ ├── elasticsearch-NOTICE.txt │ │ │ ├── elasticsearch-api-NOTICE.txt │ │ │ ├── elasticsearch-transport-NOTICE.txt │ │ │ ├── equalizer-NOTICE.txt │ │ │ ├── et-orbi-NOTICE.txt │ │ │ ├── faraday-NOTICE.txt │ │ │ ├── faraday-em_http-NOTICE.txt │ │ │ ├── faraday-em_synchrony-NOTICE.txt │ │ │ ├── faraday-excon-NOTICE.txt │ │ │ ├── faraday-httpclient-NOTICE.txt │ │ │ ├── faraday-multipart-NOTICE.txt │ │ │ ├── faraday-net_http-NOTICE.txt │ │ │ ├── faraday-net_http_persistent-NOTICE.txt │ │ │ ├── faraday-patron-NOTICE.txt │ │ │ ├── faraday-rack-NOTICE.txt │ │ │ ├── faraday-retry-NOTICE.txt │ │ │ ├── ffi-NOTICE.txt │ │ │ ├── ffi-binary-libfixposix-NOTICE.txt │ │ │ ├── filesize-NOTICE.txt │ │ │ ├── fileutils-NOTICE.txt │ │ │ ├── fugit-NOTICE.txt │ │ │ ├── gelfd2-NOTICE.txt │ │ │ ├── gems-NOTICE.txt │ │ │ ├── gene_pool-NOTICE.txt │ │ │ ├── gradle.plugin.com.github.jk1!gradle-license-report-NOTICE.txt │ │ │ ├── hitimes-NOTICE.txt │ │ │ ├── http-NOTICE.txt │ │ │ ├── http-cookie-NOTICE.txt │ │ │ ├── http-form_data-NOTICE.txt │ │ │ ├── http_parser.rb-NOTICE.txt │ │ │ ├── i18n-NOTICE.txt │ │ │ ├── insist-NOTICE.txt │ │ │ ├── io-console-NOTICE.txt │ │ │ ├── jar-dependencies-NOTICE.txt │ │ │ ├── jay-NOTICE.txt │ │ │ ├── jls-grok-NOTICE.txt │ │ │ ├── jls-lumberjack-NOTICE.txt │ │ │ ├── jmespath-NOTICE.txt │ │ │ ├── jnr-NOTICE.txt │ │ │ ├── joda-NOTICE.txt │ │ │ ├── jrjackson-NOTICE.txt │ │ │ ├── jruby-NOTICE.txt │ │ │ ├── jruby-jms-NOTICE.txt │ │ │ ├── jruby-openssl-NOTICE.txt │ │ │ ├── jruby-stdin-channel-NOTICE.txt │ │ │ ├── json-NOTICE.txt │ │ │ ├── jwt-NOTICE.txt │ │ │ ├── logger-NOTICE.txt │ │ │ ├── lru_redux-NOTICE.txt │ │ │ ├── mail-NOTICE.txt │ │ │ ├── manticore-NOTICE.txt │ │ │ ├── march_hare-NOTICE.txt │ │ │ ├── memoizable-NOTICE.txt │ │ │ ├── method_source-NOTICE.txt │ │ │ ├── metriks-NOTICE.txt │ │ │ ├── mime-types-NOTICE.txt │ │ │ ├── mini_mime-NOTICE.txt │ │ │ ├── minitar-NOTICE.txt │ │ │ ├── msgpack-NOTICE.txt │ │ │ ├── multi_json-NOTICE.txt │ │ │ ├── multipart-post-NOTICE.txt │ │ │ ├── murmurhash3-NOTICE.txt │ │ │ ├── mustache-NOTICE.txt │ │ │ ├── mustermann-NOTICE.txt │ │ │ ├── naught-NOTICE.txt │ │ │ ├── net-http-NOTICE.txt │ │ │ ├── net-imap-NOTICE.txt │ │ │ ├── net-pop-NOTICE.txt │ │ │ ├── net-protocol-NOTICE.txt │ │ │ ├── net-smtp-NOTICE.txt │ │ │ ├── netty-NOTICE.txt │ │ │ ├── nio4r-NOTICE.txt │ │ │ ├── nokogiri-NOTICE.txt │ │ │ ├── openssl_pkcs8_pure-NOTICE.txt │ │ │ ├── org.apache.httpcomponents!httpclient-NOTICE.txt │ │ │ ├── org.apache.httpcomponents!httpcore-NOTICE.txt │ │ │ ├── org.apache.logging.log4j!log4j-1.2-api-NOTICE.txt │ │ │ ├── org.apache.logging.log4j!log4j-api-NOTICE.txt │ │ │ ├── org.apache.logging.log4j!log4j-core-NOTICE.txt │ │ │ ├── org.apache.logging.log4j!log4j-jcl-NOTICE.txt │ │ │ ├── org.apache.logging.log4j!log4j-slf4j-impl-NOTICE.txt │ │ │ ├── org.codehaus.janino!commons-compiler-NOTICE.txt │ │ │ ├── org.codehaus.janino!janino-NOTICE.txt │ │ │ ├── org.codehaus.mojo!animal-sniffer-annotations-NOTICE.txt │ │ │ ├── org.eclipse.core!org.eclipse.core.commands-NOTICE.txt │ │ │ ├── org.eclipse.core!org.eclipse.core.contenttype-NOTICE.txt │ │ │ ├── org.eclipse.core!org.eclipse.core.expressions-NOTICE.txt │ │ │ ├── org.eclipse.core!org.eclipse.core.filesystem-NOTICE.txt │ │ │ ├── org.eclipse.core!org.eclipse.core.jobs-NOTICE.txt │ │ │ ├── org.eclipse.core!org.eclipse.core.resources-NOTICE.txt │ │ │ ├── org.eclipse.core!org.eclipse.core.runtime-NOTICE.txt │ │ │ ├── org.eclipse.equinox!org.eclipse.equinox.app-NOTICE.txt │ │ │ ├── org.eclipse.equinox!org.eclipse.equinox.common-NOTICE.txt │ │ │ ├── org.eclipse.equinox!org.eclipse.equinox.preferences-NOTICE.txt │ │ │ ├── org.eclipse.equinox!org.eclipse.equinox.registry-NOTICE.txt │ │ │ ├── org.eclipse.jdt!org.eclipse.jdt.core-NOTICE.txt │ │ │ ├── org.eclipse.osgi!org.eclipse.osgi-NOTICE.txt │ │ │ ├── org.eclipse.text!org.eclipse.text-NOTICE.txt │ │ │ ├── org.javassist!javassist-NOTICE.txt │ │ │ ├── org.jruby!jruby-core-NOTICE.txt │ │ │ ├── org.logstash!jvm-options-parser-NOTICE.txt │ │ │ ├── org.reflections!reflections-NOTICE.txt │ │ │ ├── org.slf4j!slf4j-api-NOTICE.txt │ │ │ ├── org.yaml!snakeyaml-NOTICE.txt │ │ │ ├── paquet-NOTICE.txt │ │ │ ├── pleaserun-NOTICE.txt │ │ │ ├── polyglot-NOTICE.txt │ │ │ ├── pry-NOTICE.txt │ │ │ ├── psych-NOTICE.txt │ │ │ ├── public_suffix-NOTICE.txt │ │ │ ├── puma-NOTICE.txt │ │ │ ├── raabro-NOTICE.txt │ │ │ ├── racc-NOTICE.txt │ │ │ ├── rack-NOTICE.txt │ │ │ ├── rack-protection-NOTICE.txt │ │ │ ├── rack-session-NOTICE.txt │ │ │ ├── rake-NOTICE.txt │ │ │ ├── redis-NOTICE.txt │ │ │ ├── reline-NOTICE.txt │ │ │ ├── rexml-NOTICE.txt │ │ │ ├── rspec-NOTICE.txt │ │ │ ├── rspec-collection_matchers-NOTICE.txt │ │ │ ├── rspec-core-NOTICE.txt │ │ │ ├── rspec-expectations-NOTICE.txt │ │ │ ├── rspec-mocks-NOTICE.txt │ │ │ ├── rspec-support-NOTICE.txt │ │ │ ├── rspec-wait-NOTICE.txt │ │ │ ├── ruby-maven-libs-NOTICE.txt │ │ │ ├── ruby-progressbar-NOTICE.txt │ │ │ ├── ruby2_keywords-NOTICE.txt │ │ │ ├── rubyzip-NOTICE.txt │ │ │ ├── rufus-scheduler-NOTICE.txt │ │ │ ├── semantic_logger-NOTICE.txt │ │ │ ├── sequel-NOTICE.txt │ │ │ ├── simple_oauth-NOTICE.txt │ │ │ ├── sinatra-NOTICE.txt │ │ │ ├── snappy-NOTICE.txt │ │ │ ├── snappy-jars-NOTICE.txt │ │ │ ├── snmp-NOTICE.txt │ │ │ ├── spoon-NOTICE.txt │ │ │ ├── strscan-NOTICE.txt │ │ │ ├── stud-NOTICE.txt │ │ │ ├── thread_safe-NOTICE.txt │ │ │ ├── thwait-NOTICE.txt │ │ │ ├── tilt-NOTICE.txt │ │ │ ├── time-NOTICE.txt │ │ │ ├── timeout-NOTICE.txt │ │ │ ├── treetop-NOTICE.txt │ │ │ ├── twitter-NOTICE.txt │ │ │ ├── tzinfo-NOTICE.txt │ │ │ ├── tzinfo-data-NOTICE.txt │ │ │ ├── unf-NOTICE.txt │ │ │ ├── uri-NOTICE.txt │ │ │ ├── webhdfs-NOTICE.txt │ │ │ ├── webrick-NOTICE.txt │ │ │ └── xml-simple-NOTICE.txt │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── logstash │ │ │ └── dependencies │ │ │ └── ReportGeneratorTest.java │ │ └── resources │ │ ├── expectedNoticeOutput.txt │ │ ├── expectedOutput.txt │ │ ├── javaLicenses1.csv │ │ ├── javaLicenses2.csv │ │ ├── javaLicensesMissingNotice.csv │ │ ├── licenseMapping-conflicting.csv │ │ ├── licenseMapping-good.csv │ │ ├── licenseMapping-missing.csv │ │ ├── licenseMapping-missingNotices.csv │ │ ├── licenseMapping-missingUrls.csv │ │ ├── licenseMapping-unacceptable.csv │ │ ├── notices │ │ ├── Red Hat Universal Base Image minimal-NOTICE.txt │ │ ├── bundler-NOTICE.txt │ │ ├── com.fasterxml.jackson.core!jackson-core-NOTICE.txt │ │ ├── com.google.errorprone!javac-shaded-NOTICE.txt │ │ ├── commons-io!commons-io-NOTICE.txt │ │ ├── control.js-NOTICE.txt │ │ ├── filesize-NOTICE.txt │ │ ├── gradle.plugin.com.github.jk1!gradle-license-report-NOTICE.txt │ │ ├── jar-dependencies-NOTICE.txt │ │ ├── jruby-openssl-NOTICE.txt │ │ ├── jruby-readline-NOTICE.txt │ │ ├── json-generator-NOTICE.txt │ │ ├── json-parser-NOTICE.txt │ │ ├── junit!junit-NOTICE.txt │ │ ├── org.codehaus.janino!commons-compiler-NOTICE.txt │ │ └── tzinfo-NOTICE.txt │ │ └── rubyDependencies.csv ├── jvm-options-parser │ ├── README.md │ ├── build.gradle │ ├── gradle.properties │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── logstash │ │ │ └── launchers │ │ │ ├── JavaVersion.java │ │ │ └── JvmOptionsParser.java │ │ └── test │ │ └── java │ │ └── org │ │ └── logstash │ │ └── launchers │ │ └── JvmOptionsParserTest.java ├── logstash-docgen │ ├── .gitignore │ ├── Gemfile │ ├── README.md │ ├── Rakefile │ ├── bin │ │ ├── console │ │ ├── extract_doc.rb │ │ ├── logstash-docgen │ │ └── setup │ ├── docs.md │ ├── lib │ │ └── logstash │ │ │ ├── docgen.rb │ │ │ └── docgen │ │ │ ├── asciidoc_format.rb │ │ │ ├── dependency_lookup.rb │ │ │ ├── dynamic_parser.rb │ │ │ ├── github_generator.rb │ │ │ ├── index.rb │ │ │ ├── logstash_generator.rb │ │ │ ├── parser.rb │ │ │ ├── plugin_doc.rb │ │ │ ├── runner.rb │ │ │ ├── static_parser.rb │ │ │ ├── task_runner.rb │ │ │ ├── util.rb │ │ │ └── version.rb │ ├── logstash-docgen.gemspec │ ├── logstash-docgen.yml │ ├── spec │ │ ├── fixtures │ │ │ ├── logstash-filter-dummy.gemspec │ │ │ ├── plugins_source │ │ │ │ ├── base.rb │ │ │ │ ├── config_from_mixin.rb │ │ │ │ ├── new_style_header.rb │ │ │ │ └── old_style_header.rb │ │ │ └── vcr_cassettes │ │ │ │ └── logstash-core.yml │ │ ├── logstash │ │ │ └── docgen │ │ │ │ ├── dependency_lookup_spec.rb │ │ │ │ ├── task_runner_spec.rb │ │ │ │ └── util_spec.rb │ │ ├── spec_helper.rb │ │ └── support │ │ │ └── helpers.rb │ └── templates │ │ ├── index-codecs.asciidoc.erb │ │ ├── index-filters.asciidoc.erb │ │ ├── index-inputs.asciidoc.erb │ │ ├── index-outputs.asciidoc.erb │ │ ├── plugin-doc.asciidoc.erb │ │ └── plugin-doc.css ├── paquet │ ├── .gitignore │ ├── CHANGELOG.md │ ├── Gemfile │ ├── LICENSE │ ├── README.md │ ├── Rakefile │ ├── lib │ │ ├── paquet.rb │ │ └── paquet │ │ │ ├── dependency.rb │ │ │ ├── gem.rb │ │ │ ├── rspec │ │ │ └── tasks.rb │ │ │ ├── shell_ui.rb │ │ │ ├── utils.rb │ │ │ └── version.rb │ ├── paquet.gemspec │ └── spec │ │ ├── integration │ │ └── paquet_spec.rb │ │ ├── paquet │ │ ├── dependency_spec.rb │ │ ├── gem_spec.rb │ │ ├── shell_ui_spec.rb │ │ └── utils_spec.rb │ │ ├── spec_helper.rb │ │ └── support │ │ ├── Gemfile │ │ ├── Rakefile │ │ └── paquet.gemspec └── release │ ├── bump_plugin_versions.rb │ ├── generate_release_notes.rb │ └── generate_release_notes_md.rb ├── versions.yml └── x-pack ├── CHANGELOG.md ├── README.md ├── build.gradle ├── ci ├── integration_tests.sh └── unit_tests.sh ├── gradle.properties ├── lib ├── config_management │ ├── bootstrap_check.rb │ ├── elasticsearch_source.rb │ ├── extension.rb │ └── hooks.rb ├── filters │ └── geoip │ │ └── database_manager.rb ├── geoip_database_management │ ├── constants.rb │ ├── data_path.rb │ ├── db_info.rb │ ├── downloader.rb │ ├── extension.rb │ ├── manager.rb │ ├── metadata.rb │ ├── metric.rb │ ├── subscription.rb │ ├── subscription_observer.rb │ └── util.rb ├── helpers │ ├── elasticsearch_options.rb │ └── loggable_try.rb ├── license_checker │ ├── license_manager.rb │ ├── license_reader.rb │ ├── licensed.rb │ └── x_pack_info.rb ├── monitoring │ ├── inputs │ │ ├── metrics.rb │ │ ├── metrics │ │ │ ├── state_event_factory.rb │ │ │ └── stats_event_factory.rb │ │ └── timer_task_logger.rb │ ├── internal_pipeline_source.rb │ ├── monitoring.rb │ └── outputs │ │ └── elasticsearch_monitoring.rb ├── template.cfg.erb └── x-pack │ └── logstash_registry.rb ├── qa └── integration │ ├── management │ ├── multiple_pipelines_spec.rb │ └── read_configuration_spec.rb │ ├── monitoring │ ├── direct_shipping_spec.rb │ ├── es_documents_structure_validation_spec.rb │ ├── geoip_metric_spec.rb │ ├── monitoring_is_disabled_spec.rb │ ├── multiple_host_defined_spec.rb │ ├── no_ssl_create_monitoring_indexes_spec.rb │ └── persisted_queue_is_enabled_spec.rb │ ├── spec_helper.rb │ └── support │ ├── elasticsearch │ └── api │ │ └── actions │ │ └── update_password.rb │ ├── helpers.rb │ └── shared_examples.rb ├── settings.gradle ├── spec ├── config_management │ ├── bootstrap_check_spec.rb │ ├── elasticsearch_source_spec.rb │ ├── extension_spec.rb │ ├── fixtures │ │ └── pipelines.json │ └── hooks_spec.rb ├── filters │ └── geoip │ │ ├── database_manager_spec.rb │ │ └── test_helper.rb ├── geoip_database_management │ ├── downloader_spec.rb │ ├── fixtures │ │ ├── normal_resp.json │ │ └── sample.tgz │ ├── manager_spec.rb │ ├── metadata_spec.rb │ ├── spec_helper.rb │ └── subscription_spec.rb ├── helpers │ └── elasticsearch_options_spec.rb ├── license_checker │ ├── license_info_spec.rb │ ├── license_manager_spec.rb │ └── license_reader_spec.rb ├── monitoring │ ├── inputs │ │ ├── metrics │ │ │ ├── state_event │ │ │ │ └── lir_serializer_spec.rb │ │ │ ├── state_event_factory_spec.rb │ │ │ └── stats_event_factory_spec.rb │ │ ├── metrics_spec.rb │ │ └── timer_task_logger_spec.rb │ ├── internal_pipeline_source_spec.rb │ ├── pipeline_register_hook_spec.rb │ └── schemas │ │ ├── monitoring_document_new_schema.json │ │ ├── monitoring_document_schema.json │ │ ├── states_document_new_schema.json │ │ └── states_document_schema.json ├── spec_helper.rb └── support │ ├── helpers.rb │ └── matchers.rb └── src └── test └── java └── org └── logstash └── xpack └── test ├── RSpecIntegrationTests.java └── RSpecTests.java /.buildkite/benchmark_marathon_pipeline.yml: -------------------------------------------------------------------------------- 1 | agents: 2 | provider: gcp 3 | imageProject: elastic-images-prod 4 | image: family/platform-ingest-logstash-ubuntu-2204 5 | machineType: "n2-standard-16" 6 | diskSizeGb: 100 7 | diskType: pd-ssd 8 | 9 | steps: 10 | - label: "Benchmark Marathon" 11 | command: .buildkite/scripts/benchmark/marathon.sh -------------------------------------------------------------------------------- /.buildkite/benchmark_pipeline.yml: -------------------------------------------------------------------------------- 1 | agents: 2 | provider: gcp 3 | imageProject: elastic-images-prod 4 | image: family/platform-ingest-logstash-ubuntu-2204 5 | machineType: "n2-standard-16" 6 | diskSizeGb: 100 7 | diskType: pd-ssd 8 | 9 | steps: 10 | - label: "Benchmark Snapshot" 11 | retry: 12 | automatic: 13 | - limit: 3 14 | command: .buildkite/scripts/benchmark/main.sh -------------------------------------------------------------------------------- /.buildkite/dra_pipeline.yml: -------------------------------------------------------------------------------- 1 | # yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json 2 | 3 | steps: 4 | - label: ":pipeline: Generate steps" 5 | command: | 6 | set -euo pipefail 7 | 8 | echo "--- Building [$${WORKFLOW_TYPE}] artifacts" 9 | python3 -m pip install pyyaml 10 | echo "--- Building dynamic pipeline steps" 11 | python3 .buildkite/scripts/dra/generatesteps.py > steps.yml 12 | echo "--- Printing dynamic pipeline steps" 13 | cat steps.yml 14 | echo "--- Uploading dynamic pipeline steps" 15 | cat steps.yml | buildkite-agent pipeline upload 16 | -------------------------------------------------------------------------------- /.buildkite/health_report_tests_pipeline.yml: -------------------------------------------------------------------------------- 1 | # yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json 2 | 3 | agents: 4 | provider: gcp 5 | imageProject: elastic-images-prod 6 | image: family/platform-ingest-logstash-ubuntu-2204 7 | machineType: "n2-standard-4" 8 | diskSizeGb: 64 9 | 10 | steps: 11 | - group: ":logstash: Health API integration tests" 12 | key: "testing-phase" 13 | steps: 14 | - label: "main branch" 15 | key: "integ-tests-on-main-branch" 16 | command: 17 | - .buildkite/scripts/health-report-tests/main.sh 18 | retry: 19 | automatic: 20 | - limit: 3 -------------------------------------------------------------------------------- /.buildkite/jdk_availability_check_pipeline.yml: -------------------------------------------------------------------------------- 1 | steps: 2 | - label: "JDK Availability check" 3 | key: "jdk-availability-check" 4 | agents: 5 | image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-logstash-ci" 6 | cpu: "4" 7 | memory: "6Gi" 8 | ephemeralStorage: "100Gi" 9 | command: | 10 | set -euo pipefail 11 | 12 | source .buildkite/scripts/common/container-agent.sh 13 | export GRADLE_OPTS="-Xmx2g -Dorg.gradle.daemon=false -Dorg.gradle.logging.level=info" 14 | ci/check_jdk_version_availability.sh -------------------------------------------------------------------------------- /.buildkite/scripts/benchmark/config/filebeat.yml: -------------------------------------------------------------------------------- 1 | http.enabled: false 2 | filebeat.inputs: 3 | - type: log 4 | symlinks: true 5 | paths: 6 | - "/usr/share/filebeat/flog/*.log" 7 | logging.level: info 8 | output.logstash: 9 | hosts: 10 | - "localhost:5044" 11 | ttl: 10ms 12 | bulk_max_size: 2048 13 | # queue.mem: 14 | # events: 4096 15 | # flush.min_events: 2048 -------------------------------------------------------------------------------- /.buildkite/scripts/benchmark/config/logstash.yml: -------------------------------------------------------------------------------- 1 | api.http.host: 0.0.0.0 2 | pipeline.workers: ${WORKER} 3 | pipeline.batch.size: ${BATCH_SIZE} 4 | queue.type: ${QTYPE} 5 | 6 | xpack.monitoring.allow_legacy_collection: true 7 | xpack.monitoring.enabled: true 8 | xpack.monitoring.elasticsearch.username: ${MONITOR_ES_USER} 9 | xpack.monitoring.elasticsearch.password: ${MONITOR_ES_PW} 10 | xpack.monitoring.elasticsearch.hosts: ["${MONITOR_ES_HOST}"] 11 | -------------------------------------------------------------------------------- /.buildkite/scripts/benchmark/config/uuid: -------------------------------------------------------------------------------- 1 | f74f1a28-25e9-494f-ba41-ca9f13d4446d -------------------------------------------------------------------------------- /.buildkite/scripts/benchmark/save-objects/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 20241210 2 | Remove scripted field `5m_num` from dashboards 3 | 4 | ## 20240912 5 | Updated runtime field `release` to return `true` when `version` contains "SNAPSHOT" 6 | 7 | ## 20240912 8 | Initial dashboards -------------------------------------------------------------------------------- /.buildkite/scripts/benchmark/save-objects/README.md: -------------------------------------------------------------------------------- 1 | benchmark_objects.ndjson contains the following resources 2 | 3 | - Dashboards 4 | - daily snapshot 5 | - released versions 6 | - Data Views 7 | - benchmark 8 | - runtime fields 9 | - | Fields Name | Type | Comment | 10 | |--------------|---------------------------------------------------------------------------------------|--------------------------------------------------| 11 | | versions_num | long | convert semantic versioning to number for graph sorting | 12 | | release | boolean | `true` for released version. `false` for snapshot version. It is for graph filtering. | 13 | 14 | To import objects to Kibana, navigate to Stack Management > Save Objects and click Import -------------------------------------------------------------------------------- /.buildkite/scripts/benchmark/setup/alias: -------------------------------------------------------------------------------- 1 | POST /_aliases 2 | { 3 | "actions": [ 4 | { "add": { "index": "benchmark_summary_v2", "alias": "benchmark_summary" } } 5 | ] 6 | } -------------------------------------------------------------------------------- /.buildkite/scripts/common/check-files-changed.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # ********************************************************** 4 | # Returns true if current checkout compared to parent commit 5 | # has changes ONLY matching the argument regexp 6 | # 7 | # Used primarily to skip running the exhaustive pipeline 8 | # when only docs changes have happened. 9 | # ******************************************************** 10 | 11 | if [[ -z "$1" ]]; then 12 | echo "Usage: $0 " 13 | exit 1 14 | fi 15 | 16 | previous_commit=$(git rev-parse HEAD^) 17 | changed_files=$(git diff --name-only $previous_commit) 18 | 19 | if [[ -n "$changed_files" ]] && [[ -z "$(echo "$changed_files" | grep -vE "$1")" ]]; then 20 | echo "All files compared to the previous commit [$previous_commit] match the specified regex: [$1]" 21 | echo "Files changed:" 22 | git --no-pager diff --name-only HEAD^ 23 | exit 0 24 | else 25 | exit 1 26 | fi 27 | -------------------------------------------------------------------------------- /.buildkite/scripts/common/container-agent.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # ******************************************************** 4 | # This file contains prerequisite bootstrap invocations 5 | # required for Logstash CI when using containerized agents 6 | # ******************************************************** 7 | 8 | set -euo pipefail 9 | 10 | if [[ $(whoami) == "logstash" ]] 11 | then 12 | export PATH="/home/logstash/.rbenv/bin:$PATH" 13 | eval "$(rbenv init -)" 14 | else 15 | export PATH="/usr/local/rbenv/bin:$PATH" 16 | eval "$(rbenv init -)" 17 | fi 18 | -------------------------------------------------------------------------------- /.buildkite/scripts/common/vm-agent-multi-jdk.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # ************************************************************** 4 | # This file contains prerequisite bootstrap invocations 5 | # required for Logstash CI when using custom multi-jdk VM images 6 | # It is primarily used by the exhaustive BK pipeline. 7 | # ************************************************************** 8 | 9 | set -euo pipefail 10 | 11 | source .ci/java-versions.properties 12 | export BUILD_JAVA_HOME=/opt/buildkite-agent/.java/$LS_BUILD_JAVA 13 | 14 | export PATH="/opt/buildkite-agent/.rbenv/bin:/opt/buildkite-agent/.pyenv/bin:$BUILD_JAVA_HOME/bin:$PATH" 15 | 16 | eval "$(rbenv init -)" 17 | -------------------------------------------------------------------------------- /.buildkite/scripts/common/vm-agent.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # ******************************************************** 4 | # This file contains prerequisite bootstrap invocations 5 | # required for Logstash CI when using VM/baremetal agents 6 | # ******************************************************** 7 | 8 | set -euo pipefail 9 | 10 | export PATH="/opt/buildkite-agent/.rbenv/bin:/opt/buildkite-agent/.pyenv/bin:/opt/buildkite-agent/.java/bin:$PATH" 11 | export JAVA_HOME="/opt/buildkite-agent/.java" 12 | eval "$(rbenv init -)" 13 | -------------------------------------------------------------------------------- /.buildkite/scripts/common/vm-images.json: -------------------------------------------------------------------------------- 1 | { 2 | "#comment": "This file lists all custom vm images. We use it to make decisions about randomized CI jobs.", 3 | "linux": { 4 | "ubuntu": ["ubuntu-2404", "ubuntu-2204", "ubuntu-2004"], 5 | "debian": ["debian-12", "debian-11"], 6 | "rhel": ["rhel-9", "rhel-8"], 7 | "oraclelinux": ["oraclelinux-8", "oraclelinux-7"], 8 | "rocky": ["rocky-linux-8"], 9 | "amazonlinux": ["amazonlinux-2023"], 10 | "opensuse": ["opensuse-leap-15"] 11 | }, 12 | "windows": ["windows-2025", "windows-2022", "windows-2019", "windows-2016"] 13 | } 14 | -------------------------------------------------------------------------------- /.buildkite/scripts/dra/docker-env-teardown.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -euo pipefail 4 | 5 | # Unset all variables ending with _SECRET or _TOKEN 6 | for var in $(printenv | sed 's;=.*;;' | sort); do 7 | if [[ $var != "VAULT_ADDR" && ("$var" == *_SECRET || "$var" == *_TOKEN || "$var" == *VAULT* ) ]]; then 8 | unset "$var" 9 | fi 10 | done 11 | 12 | if command -v docker &>/dev/null; then 13 | DOCKER_REGISTRY="docker.elastic.co" 14 | docker logout $DOCKER_REGISTRY 15 | fi 16 | -------------------------------------------------------------------------------- /.buildkite/scripts/health-report-tests/README.md: -------------------------------------------------------------------------------- 1 | ## Description 2 | This package for integration tests of the Health Report API. 3 | Export `LS_BRANCH` to run on a specific branch. By default, it uses the main branch. 4 | 5 | ## How to run the Health Report Integration test? 6 | ### Prerequisites 7 | Make sure you have python installed. Install the integration test dependencies with the following command: 8 | ```shell 9 | python3 -mpip install -r .buildkite/scripts/health-report-tests/requirements.txt 10 | ``` 11 | 12 | ### Run the integration tests 13 | ```shell 14 | python3 .buildkite/scripts/health-report-tests/main.py 15 | ``` 16 | 17 | ### Troubleshooting 18 | - If you get `WARNING: pip is configured with locations that require TLS/SSL,...` warning message, make sure you have python >=3.12.4 installed. -------------------------------------------------------------------------------- /.buildkite/scripts/health-report-tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/.buildkite/scripts/health-report-tests/__init__.py -------------------------------------------------------------------------------- /.buildkite/scripts/health-report-tests/config/pipelines.yml: -------------------------------------------------------------------------------- 1 | # Intentionally left blank -------------------------------------------------------------------------------- /.buildkite/scripts/health-report-tests/logstash_health_report.py: -------------------------------------------------------------------------------- 1 | """ 2 | A class to provide information about Logstash node stats. 3 | """ 4 | 5 | import util 6 | 7 | 8 | class LogstashHealthReport: 9 | LOGSTASH_HEALTH_REPORT_URL = "http://localhost:9600/_health_report" 10 | 11 | def __init__(self): 12 | pass 13 | 14 | def get(self): 15 | response = util.call_url_with_retry(self.LOGSTASH_HEALTH_REPORT_URL) 16 | return response.json() 17 | -------------------------------------------------------------------------------- /.buildkite/scripts/health-report-tests/main.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -euo pipefail 4 | 5 | export PATH="/opt/buildkite-agent/.rbenv/bin:/opt/buildkite-agent/.pyenv/bin:/opt/buildkite-agent/.java/bin:$PATH" 6 | export JAVA_HOME="/opt/buildkite-agent/.java" 7 | export PYENV_VERSION="3.11.5" 8 | 9 | eval "$(rbenv init -)" 10 | eval "$(pyenv init -)" 11 | 12 | echo "--- Installing dependencies" 13 | python3 -m pip install -r .buildkite/scripts/health-report-tests/requirements.txt 14 | 15 | echo "--- Running tests" 16 | python3 .buildkite/scripts/health-report-tests/main.py -------------------------------------------------------------------------------- /.buildkite/scripts/health-report-tests/requirements.txt: -------------------------------------------------------------------------------- 1 | requests==2.32.3 2 | pyyaml==6.0.2 -------------------------------------------------------------------------------- /.buildkite/scripts/setup_java.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | install_java() { 6 | # TODO: let's think about regularly creating a custom image for Logstash which may align on version.yml definitions 7 | sudo apt update && sudo apt install -y openjdk-21-jdk && sudo apt install -y openjdk-21-jre 8 | } 9 | 10 | install_java 11 | -------------------------------------------------------------------------------- /.buildkite/scripts/snyk/resolve_stack_version.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This script resolves latest version from VERSION_URL SNAPSHOTS based on given N.x (where N is a precise, ex 8.x) 4 | # Why Snapshot? - the 7.latest and 8.latest branchs will be accurately places in snapshots, not in releases. 5 | # Ensure you have set the ELASTIC_STACK_VERSION environment variable. 6 | 7 | set -e 8 | 9 | VERSION_URL="https://storage.googleapis.com/artifacts-api/snapshots/branches.json" 10 | 11 | echo "Fetching versions from $VERSION_URL" 12 | readarray -t TARGET_BRANCHES < <(curl --retry-all-errors --retry 5 --retry-delay 5 -fsSL $VERSION_URL | jq -r '.branches[]') 13 | echo "${TARGET_BRANCHES[@]}" 14 | 15 | -------------------------------------------------------------------------------- /.buildkite/snyk_report_pipeline.yml: -------------------------------------------------------------------------------- 1 | agents: 2 | image: "docker.elastic.co/ci-agent-images/platform-ingest/buildkite-agent-logstash-ci" 3 | cpu: "2" 4 | memory: "4Gi" 5 | ephemeralStorage: "64Gi" 6 | 7 | steps: 8 | # reports main, previous (ex: 7.latest) and current (ex: 8.latest) release branches to Snyk 9 | - label: ":hammer: Report to Snyk" 10 | command: 11 | - .buildkite/scripts/snyk/report.sh 12 | retry: 13 | automatic: 14 | - limit: 3 15 | -------------------------------------------------------------------------------- /.buildkite/trigger_pipelines.yml: -------------------------------------------------------------------------------- 1 | # yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json 2 | 3 | steps: 4 | - label: ":pipeline: Generate trigger steps for $PIPELINES_TO_TRIGGER" 5 | command: ".buildkite/scripts/common/trigger-pipeline-generate-steps.sh" 6 | -------------------------------------------------------------------------------- /.ci/java-versions.properties: -------------------------------------------------------------------------------- 1 | LS_BUILD_JAVA=adoptiumjdk_21 2 | LS_RUNTIME_JAVA=adoptiumjdk_21 3 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | **/.git 2 | build 3 | logs 4 | 5 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: true 2 | contact_links: 3 | - name: Question 4 | url: https://discuss.elastic.co/c/logstash 5 | about: Ask (and answer) questions here. 6 | - name: Security Vulnerability 7 | url: https://www.elastic.co/community/security 8 | about: Send security vulnerability reports to security@elastic.co. 9 | - name: Plugin Issue 10 | url: https://github.com/logstash-plugins 11 | about: Plugins for Logstash do the heavy lifting when it comes to integrating with a variety of external technologies and services. If your issue has to do with a specific plugin, please file it in the appropriate repository. 12 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/doc-request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Documentation 3 | about: Report a documentation issue 4 | labels: "docs,status:needs-triage" 5 | 6 | --- 7 | 10 | 11 | #### Tell us about the issue 12 | 17 | **Description:** 18 | 19 | 20 | **URL:** 21 | 22 | Example: https://www.elastic.co/guide/en/logstash/current/introduction.html 23 | 24 | 25 | **Anything else?** 26 | 27 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature-request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature Request 3 | about: Request a new feature or suggest an enhancement to an existing one 4 | labels: "enhancement,status:needs-triage" 5 | 6 | --- 7 | 11 | 12 | 22 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/test-failure.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Test Failure 3 | about: A test failure in CI 4 | labels: "test failure" 5 | 6 | --- 7 | 8 | 12 | 13 | **Build scan**: 14 | 15 | **Repro line**: 16 | 17 | **Reproduces locally?**: 18 | 19 | **Applicable branches**: 20 | 21 | **Failure history**: 22 | 25 | **Failure excerpt**: 26 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md.unused: -------------------------------------------------------------------------------- 1 | Thanks for contributing to Logstash! If you haven't already signed our CLA, here's a handy link: https://www.elastic.co/contributor-agreement/ 2 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | --- 2 | version: 2 3 | updates: 4 | - package-ecosystem: "github-actions" 5 | directories: 6 | - '/' 7 | - '/.github/actions/*' 8 | schedule: 9 | interval: "weekly" 10 | day: "sunday" 11 | time: "22:00" 12 | reviewers: 13 | - "elastic/observablt-ci" 14 | - "elastic/observablt-ci-contractors" 15 | groups: 16 | github-actions: 17 | patterns: 18 | - "*" 19 | -------------------------------------------------------------------------------- /.github/workflows/backport-active.yml: -------------------------------------------------------------------------------- 1 | name: Backport to active branches 2 | 3 | on: 4 | pull_request_target: 5 | types: [closed] 6 | branches: 7 | - main 8 | 9 | permissions: 10 | pull-requests: write 11 | contents: read 12 | 13 | jobs: 14 | backport: 15 | # Only run if the PR was merged (not just closed) and has one of the backport labels 16 | if: | 17 | github.event.pull_request.merged == true && 18 | contains(toJSON(github.event.pull_request.labels.*.name), 'backport-active-') 19 | runs-on: ubuntu-latest 20 | 21 | steps: 22 | - uses: elastic/oblt-actions/github/backport-active@v1 23 | -------------------------------------------------------------------------------- /.github/workflows/catalog-info.yml: -------------------------------------------------------------------------------- 1 | --- 2 | name: catalog-info 3 | 4 | on: 5 | pull_request: 6 | branches: 7 | - main 8 | paths: 9 | - 'catalog-info.yaml' 10 | 11 | permissions: 12 | contents: read 13 | 14 | jobs: 15 | validate: 16 | runs-on: ubuntu-latest 17 | permissions: 18 | contents: read 19 | packages: read 20 | steps: 21 | - uses: actions/checkout@v4 22 | 23 | - uses: elastic/oblt-actions/elastic/validate-catalog@v1 24 | 25 | -------------------------------------------------------------------------------- /.github/workflows/critical_vulnerability_scan.yml: -------------------------------------------------------------------------------- 1 | name: Scan for vulnerabilities 2 | 3 | on: 4 | pull_request: 5 | types: [opened, synchronize] 6 | workflow_dispatch: 7 | 8 | jobs: 9 | scan_image: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: checkout repo content 13 | uses: actions/checkout@v4 14 | - name: build tar distribution 15 | run: ./gradlew clean assembleTarDistribution 16 | - run: mkdir scan 17 | - run: tar -zxf ../build/logstash-*.tar.gz 18 | working-directory: ./scan 19 | - name: scan image 20 | uses: anchore/scan-action@v6 21 | with: 22 | path: "./scan" 23 | fail-build: true 24 | severity-cutoff: critical 25 | -------------------------------------------------------------------------------- /.github/workflows/docs-build.yml: -------------------------------------------------------------------------------- 1 | name: docs-build 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | pull_request_target: ~ 8 | merge_group: ~ 9 | 10 | jobs: 11 | docs-preview: 12 | uses: elastic/docs-builder/.github/workflows/preview-build.yml@main 13 | with: 14 | path-pattern: docs/** 15 | permissions: 16 | deployments: write 17 | id-token: write 18 | contents: read 19 | pull-requests: read 20 | -------------------------------------------------------------------------------- /.github/workflows/docs-cleanup.yml: -------------------------------------------------------------------------------- 1 | name: docs-cleanup 2 | 3 | on: 4 | pull_request_target: 5 | types: 6 | - closed 7 | 8 | jobs: 9 | docs-preview: 10 | uses: elastic/docs-builder/.github/workflows/preview-cleanup.yml@main 11 | permissions: 12 | contents: none 13 | id-token: write 14 | deployments: write 15 | -------------------------------------------------------------------------------- /.github/workflows/github-commands-comment.yml: -------------------------------------------------------------------------------- 1 | --- 2 | name: github-commands-comment 3 | 4 | on: 5 | pull_request_target: 6 | types: 7 | - opened 8 | 9 | permissions: 10 | contents: read 11 | 12 | jobs: 13 | comment: 14 | runs-on: ubuntu-latest 15 | permissions: 16 | pull-requests: write 17 | steps: 18 | - uses: elastic/oblt-actions/elastic/github-commands@v1 19 | -------------------------------------------------------------------------------- /.github/workflows/logstash_project_board.yml: -------------------------------------------------------------------------------- 1 | name: Add to project 2 | on: 3 | issues: 4 | types: 5 | - opened 6 | 7 | jobs: 8 | add-to-project: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: octokit/graphql-action@v2.x 12 | id: add_to_project 13 | with: 14 | headers: '{"GraphQL-Features": "projects_next_graphql"}' 15 | query: | 16 | mutation add_to_project($projectid:ID!,$contentid:ID!) { 17 | addProjectV2ItemById(input:{projectId:$projectid contentId:$contentid}) { 18 | clientMutationId 19 | } 20 | } 21 | projectid: "PVT_kwDOAGc3Zs0SEg" 22 | contentid: ${{ github.event.issue.node_id }} 23 | GITHUB_TOKEN: ${{ secrets.PROJECT_TOKEN }} 24 | -------------------------------------------------------------------------------- /.github/workflows/mergify-labels-copier.yml: -------------------------------------------------------------------------------- 1 | name: mergify backport labels copier 2 | 3 | on: 4 | pull_request: 5 | types: 6 | - opened 7 | 8 | permissions: 9 | contents: read 10 | 11 | jobs: 12 | mergify-backport-labels-copier: 13 | runs-on: ubuntu-latest 14 | if: startsWith(github.head_ref, 'mergify/bp/') 15 | permissions: 16 | # Add GH labels 17 | pull-requests: write 18 | # See https://github.com/cli/cli/issues/6274 19 | repository-projects: read 20 | steps: 21 | - uses: elastic/oblt-actions/mergify/labels-copier@v1 22 | with: 23 | excluded-labels-regex: "^backport-*" 24 | -------------------------------------------------------------------------------- /.github/workflows/pre-commit.yml: -------------------------------------------------------------------------------- 1 | name: pre-commit 2 | 3 | on: 4 | pull_request: 5 | push: 6 | branches: 7 | - main 8 | - 8.* 9 | - 9.* 10 | 11 | permissions: 12 | contents: read 13 | 14 | jobs: 15 | pre-commit: 16 | runs-on: ubuntu-latest 17 | steps: 18 | - uses: elastic/oblt-actions/pre-commit@v1 19 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | repos: 2 | - repo: https://github.com/pre-commit/pre-commit-hooks 3 | rev: v4.6.0 4 | hooks: 5 | - id: check-merge-conflict 6 | args: ['--assume-in-merge'] 7 | -------------------------------------------------------------------------------- /.ruby-version: -------------------------------------------------------------------------------- 1 | jruby-9.4.9.0 2 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | Source code in this repository is variously licensed under the Apache License 2 | Version 2.0, an Apache compatible license, or the Elastic License. Outside of 3 | the "x-pack" folder, source code in a given file is licensed under the Apache 4 | License Version 2.0, unless otherwise noted at the beginning of the file or a 5 | LICENSE file present in the directory subtree declares a separate license. 6 | Within the "x-pack" folder, source code in a given file is licensed under the 7 | Elastic License, unless otherwise noted at the beginning of the file or a 8 | LICENSE file present in the directory subtree declares a separate license. 9 | 10 | The build produces two sets of binaries - one set that falls under the Elastic 11 | License and another set that falls under Apache License Version 2.0. The 12 | binaries that contain `-oss` in the artifact name are licensed under the Apache 13 | License Version 2.0. 14 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Reporting a Vulnerability 4 | 5 | For security vulnerabilities please only send reports to security@elastic.co. 6 | See https://www.elastic.co/community/security for more information. 7 | -------------------------------------------------------------------------------- /bin/benchmark.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | setlocal enabledelayedexpansion 3 | 4 | cd /d "%~dp0.." 5 | for /f %%i in ('cd') do set RESULT=%%i 6 | 7 | "%JAVACMD%" -cp "!RESULT!\tools\benchmark-cli\build\libs\benchmark-cli.jar;*" ^ 8 | org.logstash.benchmark.cli.Main %* 9 | 10 | endlocal 11 | -------------------------------------------------------------------------------- /bin/benchmark.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | java -cp "$(cd `dirname $0`/..; pwd)"'/tools/benchmark-cli/build/libs/benchmark-cli.jar:*' \ 4 | org.logstash.benchmark.cli.Main "$@" 5 | -------------------------------------------------------------------------------- /bin/bundle: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | # This is basically a copy of the original bundler "bundle" shim 4 | # with the addition of the loading of our Bundler patches that 5 | # modify Bundler's caching behaviour. 6 | 7 | # Exit cleanly from an early interrupt 8 | Signal.trap("INT") { exit 1 } 9 | 10 | require_relative "../lib/bootstrap/environment" 11 | 12 | LogStash::Bundler.setup! 13 | 14 | require "bundler/cli" 15 | require "bundler/friendly_errors" 16 | 17 | ::Bundler.with_friendly_errors do 18 | ::Bundler::CLI.start(ARGV, :debug => true) 19 | end 20 | -------------------------------------------------------------------------------- /bin/cpdump: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bin/ruby 2 | 3 | require_relative "../lib/bootstrap/environment" 4 | LogStash::Bundler.setup!({:without => [:build, :development]}) 5 | require "logstash-core" 6 | require "logstash/environment" 7 | require "logstash/settings" 8 | 9 | io = Java::OrgLogstashAckedqueueIo::FileCheckpointIO.new(LogStash::SETTINGS.get_value("path.queue")) 10 | cp = io.read(ARGV[0]) 11 | puts("checkpoint #{cp.toString}") 12 | -------------------------------------------------------------------------------- /bin/logstash-keystore: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | unset CDPATH 4 | . "$(cd `dirname $0`/..; pwd)/bin/logstash.lib.sh" 5 | setup 6 | 7 | # bin/logstash-keystore is a short lived ruby script thus we can use aggressive "faster starting JRuby options" 8 | # see https://github.com/jruby/jruby/wiki/Improving-startup-time 9 | export JRUBY_OPTS="${JRUBY_OPTS---dev}" 10 | 11 | ruby_exec "${LOGSTASH_HOME}/lib/secretstore/cli.rb" "$@" 12 | -------------------------------------------------------------------------------- /bin/logstash-keystore.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | setlocal enabledelayedexpansion 3 | 4 | call "%~dp0setup.bat" || exit /b 1 5 | if errorlevel 1 ( 6 | if not defined nopauseonerror ( 7 | pause 8 | ) 9 | exit /B %ERRORLEVEL% 10 | ) 11 | 12 | %JRUBY_BIN% "%LS_HOME%\lib\secretstore\cli.rb" %* 13 | if errorlevel 1 ( 14 | exit /B 1 15 | ) 16 | 17 | endlocal 18 | -------------------------------------------------------------------------------- /bin/logstash-plugin: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | unset CDPATH 4 | . "$(cd `dirname $0`/..; pwd)/bin/logstash.lib.sh" 5 | setup 6 | 7 | # bin/logstash-plugin is a short lived ruby script thus we can use aggressive "faster starting JRuby options" 8 | # see https://github.com/jruby/jruby/wiki/Improving-startup-time 9 | export JRUBY_OPTS="${JRUBY_OPTS---dev}" 10 | 11 | ruby_exec "${LOGSTASH_HOME}/lib/pluginmanager/main.rb" "$@" 12 | -------------------------------------------------------------------------------- /bin/logstash-plugin.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | setlocal enabledelayedexpansion 3 | 4 | call "%~dp0setup.bat" || exit /b 1 5 | if errorlevel 1 ( 6 | if not defined nopauseonerror ( 7 | pause 8 | ) 9 | exit /B %ERRORLEVEL% 10 | ) 11 | 12 | %JRUBY_BIN% "%LS_HOME%\lib\pluginmanager\main.rb" %* 13 | if errorlevel 1 ( 14 | exit /B 1 15 | ) 16 | 17 | endlocal 18 | -------------------------------------------------------------------------------- /bin/pqcheck.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | setlocal enabledelayedexpansion 3 | 4 | call "%~dp0setup.bat" || exit /b 1 5 | if errorlevel 1 ( 6 | if not defined nopauseonerror ( 7 | pause 8 | ) 9 | exit /B %ERRORLEVEL% 10 | ) 11 | 12 | 13 | set JAVA_OPTS=%LS_JAVA_OPTS% 14 | 15 | for %%i in ("%LS_HOME%\logstash-core\lib\jars\*.jar") do ( 16 | call :concat "%%i" 17 | ) 18 | 19 | "%JAVACMD%" %JAVA_OPTS% org.logstash.ackedqueue.PqCheck %* 20 | 21 | :concat 22 | IF not defined CLASSPATH ( 23 | set CLASSPATH="%~1" 24 | ) ELSE ( 25 | set CLASSPATH=%CLASSPATH%;"%~1" 26 | ) 27 | goto :eof 28 | 29 | endlocal 30 | -------------------------------------------------------------------------------- /bin/pqrepair.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | setlocal enabledelayedexpansion 3 | 4 | call "%~dp0setup.bat" || exit /b 1 5 | if errorlevel 1 ( 6 | if not defined nopauseonerror ( 7 | pause 8 | ) 9 | exit /B %ERRORLEVEL% 10 | ) 11 | 12 | 13 | set JAVA_OPTS=%LS_JAVA_OPTS% 14 | 15 | for %%i in ("%LS_HOME%\logstash-core\lib\jars\*.jar") do ( 16 | call :concat "%%i" 17 | ) 18 | 19 | "%JAVACMD%" %JAVA_OPTS% org.logstash.ackedqueue.PqRepair %* 20 | 21 | :concat 22 | IF not defined CLASSPATH ( 23 | set CLASSPATH="%~1" 24 | ) ELSE ( 25 | set CLASSPATH=%CLASSPATH%;"%~1" 26 | ) 27 | goto :eof 28 | 29 | endlocal 30 | -------------------------------------------------------------------------------- /bin/rspec: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | unset CDPATH 4 | . "$(cd `dirname $0`/..; pwd)/bin/logstash.lib.sh" 5 | setup 6 | 7 | # use faster starting JRuby options see https://github.com/jruby/jruby/wiki/Improving-startup-time 8 | export JRUBY_OPTS="${JRUBY_OPTS---dev}" 9 | 10 | ruby_exec "${LOGSTASH_HOME}/lib/bootstrap/rspec.rb" "$@" 11 | -------------------------------------------------------------------------------- /bin/ruby: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Run a ruby script using the logstash jruby launcher 3 | # 4 | # Usage: 5 | # bin/ruby [arguments] 6 | # 7 | # Supported environment variables: 8 | # LS_JAVA_OPTS="xxx" to append extra options to the JVM options provided by logstash 9 | # LS_GEM_HOME and LS_GEM_PATH to overwrite the path assigned to GEM_HOME and GEM_PATH 10 | # 11 | # Development environment variables: 12 | # DEBUG=1 to output debugging information 13 | 14 | # use faster starting JRuby options see https://github.com/jruby/jruby/wiki/Improving-startup-time 15 | export JRUBY_OPTS="${JRUBY_OPTS---dev}" 16 | 17 | unset CDPATH 18 | 19 | . "$(cd `dirname $0`/..; pwd)/bin/logstash.lib.sh" 20 | setup 21 | 22 | ruby_exec "$@" 23 | -------------------------------------------------------------------------------- /buildSrc/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'groovy' 3 | id 'java' 4 | } 5 | 6 | repositories { 7 | mavenCentral() 8 | } 9 | 10 | if ((JavaVersion.current().getMajorVersion() as int) >= 17) { 11 | tasks.withType(Test).configureEach { 12 | jvmArgs(["--add-opens=java.base/java.lang=ALL-UNNAMED", 13 | "--add-opens=java.base/java.util=ALL-UNNAMED"]) 14 | } 15 | } 16 | 17 | dependencies { 18 | testImplementation("org.junit.jupiter:junit-jupiter-api:5.7.2") 19 | testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.7.2") 20 | } 21 | 22 | test { 23 | useJUnitPlatform() 24 | } -------------------------------------------------------------------------------- /buildSrc/src/main/groovy/org/logstash/gradle/tooling/ToolingUtils.groovy: -------------------------------------------------------------------------------- 1 | package org.logstash.gradle.tooling 2 | 3 | class ToolingUtils { 4 | static String jdkFolderName(String osName) { 5 | return osName == "darwin" ? "jdk.app" : "jdk" 6 | } 7 | 8 | static String jdkReleaseFilePath(String osName) { 9 | jdkFolderName(osName) + (osName == "darwin" ? "/Contents/Home/" : "") 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /ci/bootstrap_dependencies.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ./gradlew installDefaultGems 4 | -------------------------------------------------------------------------------- /ci/check_jdk_version_availability.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eo pipefail 3 | 4 | export GRADLE_OPTS="-Xmx4g -Dorg.gradle.daemon=false -Dorg.gradle.logging.level=info -Dfile.encoding=UTF-8" 5 | 6 | echo "Checking local JDK version against latest remote from JVM catalog" 7 | ./gradlew checkNewJdkVersion -------------------------------------------------------------------------------- /ci/ci_docs.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -e 3 | 4 | export JRUBY_OPTS="-J-Xmx2g" 5 | export GRADLE_OPTS="-Xmx2g -Dorg.gradle.daemon=false" 6 | 7 | rake bootstrap 8 | # needed to workaround `group => :development` 9 | rake test:install-core 10 | rake plugin:install-default 11 | echo "Generate json with plugins version" 12 | # Since we generate the lock file and we try to resolve dependencies we will need 13 | # to use the bundle wrapper to correctly find the rake cli. If we don't do this we 14 | # will get an activation error, 15 | ./bin/bundle exec rake generate_plugins_version 16 | -------------------------------------------------------------------------------- /ci/license_check.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -i 2 | export GRADLE_OPTS="-Xmx2g -Dorg.gradle.daemon=false -Dorg.gradle.logging.level=info -Dfile.encoding=UTF-8" 3 | 4 | ./gradlew installDefaultGems 5 | bin/dependencies-report --csv report.csv 6 | 7 | result=$? 8 | 9 | # We want this to show on the CI server 10 | cat report.csv 11 | 12 | exit $result 13 | -------------------------------------------------------------------------------- /ci/logstash_releases.json: -------------------------------------------------------------------------------- 1 | { 2 | "releases": { 3 | "7.current": "7.17.28", 4 | "8.previous": "8.17.6", 5 | "8.current": "8.18.2", 6 | "9.current": "9.0.1" 7 | }, 8 | "snapshots": { 9 | "7.current": "7.17.29-SNAPSHOT", 10 | "8.previous": "8.17.7-SNAPSHOT", 11 | "8.current": "8.18.3-SNAPSHOT", 12 | "8.next": "8.19.0-SNAPSHOT", 13 | "9.next": "9.0.2-SNAPSHOT", 14 | "main": "9.1.0-SNAPSHOT" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /ci/serverless/config/logstash.yml: -------------------------------------------------------------------------------- 1 | xpack.management.enabled: true 2 | xpack.management.pipeline.id: ["gen_es"] 3 | xpack.management.elasticsearch.api_key: ${CPM_API_KEY} 4 | xpack.management.elasticsearch.hosts: ["${ES_ENDPOINT}"] -------------------------------------------------------------------------------- /ci/serverless/dlq_rspec_tests.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -ex 3 | 4 | source ./$(dirname "$0")/common.sh 5 | 6 | export JRUBY_OPTS="-J-Xmx1g" 7 | export SERVERLESS=true 8 | setup_vault 9 | 10 | ./gradlew clean bootstrap assemble installDefaultGems unpackTarDistribution 11 | ./gradlew :logstash-core:copyGemjar 12 | 13 | export GEM_PATH=vendor/bundle/jruby/3.1.0 14 | export GEM_HOME=vendor/bundle/jruby/3.1.0 15 | 16 | vendor/jruby/bin/jruby -S bundle install --with development 17 | 18 | vendor/jruby/bin/jruby -S bundle exec rspec -fd qa/integration/specs/dlq_spec.rb -e "using pipelines.yml" 19 | -------------------------------------------------------------------------------- /ci/serverless/es_filter_tests.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -ex 3 | 4 | source ./$(dirname "$0")/common.sh 5 | 6 | check_es_filter() { 7 | check_logstash_api '.pipelines.main.plugins.filters[] | select(.id == "ok") | .events.out' '1' 8 | } 9 | 10 | check_plugin() { 11 | add_check check_es_filter "Failed es-filter check." 12 | } 13 | 14 | setup 15 | index_test_data 16 | run_logstash "$CURRENT_DIR/pipeline/002_es-filter.conf" check_plugin 17 | -------------------------------------------------------------------------------- /ci/serverless/es_input_tests.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -ex 3 | 4 | source ./$(dirname "$0")/common.sh 5 | 6 | check_es_input() { 7 | check_logstash_api '.pipelines.main.plugins.inputs[0].events.out' '1' 8 | } 9 | 10 | check_plugin() { 11 | add_check check_es_input "Failed es-input check." 12 | } 13 | 14 | setup 15 | index_test_data 16 | run_logstash "$CURRENT_DIR/pipeline/003_es-input.conf" check_plugin 17 | -------------------------------------------------------------------------------- /ci/serverless/metricbeat/metricbeat.yml: -------------------------------------------------------------------------------- 1 | metricbeat.config: 2 | modules: 3 | path: ${path.config}/modules.d/*.yml 4 | reload.enabled: false 5 | 6 | output.elasticsearch: 7 | hosts: ["${ES_ENDPOINT}"] 8 | protocol: "https" 9 | api_key: "${MB_API_KEY}" 10 | 11 | metricbeat.modules: 12 | - module: logstash 13 | metricsets: 14 | - node 15 | - node_stats 16 | period: 10s 17 | hosts: 18 | - localhost:9600 19 | xpack.enabled: true -------------------------------------------------------------------------------- /ci/serverless/monitoring_tests.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Legacy monitoring is disabled. Serverless does not support /_monitoring/bulk, hence this test always fails to ingest metrics. 4 | set -ex 5 | 6 | source ./$(dirname "$0")/common.sh 7 | 8 | get_monitor_count() { 9 | curl -s -H "Authorization: ApiKey $LS_ROLE_API_KEY_ENCODED" -H 'x-elastic-product-origin: logstash' "$ES_ENDPOINT/.monitoring-logstash-7-*/_count" | jq '.count' 10 | } 11 | 12 | compare_monitor_count() { 13 | [[ $(get_monitor_count) -gt "$INITIAL_MONITOR_CNT" ]] && echo "0" 14 | } 15 | 16 | check_monitor() { 17 | count_down_check 20 compare_monitor_count 18 | } 19 | 20 | check() { 21 | add_check check_monitor "Failed monitor check." 22 | } 23 | 24 | setup 25 | export INITIAL_MONITOR_CNT=$(get_monitor_count) 26 | run_cpm_logstash check 27 | -------------------------------------------------------------------------------- /ci/serverless/pipeline/001_es-output.conf: -------------------------------------------------------------------------------- 1 | input { 2 | heartbeat { 3 | interval => 1 4 | add_field => { 5 | "[data_stream][type]" => "logs" 6 | "[data_stream][dataset]" => "${INDEX_NAME}.001" 7 | "[data_stream][namespace]" => "default" 8 | } 9 | } 10 | } 11 | 12 | output { 13 | elasticsearch { 14 | id => "named_index" 15 | hosts => ["${ES_ENDPOINT}"] 16 | api_key => "${PLUGIN_API_KEY}" 17 | index => "${INDEX_NAME}" 18 | } 19 | 20 | elasticsearch { 21 | id => "data_stream" 22 | hosts => ["${ES_ENDPOINT}"] 23 | api_key => "${PLUGIN_API_KEY}" 24 | } 25 | } -------------------------------------------------------------------------------- /ci/serverless/pipeline/002_es-filter.conf: -------------------------------------------------------------------------------- 1 | input { 2 | heartbeat { 3 | interval => 1 4 | } 5 | } 6 | 7 | filter { 8 | elasticsearch { 9 | hosts => ["${ES_ENDPOINT}"] 10 | api_key => "${PLUGIN_API_KEY}" 11 | index => "${INDEX_NAME}" 12 | query => "*" 13 | add_field => {"check" => "good"} 14 | } 15 | 16 | if [check] == "good" { 17 | mutate { id => "ok" } 18 | } 19 | } 20 | 21 | output { 22 | stdout { 23 | codec => dots 24 | } 25 | } -------------------------------------------------------------------------------- /ci/serverless/pipeline/003_es-input.conf: -------------------------------------------------------------------------------- 1 | input { 2 | elasticsearch { 3 | hosts => ["${ES_ENDPOINT}"] 4 | api_key => "${PLUGIN_API_KEY}" 5 | index => "${INDEX_NAME}" 6 | size => 100 7 | schedule => "*/10 * * * * *" 8 | } 9 | } 10 | output { 11 | stdout { 12 | codec => dots 13 | } 14 | } -------------------------------------------------------------------------------- /ci/serverless/pipeline/004_integration-filter.conf: -------------------------------------------------------------------------------- 1 | input { 2 | heartbeat { 3 | interval => 1 4 | add_field => { 5 | "[data_stream][type]" => "logs" 6 | "[data_stream][dataset]" => "${INDEX_NAME}.004" 7 | "[data_stream][namespace]" => "default" 8 | } 9 | } 10 | } 11 | filter { 12 | elastic_integration { 13 | hosts => "${ES_ENDPOINT}" 14 | api_key => "${INTEGRATION_API_KEY_ENCODED}" 15 | remove_field => ["_version"] 16 | add_field => {"ingested" => "ok"} 17 | } 18 | 19 | if ([ingested] == "ok") and ([message][1] =~ 'serverless' ) { 20 | mutate { id => "mutate1" } 21 | } 22 | } 23 | output { 24 | stdout { 25 | codec => dots 26 | } 27 | 28 | elasticsearch { 29 | id => "data_stream" 30 | hosts => ["${ES_ENDPOINT}"] 31 | api_key => "${PLUGIN_API_KEY}" 32 | } 33 | } -------------------------------------------------------------------------------- /ci/serverless/pipeline/005_uptime.conf: -------------------------------------------------------------------------------- 1 | input { 2 | exec { command => 'uptime' interval => 10 } 3 | } 4 | output { 5 | stdout { 6 | codec => dots 7 | } 8 | } -------------------------------------------------------------------------------- /ci/serverless/test_data/book.json: -------------------------------------------------------------------------------- 1 | {"index": {}} 2 | {"book_name": "The Great Gatsby", "author": "F. Scott Fitzgerald", "@timestamp": "1925-04-10T00:00:00"} 3 | {"index": {}} 4 | {"book_name": "To Kill a Mockingbird", "author": "Harper Lee", "@timestamp": "1960-07-11T00:00:00"} 5 | {"index": {}} 6 | {"book_name": "1984", "author": "George Orwell", "@timestamp": "1949-06-08T00:00:00"} 7 | {"index": {}} 8 | {"book_name": "Pride and Prejudice", "author": "Jane Austen", "@timestamp": "1813-01-28T00:00:00"} 9 | {"index": {}} 10 | {"book_name": "The Catcher in the Rye", "author": "J.D. Salinger", "@timestamp": "1951-07-16T00:00:00"} 11 | {"index": {}} 12 | {"book_name": "Moby Dick", "author": "Herman Melville", "@timestamp": "1851-10-18T00:00:00"} 13 | {"index": {}} 14 | {"book_name": "The Lord of the Rings", "author": "J.R.R. Tolkien", "@timestamp": "1954-07-29T00:00:00"} 15 | -------------------------------------------------------------------------------- /ci/serverless/test_data/index_template.json: -------------------------------------------------------------------------------- 1 | { 2 | "index_patterns": ["logs-serverless*"], 3 | "data_stream": { }, 4 | "priority": 500, 5 | "template": { 6 | "settings": { 7 | "index.default_pipeline": "integration-logstash_test.events-default" 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /ci/serverless/test_data/ingest_pipeline.json: -------------------------------------------------------------------------------- 1 | { 2 | "processors": [ 3 | { 4 | "append": { 5 | "field": "message", 6 | "value": ["serverless test ^_^ "] 7 | } 8 | } 9 | ] 10 | } -------------------------------------------------------------------------------- /ci/serverless/test_data/stdin_stdout.json: -------------------------------------------------------------------------------- 1 | { 2 | "pipeline": "input { stdin {} } output { stdout {} }", 3 | "settings": { 4 | "queue.type": "persisted" 5 | } 6 | } -------------------------------------------------------------------------------- /ci/test_plugins.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -euo pipefail 3 | 4 | export JRUBY_OPTS="-J-Xmx1g" 5 | export GRADLE_OPTS="-Xmx4g -Dorg.gradle.jvmargs=-Xmx4g -Dorg.gradle.daemon=false -Dorg.gradle.logging.level=info -Dfile.encoding=UTF-8" 6 | 7 | ./gradlew assemble 8 | 9 | vendor/jruby/bin/jruby ci/test_plugins.rb $@ 10 | -------------------------------------------------------------------------------- /config/logstash-sample.conf: -------------------------------------------------------------------------------- 1 | # Sample Logstash configuration for creating a simple 2 | # Beats -> Logstash -> Elasticsearch pipeline. 3 | 4 | input { 5 | beats { 6 | port => 5044 7 | } 8 | } 9 | 10 | output { 11 | elasticsearch { 12 | hosts => ["http://localhost:9200"] 13 | index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" 14 | #user => "elastic" 15 | #password => "changeme" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /data/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/data/.gitkeep -------------------------------------------------------------------------------- /docker/bin/elastic-version: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | # 3 | # Print the Elastic Stack version for the current branch, as defined in 4 | # the 'version.json' file. 5 | # 6 | require 'yaml' 7 | 8 | def get_hard_coded_version 9 | version_info = YAML::safe_load(IO.read('../versions.yml')) 10 | version_info['logstash'] 11 | end 12 | 13 | def qualify(version) 14 | qualifier = ENV['VERSION_QUALIFIER'] 15 | qualifier.nil? || qualifier.empty? ? version : [version, qualifier].join("-") 16 | end 17 | 18 | def get_version 19 | version = get_hard_coded_version() 20 | version = qualify(version) 21 | ENV["RELEASE"] == "1" ? version : [version, "SNAPSHOT"].join("-") 22 | end 23 | 24 | puts get_version 25 | -------------------------------------------------------------------------------- /docker/data/logstash/config/log4j2.properties: -------------------------------------------------------------------------------- 1 | status = error 2 | name = LogstashPropertiesConfig 3 | 4 | appender.console.type = Console 5 | appender.console.name = plain_console 6 | appender.console.layout.type = PatternLayout 7 | appender.console.layout.pattern = [%d{ISO8601}][%-5p][%-25c]%notEmpty{[%X{pipeline.id}]}%notEmpty{[%X{plugin.id}]} %m%n 8 | 9 | appender.json_console.type = Console 10 | appender.json_console.name = json_console 11 | appender.json_console.layout.type = JSONLayout 12 | appender.json_console.layout.compact = true 13 | appender.json_console.layout.eventEol = true 14 | 15 | rootLogger.level = ${sys:ls.log.level} 16 | rootLogger.appenderRef.console.ref = ${sys:ls.log.format}_console 17 | -------------------------------------------------------------------------------- /docker/data/logstash/config/logstash-full.yml: -------------------------------------------------------------------------------- 1 | api.http.host: "0.0.0.0" 2 | xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ] 3 | -------------------------------------------------------------------------------- /docker/data/logstash/config/logstash-oss.yml: -------------------------------------------------------------------------------- 1 | api.http.host: "0.0.0.0" 2 | -------------------------------------------------------------------------------- /docker/data/logstash/config/pipelines.yml: -------------------------------------------------------------------------------- 1 | # This file is where you define your pipelines. You can define multiple. 2 | # For more information on multiple pipelines, see the documentation: 3 | # https://www.elastic.co/guide/en/logstash/current/multiple-pipelines.html 4 | 5 | - pipeline.id: main 6 | path.config: "/usr/share/logstash/pipeline" 7 | -------------------------------------------------------------------------------- /docker/data/logstash/env2yaml/go.mod: -------------------------------------------------------------------------------- 1 | module logstash/env2yaml 2 | 3 | go 1.21 4 | 5 | require gopkg.in/yaml.v2 v2.4.0 6 | -------------------------------------------------------------------------------- /docker/data/logstash/env2yaml/go.sum: -------------------------------------------------------------------------------- 1 | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 2 | gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= 3 | gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= 4 | -------------------------------------------------------------------------------- /docker/data/logstash/pipeline/default.conf: -------------------------------------------------------------------------------- 1 | input { 2 | beats { 3 | port => 5044 4 | } 5 | } 6 | 7 | output { 8 | stdout { 9 | codec => rubydebug 10 | } 11 | } 12 | 13 | -------------------------------------------------------------------------------- /docker/examples/logstash.conf: -------------------------------------------------------------------------------- 1 | input { 2 | heartbeat { 3 | interval => 5 4 | message => 'Hello from Logstash 💓' 5 | } 6 | } 7 | 8 | output { 9 | elasticsearch { 10 | hosts => [ 'elasticsearch' ] 11 | user => 'elastic' 12 | password => 'changeme' 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /docker/ironbank/go/src/env2yaml/go.mod: -------------------------------------------------------------------------------- 1 | module env2yaml 2 | 3 | go 1.13 4 | 5 | require gopkg.in/yaml.v2 v2.3.0 6 | -------------------------------------------------------------------------------- /docker/ironbank/go/src/env2yaml/go.sum: -------------------------------------------------------------------------------- 1 | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 2 | gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= 3 | gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 4 | -------------------------------------------------------------------------------- /docker/ironbank/go/src/env2yaml/vendor/modules.txt: -------------------------------------------------------------------------------- 1 | # gopkg.in/yaml.v2 v2.3.0 2 | gopkg.in/yaml.v2 3 | -------------------------------------------------------------------------------- /docs/extend/contribute-to-core.md: -------------------------------------------------------------------------------- 1 | --- 2 | mapped_pages: 3 | - https://www.elastic.co/guide/en/logstash/current/contribute-to-core.html 4 | --- 5 | 6 | # Extending Logstash core [contribute-to-core] 7 | 8 | We also welcome contributions and bug fixes to the Logstash core feature set. 9 | 10 | Please read through our [contribution](https://github.com/elastic/logstash/blob/main/CONTRIBUTING.md) guide, and the Logstash [readme](https://github.com/elastic/logstash/blob/main/README.md) document. 11 | 12 | -------------------------------------------------------------------------------- /docs/extend/toc.yml: -------------------------------------------------------------------------------- 1 | toc: 2 | - file: index.md 3 | - file: input-new-plugin.md 4 | - file: codec-new-plugin.md 5 | - file: filter-new-plugin.md 6 | - file: output-new-plugin.md 7 | - file: community-maintainer.md 8 | - file: plugin-doc.md 9 | - file: publish-plugin.md 10 | - file: plugin-listing.md 11 | - file: contributing-patch-plugin.md 12 | - file: contribute-to-core.md 13 | - file: create-logstash-plugins.md 14 | children: 15 | - file: java-input-plugin.md 16 | - file: java-codec-plugin.md 17 | - file: java-filter-plugin.md 18 | - file: java-output-plugin.md -------------------------------------------------------------------------------- /docs/reference/advanced-logstash-configurations.md: -------------------------------------------------------------------------------- 1 | --- 2 | mapped_pages: 3 | - https://www.elastic.co/guide/en/logstash/current/configuration-advanced.html 4 | --- 5 | 6 | # Advanced Logstash configurations [configuration-advanced] 7 | 8 | You can take {{ls}} beyond basic configuration to handle more advanced requirements, such as multiple pipelines, communication between {{ls}} pipelines, and multiple line events. 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/reference/images/basic_logstash_pipeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/docs/reference/images/basic_logstash_pipeline.png -------------------------------------------------------------------------------- /docs/reference/images/centralized_config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/docs/reference/images/centralized_config.png -------------------------------------------------------------------------------- /docs/reference/images/dead_letter_queue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/docs/reference/images/dead_letter_queue.png -------------------------------------------------------------------------------- /docs/reference/images/deploy1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/docs/reference/images/deploy1.png -------------------------------------------------------------------------------- /docs/reference/images/deploy2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/docs/reference/images/deploy2.png -------------------------------------------------------------------------------- /docs/reference/images/deploy3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/docs/reference/images/deploy3.png -------------------------------------------------------------------------------- /docs/reference/images/deploy4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/docs/reference/images/deploy4.png -------------------------------------------------------------------------------- /docs/reference/images/integration-assets-dashboards.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/docs/reference/images/integration-assets-dashboards.png -------------------------------------------------------------------------------- /docs/reference/images/integration-dashboard-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/docs/reference/images/integration-dashboard-overview.png -------------------------------------------------------------------------------- /docs/reference/images/kibana-filebeat-data.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/docs/reference/images/kibana-filebeat-data.png -------------------------------------------------------------------------------- /docs/reference/images/kibana-home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/docs/reference/images/kibana-home.png -------------------------------------------------------------------------------- /docs/reference/images/monitoring-ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/docs/reference/images/monitoring-ui.png -------------------------------------------------------------------------------- /docs/reference/images/nodestats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/docs/reference/images/nodestats.png -------------------------------------------------------------------------------- /docs/reference/images/overviewstats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/docs/reference/images/overviewstats.png -------------------------------------------------------------------------------- /docs/reference/images/pipeline-input-detail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/docs/reference/images/pipeline-input-detail.png -------------------------------------------------------------------------------- /docs/reference/images/pipeline-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/docs/reference/images/pipeline-tree.png -------------------------------------------------------------------------------- /docs/reference/images/pipeline_correct_load.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/docs/reference/images/pipeline_correct_load.png -------------------------------------------------------------------------------- /docs/reference/images/pipeline_overload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/docs/reference/images/pipeline_overload.png -------------------------------------------------------------------------------- /docs/reference/managing-geoip-databases.md: -------------------------------------------------------------------------------- 1 | --- 2 | mapped_pages: 3 | - https://www.elastic.co/guide/en/logstash/current/geoip-database-management.html 4 | --- 5 | 6 | # Managing GeoIP databases [geoip-database-management] 7 | 8 | Logstash provides GeoIP database management features to make it easier for you to use plugins that require an up-to-date database to enrich events with geographic data. 9 | 10 | * [Feature Overview](/reference/logstash-geoip-database-management.md) 11 | * [Configuration Guide](/reference/configuring-geoip-database-management.md) 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/reference/managing-logstash.md: -------------------------------------------------------------------------------- 1 | --- 2 | mapped_pages: 3 | - https://www.elastic.co/guide/en/logstash/current/config-management.html 4 | --- 5 | 6 | # Managing Logstash [config-management] 7 | 8 | Logstash provides configuration management features to make it easier for you to manage updates to your configuration over time. 9 | 10 | The topics in this section describe Logstash configuration management features only. For information about other config management tools, such as Puppet and Chef, see the documentation for those projects. 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /docs/reference/monitoring-troubleshooting.md: -------------------------------------------------------------------------------- 1 | --- 2 | navigation_title: "Troubleshooting" 3 | mapped_pages: 4 | - https://www.elastic.co/guide/en/logstash/current/monitoring-troubleshooting.html 5 | --- 6 | 7 | # Troubleshooting monitoring in Logstash [monitoring-troubleshooting] 8 | 9 | 10 | 11 | ## Logstash Monitoring Not Working After Upgrade [_logstash_monitoring_not_working_after_upgrade] 12 | 13 | When upgrading from older versions, the built-in `logstash_system` user is disabled for security reasons. To resume monitoring: 14 | 15 | 1. Change the `logstash_system` password: 16 | 17 | ```console 18 | PUT _security/user/logstash_system/_password 19 | { 20 | "password": "newpassword" 21 | } 22 | ``` 23 | 24 | 2. Re-enable the `logstash_system` user: 25 | 26 | ```console 27 | PUT _security/user/logstash_system/_enable 28 | ``` 29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/reference/performance-tuning.md: -------------------------------------------------------------------------------- 1 | --- 2 | mapped_pages: 3 | - https://www.elastic.co/guide/en/logstash/current/performance-tuning.html 4 | --- 5 | 6 | # Performance tuning [performance-tuning] 7 | 8 | This section includes the following information about tuning Logstash performance: 9 | 10 | * [Performance troubleshooting](/reference/performance-troubleshooting.md) 11 | * [Tuning and profiling logstash pipeline performance](/reference/tuning-logstash.md) 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/reference/plugin-generator.md: -------------------------------------------------------------------------------- 1 | --- 2 | mapped_pages: 3 | - https://www.elastic.co/guide/en/logstash/current/plugin-generator.html 4 | --- 5 | 6 | # Generating plugins [plugin-generator] 7 | 8 | You can create your own Logstash plugin in seconds! The generate subcommand of `bin/logstash-plugin` creates the foundation for a new Logstash plugin with templatized files. It creates the correct directory structure, gemspec files, and dependencies so you can start adding custom code to process data with Logstash. 9 | 10 | **Example Usage** 11 | 12 | ```sh 13 | bin/logstash-plugin generate --type input --name xkcd --path ~/ws/elastic/plugins 14 | ``` 15 | 16 | * `--type`: Type of plugin - input, filter, output, or codec 17 | * `--name`: Name for the new plugin 18 | * `--path`: Directory path where the new plugin structure will be created. If you don’t specify a directory, the plugin is created in the current directory. 19 | -------------------------------------------------------------------------------- /docs/reference/running-logstash-kubernetes.md: -------------------------------------------------------------------------------- 1 | --- 2 | mapped_pages: 3 | - https://www.elastic.co/guide/en/logstash/current/running-logstash-kubernetes.html 4 | --- 5 | 6 | # Running Logstash on Kubernetes [running-logstash-kubernetes] 7 | 8 | Check out the [QuickStart](docs-content://deploy-manage/deploy/cloud-on-k8s/install-using-yaml-manifest-quickstart.md) to install ECK and [Run {{ls}} on ECK](docs-content://deploy-manage/deploy/cloud-on-k8s/logstash.md) to deploy {{ls}} with ECK. 9 | 10 | -------------------------------------------------------------------------------- /docs/reference/transforming-data.md: -------------------------------------------------------------------------------- 1 | --- 2 | mapped_pages: 3 | - https://www.elastic.co/guide/en/logstash/current/transformation.html 4 | --- 5 | 6 | # Transforming data [transformation] 7 | 8 | With over 200 plugins in the Logstash plugin ecosystem, it’s sometimes challenging to choose the best plugin to meet your data processing needs. In this section, we’ve collected a list of popular plugins and organized them according to their processing capabilities: 9 | 10 | * [Performing Core Operations](/reference/core-operations.md) 11 | * [Deserializing Data](/reference/data-deserialization.md) 12 | * [Extracting Fields and Wrangling Data](/reference/field-extraction.md) 13 | * [Enriching Data with Lookups](/reference/lookup-enrichment.md) 14 | 15 | Also see [*Filter plugins*](logstash-docs-md://lsr/filter-plugins.md) and [*Codec plugins*](logstash-docs-md://lsr/codec-plugins.md) for the full list of available data processing plugins. 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /docs/reference/upgrading-minor-versions.md: -------------------------------------------------------------------------------- 1 | --- 2 | mapped_pages: 3 | - https://www.elastic.co/guide/en/logstash/current/upgrading-minor-versions.html 4 | --- 5 | 6 | # Upgrading between minor versions [upgrading-minor-versions] 7 | 8 | As a general rule, you can upgrade between minor versions (for example, 9.x to 9.y, where x < y) by simply installing the new release and restarting {{ls}}. {{ls}} typically maintains backwards compatibility for configuration settings and exported fields. Please review the [release notes](/release-notes/index.md) for potential exceptions. 9 | 10 | Upgrading between non-consecutive major versions (7.x to 9.x, for example) is not supported. 11 | 12 | -------------------------------------------------------------------------------- /docs/reference/working-with-filebeat-modules.md: -------------------------------------------------------------------------------- 1 | --- 2 | mapped_pages: 3 | - https://www.elastic.co/guide/en/logstash/current/filebeat-modules.html 4 | --- 5 | 6 | # Working with Filebeat modules [filebeat-modules] 7 | 8 | {{filebeat}} comes packaged with pre-built [modules](beats://reference/filebeat/filebeat-modules.md) that contain the configurations needed to collect, parse, enrich, and visualize data from various log file formats. Each {{filebeat}} module consists of one or more filesets that contain ingest node pipelines, {{es}} templates, {{filebeat}} input configurations, and {{kib}} dashboards. 9 | 10 | You can use {{filebeat}} modules with {{ls}}, but you need to do some extra setup. The simplest approach is to [set up and use the ingest pipelines](/reference/use-ingest-pipelines.md) provided by {{filebeat}}. 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /docs/release-notes/known-issues.md: -------------------------------------------------------------------------------- 1 | --- 2 | navigation_title: "Known issues" 3 | --- 4 | 5 | # Logstash known issues [logstash-known-issues] 6 | 7 | Known issues are significant defects or limitations that may impact your implementation. 8 | These issues are actively being worked on and will be addressed in a future release. 9 | Review known issues to help you make informed decisions, such as upgrading to a new version. 10 | 11 | 12 | ## 9.0.0 13 | 14 | None at this time -------------------------------------------------------------------------------- /docs/release-notes/toc.yml: -------------------------------------------------------------------------------- 1 | toc: 2 | - file: index.md 3 | - file: known-issues.md 4 | - file: breaking-changes.md 5 | - file: deprecations.md -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx2g -Dfile.encoding=UTF-8 2 | org.gradle.daemon=false 3 | 4 | ## from default 30 secs to 2 minutes network timeouts 5 | systemProp.org.gradle.internal.http.connectionTimeout=120000 6 | systemProp.org.gradle.internal.http.socketTimeout=120000 7 | systemProp.org.gradle.internal.http.idleConnectionTimeout=120000 8 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /lib/pluginmanager/settings.xml.erb: -------------------------------------------------------------------------------- 1 | 5 | 6 | <% proxies.each_with_index do |proxy, idx| %> 7 | 8 | <%=proxy.host%>.<%=idx%> 9 | true 10 | <%=proxy.protocol%> 11 | <%=proxy.host%> 12 | <%=proxy.port%> 13 | <%=proxy.username%> 14 | <%=proxy.password%> 15 | 16 | <% end %> 17 | 18 | 19 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/codec-plugin/.ruby-version: -------------------------------------------------------------------------------- 1 | ../../../../.ruby-version -------------------------------------------------------------------------------- /lib/pluginmanager/templates/codec-plugin/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.1.0 2 | - Plugin created with the logstash plugin generator 3 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/codec-plugin/CONTRIBUTORS.erb: -------------------------------------------------------------------------------- 1 | The following is a list of people who have contributed ideas, code, bug 2 | reports, or in general have helped logstash along its way. 3 | 4 | Contributors: 5 | * <%= author %> - <%= email %> 6 | 7 | Note: If you've sent us patches, bug reports, or otherwise contributed to 8 | Logstash, and you aren't on the list above and want to be, please let us know 9 | and we'll make sure you're here. Contributions from folks like you are what make 10 | open source awesome. 11 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/codec-plugin/DEVELOPER.md.erb: -------------------------------------------------------------------------------- 1 | # logstash-codec-<%= plugin_name %> 2 | Example codec plugin. This should help bootstrap your effort to write your own codec plugin! 3 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/codec-plugin/Gemfile.erb: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | gemspec 3 | 4 | logstash_path = ENV['LOGSTASH_PATH'] || '<%= logstash_path %>' 5 | 6 | if Dir.exist?(logstash_path) 7 | gem 'logstash-core', :path => "#{logstash_path}/logstash-core" 8 | gem 'logstash-core-plugin-api', :path => "#{logstash_path}/logstash-core-plugin-api" 9 | end 10 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/codec-plugin/LICENSE: -------------------------------------------------------------------------------- 1 | Licensed under the Apache License, Version 2.0 (the "License"); 2 | you may not use this file except in compliance with the License. 3 | You may obtain a copy of the License at 4 | 5 | http://www.apache.org/licenses/LICENSE-2.0 6 | 7 | Unless required by applicable law or agreed to in writing, software 8 | distributed under the License is distributed on an "AS IS" BASIS, 9 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 10 | See the License for the specific language governing permissions and 11 | limitations under the License. 12 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/codec-plugin/Rakefile: -------------------------------------------------------------------------------- 1 | require "logstash/devutils/rake" 2 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/codec-plugin/spec/codecs/example_spec.rb.erb: -------------------------------------------------------------------------------- 1 | # encoding: utf-8 2 | require_relative '../spec_helper' 3 | require "logstash/codecs/<%= plugin_name %>" 4 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/codec-plugin/spec/spec_helper.rb: -------------------------------------------------------------------------------- 1 | # Licensed to Elasticsearch B.V. under one or more contributor 2 | # license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright 4 | # ownership. Elasticsearch B.V. licenses this file to you under 5 | # the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | 18 | require "logstash/devutils/rspec/spec_helper" 19 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/filter-plugin/.ruby-version: -------------------------------------------------------------------------------- 1 | ../../../../.ruby-version -------------------------------------------------------------------------------- /lib/pluginmanager/templates/filter-plugin/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.1.0 2 | - Plugin created with the logstash plugin generator 3 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/filter-plugin/CONTRIBUTORS.erb: -------------------------------------------------------------------------------- 1 | The following is a list of people who have contributed ideas, code, bug 2 | reports, or in general have helped logstash along its way. 3 | 4 | Contributors: 5 | * <%= author %> - <%= email %> 6 | 7 | Note: If you've sent us patches, bug reports, or otherwise contributed to 8 | Logstash, and you aren't on the list above and want to be, please let us know 9 | and we'll make sure you're here. Contributions from folks like you are what make 10 | open source awesome. 11 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/filter-plugin/DEVELOPER.md.erb: -------------------------------------------------------------------------------- 1 | # logstash-filter-<%= plugin_name %> 2 | Example filter plugin. This should help bootstrap your effort to write your own filter plugin! 3 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/filter-plugin/Gemfile.erb: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | gemspec 3 | 4 | logstash_path = ENV['LOGSTASH_PATH'] || '<%= logstash_path %>' 5 | 6 | if Dir.exist?(logstash_path) 7 | gem 'logstash-core', :path => "#{logstash_path}/logstash-core" 8 | gem 'logstash-core-plugin-api', :path => "#{logstash_path}/logstash-core-plugin-api" 9 | end 10 | 11 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/filter-plugin/LICENSE: -------------------------------------------------------------------------------- 1 | Licensed under the Apache License, Version 2.0 (the "License"); 2 | you may not use this file except in compliance with the License. 3 | You may obtain a copy of the License at 4 | 5 | http://www.apache.org/licenses/LICENSE-2.0 6 | 7 | Unless required by applicable law or agreed to in writing, software 8 | distributed under the License is distributed on an "AS IS" BASIS, 9 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 10 | See the License for the specific language governing permissions and 11 | limitations under the License. 12 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/filter-plugin/Rakefile: -------------------------------------------------------------------------------- 1 | require "logstash/devutils/rake" 2 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/filter-plugin/spec/filters/example_spec.rb.erb: -------------------------------------------------------------------------------- 1 | # encoding: utf-8 2 | require_relative '../spec_helper' 3 | require "logstash/filters/<%= plugin_name %>" 4 | 5 | describe LogStash::Filters::<%= classify(plugin_name) %> do 6 | describe "Set to Hello World" do 7 | let(:config) do <<-CONFIG 8 | filter { 9 | <%= plugin_name %> { 10 | message => "Hello World" 11 | } 12 | } 13 | CONFIG 14 | end 15 | 16 | sample("message" => "some text") do 17 | expect(subject).to include("message") 18 | expect(subject.get('message')).to eq('Hello World') 19 | end 20 | end 21 | end 22 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/filter-plugin/spec/spec_helper.rb: -------------------------------------------------------------------------------- 1 | # Licensed to Elasticsearch B.V. under one or more contributor 2 | # license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright 4 | # ownership. Elasticsearch B.V. licenses this file to you under 5 | # the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | 18 | require "logstash/devutils/rspec/spec_helper" 19 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/input-plugin/.ruby-version: -------------------------------------------------------------------------------- 1 | ../../../../.ruby-version -------------------------------------------------------------------------------- /lib/pluginmanager/templates/input-plugin/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.1.0 2 | - Plugin created with the logstash plugin generator 3 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/input-plugin/CONTRIBUTORS.erb: -------------------------------------------------------------------------------- 1 | The following is a list of people who have contributed ideas, code, bug 2 | reports, or in general have helped logstash along its way. 3 | 4 | Contributors: 5 | * <%= author %> - <%= email %> 6 | 7 | Note: If you've sent us patches, bug reports, or otherwise contributed to 8 | Logstash, and you aren't on the list above and want to be, please let us know 9 | and we'll make sure you're here. Contributions from folks like you are what make 10 | open source awesome. 11 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/input-plugin/DEVELOPER.md.erb: -------------------------------------------------------------------------------- 1 | # logstash-input-<%= plugin_name %> 2 | Example input plugin. This should help bootstrap your effort to write your own input plugin! 3 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/input-plugin/Gemfile.erb: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | gemspec 3 | 4 | logstash_path = ENV['LOGSTASH_PATH'] || '<%= logstash_path %>' 5 | 6 | if Dir.exist?(logstash_path) 7 | gem 'logstash-core', :path => "#{logstash_path}/logstash-core" 8 | gem 'logstash-core-plugin-api', :path => "#{logstash_path}/logstash-core-plugin-api" 9 | end -------------------------------------------------------------------------------- /lib/pluginmanager/templates/input-plugin/LICENSE: -------------------------------------------------------------------------------- 1 | Licensed under the Apache License, Version 2.0 (the "License"); 2 | you may not use this file except in compliance with the License. 3 | You may obtain a copy of the License at 4 | 5 | http://www.apache.org/licenses/LICENSE-2.0 6 | 7 | Unless required by applicable law or agreed to in writing, software 8 | distributed under the License is distributed on an "AS IS" BASIS, 9 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 10 | See the License for the specific language governing permissions and 11 | limitations under the License. 12 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/input-plugin/Rakefile: -------------------------------------------------------------------------------- 1 | require "logstash/devutils/rake" 2 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/input-plugin/spec/inputs/example_spec.rb.erb: -------------------------------------------------------------------------------- 1 | # encoding: utf-8 2 | require 'logstash/devutils/rspec/shared_examples' 3 | require "logstash/devutils/rspec/spec_helper" 4 | require "logstash/inputs/<%= plugin_name %>" 5 | 6 | describe LogStash::Inputs::<%= classify(plugin_name) %> do 7 | 8 | it_behaves_like "an interruptible input plugin" do 9 | let(:config) { { "interval" => 100 } } 10 | end 11 | 12 | end 13 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/output-plugin/.ruby-version: -------------------------------------------------------------------------------- 1 | ../../../../.ruby-version -------------------------------------------------------------------------------- /lib/pluginmanager/templates/output-plugin/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.1.0 2 | - Plugin created with the logstash plugin generator 3 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/output-plugin/CONTRIBUTORS.erb: -------------------------------------------------------------------------------- 1 | The following is a list of people who have contributed ideas, code, bug 2 | reports, or in general have helped logstash along its way. 3 | 4 | Contributors: 5 | * <%= author %> - <%= email %> 6 | 7 | Note: If you've sent us patches, bug reports, or otherwise contributed to 8 | Logstash, and you aren't on the list above and want to be, please let us know 9 | and we'll make sure you're here. Contributions from folks like you are what make 10 | open source awesome. 11 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/output-plugin/DEVELOPER.md.erb: -------------------------------------------------------------------------------- 1 | # logstash-output-<%= plugin_name %> 2 | Example output plugin. This should help bootstrap your effort to write your own output plugin! 3 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/output-plugin/Gemfile.erb: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | gemspec 3 | 4 | logstash_path = ENV['LOGSTASH_PATH'] || '<%= logstash_path %>' 5 | 6 | if Dir.exist?(logstash_path) 7 | gem 'logstash-core', :path => "#{logstash_path}/logstash-core" 8 | gem 'logstash-core-plugin-api', :path => "#{logstash_path}/logstash-core-plugin-api" 9 | end 10 | 11 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/output-plugin/LICENSE: -------------------------------------------------------------------------------- 1 | Licensed under the Apache License, Version 2.0 (the "License"); 2 | you may not use this file except in compliance with the License. 3 | You may obtain a copy of the License at 4 | 5 | http://www.apache.org/licenses/LICENSE-2.0 6 | 7 | Unless required by applicable law or agreed to in writing, software 8 | distributed under the License is distributed on an "AS IS" BASIS, 9 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 10 | See the License for the specific language governing permissions and 11 | limitations under the License. 12 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/output-plugin/Rakefile: -------------------------------------------------------------------------------- 1 | require "logstash/devutils/rake" 2 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/output-plugin/lib/logstash/outputs/example.rb.erb: -------------------------------------------------------------------------------- 1 | # encoding: utf-8 2 | require "logstash/outputs/base" 3 | 4 | # An <%= plugin_name %> output that does nothing. 5 | class LogStash::Outputs::<%= classify(plugin_name) %> < LogStash::Outputs::Base 6 | config_name "<%= plugin_name %>" 7 | 8 | public 9 | def register 10 | end # def register 11 | 12 | public 13 | def receive(event) 14 | return "Event received" 15 | end # def event 16 | end # class LogStash::Outputs::<%= classify(plugin_name) %> 17 | -------------------------------------------------------------------------------- /lib/pluginmanager/templates/output-plugin/spec/outputs/example_spec.rb.erb: -------------------------------------------------------------------------------- 1 | # encoding: utf-8 2 | require "logstash/devutils/rspec/spec_helper" 3 | require "logstash/outputs/<%= plugin_name %>" 4 | require "logstash/codecs/plain" 5 | 6 | 7 | describe LogStash::Outputs::<%= classify(plugin_name) %> do 8 | let(:sample_event) { LogStash::Event.new } 9 | let(:output) { LogStash::Outputs::<%= classify(plugin_name) %>.new } 10 | 11 | before do 12 | output.register 13 | end 14 | 15 | describe "receive message" do 16 | subject { output.receive(sample_event) } 17 | 18 | it "returns a string" do 19 | expect(subject).to eq("Event received") 20 | end 21 | end 22 | end 23 | -------------------------------------------------------------------------------- /logstash-core/.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/logstash-core/.lock -------------------------------------------------------------------------------- /logstash-core/benchmarks/gradle.properties: -------------------------------------------------------------------------------- 1 | isDistributedArtifact=false 2 | 3 | -------------------------------------------------------------------------------- /logstash-core/benchmarks/src/main/resources/log4j2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /logstash-core/gradle.properties: -------------------------------------------------------------------------------- 1 | isDistributedArtifact=true 2 | -------------------------------------------------------------------------------- /logstash-core/lib/logstash-core.rb: -------------------------------------------------------------------------------- 1 | # Licensed to Elasticsearch B.V. under one or more contributor 2 | # license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright 4 | # ownership. Elasticsearch B.V. licenses this file to you under 5 | # the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | 18 | require "logstash-core/logstash-core" 19 | -------------------------------------------------------------------------------- /logstash-core/lib/logstash/errors.rb: -------------------------------------------------------------------------------- 1 | # Licensed to Elasticsearch B.V. under one or more contributor 2 | # license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright 4 | # ownership. Elasticsearch B.V. licenses this file to you under 5 | # the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | 18 | # Keeping this file for backwards compatibility with plugins that include it directly. 19 | -------------------------------------------------------------------------------- /logstash-core/lib/logstash/event.rb: -------------------------------------------------------------------------------- 1 | # Licensed to Elasticsearch B.V. under one or more contributor 2 | # license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright 4 | # ownership. Elasticsearch B.V. licenses this file to you under 5 | # the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | 18 | # used only in the Ruby execution engine 19 | # for backward compatibility 20 | -------------------------------------------------------------------------------- /logstash-core/lib/logstash/instrument/metric.rb: -------------------------------------------------------------------------------- 1 | # Licensed to Elasticsearch B.V. under one or more contributor 2 | # license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright 4 | # ownership. Elasticsearch B.V. licenses this file to you under 5 | # the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | 18 | # This file is kept for backwards compatibility with plugins that include it. 19 | -------------------------------------------------------------------------------- /logstash-core/lib/logstash/logging.rb: -------------------------------------------------------------------------------- 1 | # Licensed to Elasticsearch B.V. under one or more contributor 2 | # license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright 4 | # ownership. Elasticsearch B.V. licenses this file to you under 5 | # the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | -------------------------------------------------------------------------------- /logstash-core/lib/logstash/patches/polyglot.rb: -------------------------------------------------------------------------------- 1 | # NOTE: this patch is meant to be used when polyglot (a tree-top dependency) is loaded. 2 | # At runtime we avoid loading polyglot, it's only needed for the rake compile task atm. 3 | require 'polyglot' 4 | 5 | module Kernel 6 | alias original_require require 7 | 8 | def require(*a, &b) 9 | begin 10 | original_require(*a, &b) 11 | rescue RuntimeError => e 12 | # https://github.com/jruby/jruby/pull/7145 introduced an exception check for circular causes, which 13 | # breaks when the polyglot library is used and LoadErrors are emitted 14 | if e.message == "circular causes" 15 | raise e.cause 16 | end 17 | raise e 18 | end 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /logstash-core/lib/logstash/plugins.rb: -------------------------------------------------------------------------------- 1 | # Licensed to Elasticsearch B.V. under one or more contributor 2 | # license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright 4 | # ownership. Elasticsearch B.V. licenses this file to you under 5 | # the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | 18 | require "logstash/plugins/registry" 19 | require 'logstash/plugins/builtin' 20 | -------------------------------------------------------------------------------- /logstash-core/lib/logstash/plugins/ca_trusted_fingerprint_support.rb: -------------------------------------------------------------------------------- 1 | module LogStash 2 | module Plugins 3 | module CATrustedFingerprintSupport 4 | java_import "org.logstash.util.CATrustedFingerprintTrustStrategy" 5 | 6 | def self.included(base) 7 | fail(ArgumentError) unless base < LogStash::Plugin 8 | 9 | base.config(:ca_trusted_fingerprint, :validate => :sha_256_hex, :list => true) 10 | end 11 | 12 | extend LogStash::Util::ThreadSafeAttributes 13 | 14 | lazy_init_attr(:trust_strategy_for_ca_trusted_fingerprint, 15 | variable: :@_trust_strategy_for_ca_trusted_fingerprint) do 16 | require 'logstash/patches/manticore/trust_strategies' 17 | @ca_trusted_fingerprint && CATrustedFingerprintTrustStrategy.new(@ca_trusted_fingerprint) 18 | end 19 | end 20 | end 21 | end 22 | -------------------------------------------------------------------------------- /logstash-core/lib/logstash/plugins/hooks_registry.rb: -------------------------------------------------------------------------------- 1 | # Licensed to Elasticsearch B.V. under one or more contributor 2 | # license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright 4 | # ownership. Elasticsearch B.V. licenses this file to you under 5 | # the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | -------------------------------------------------------------------------------- /logstash-core/lib/logstash/shutdown_watcher.rb: -------------------------------------------------------------------------------- 1 | # Licensed to Elasticsearch B.V. under one or more contributor 2 | # license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright 4 | # ownership. Elasticsearch B.V. licenses this file to you under 5 | # the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | -------------------------------------------------------------------------------- /logstash-core/lib/logstash/util/lazy_singleton.rb: -------------------------------------------------------------------------------- 1 | require 'thread' # Mutex 2 | 3 | # A [LazySingleton] wraps the result of the provided block, 4 | # which is guaranteed to be called at-most-once, even if the 5 | # block's return value is nil. 6 | class ::LogStash::Util::LazySingleton 7 | 8 | def initialize(&block) 9 | @mutex = Mutex.new 10 | @block = block 11 | @instantiated = false 12 | end 13 | 14 | def instance 15 | unless @instantiated 16 | @mutex.synchronize do 17 | unless @instantiated 18 | @instance = @block.call 19 | @instantiated = true 20 | end 21 | end 22 | end 23 | 24 | return @instance 25 | end 26 | 27 | def reset! 28 | @mutex.synchronize do 29 | @instantiated = false 30 | @instance = nil 31 | end 32 | end 33 | end 34 | -------------------------------------------------------------------------------- /logstash-core/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'logstash-core' 2 | -------------------------------------------------------------------------------- /logstash-core/src/main/java/org/logstash/ackedqueue/io/ByteBufferCleanerImpl.java: -------------------------------------------------------------------------------- 1 | package org.logstash.ackedqueue.io; 2 | 3 | import java.nio.MappedByteBuffer; 4 | 5 | import sun.misc.Unsafe; 6 | import java.lang.reflect.Field; 7 | 8 | public class ByteBufferCleanerImpl implements ByteBufferCleaner { 9 | 10 | private final Unsafe unsafe; 11 | 12 | public ByteBufferCleanerImpl() { 13 | try { 14 | Field unsafeField = Unsafe.class.getDeclaredField("theUnsafe"); 15 | unsafeField.setAccessible(true); 16 | unsafe = (Unsafe) unsafeField.get(null); 17 | }catch (Exception e){ 18 | throw new IllegalStateException(e); 19 | } 20 | } 21 | 22 | @Override 23 | public void clean(MappedByteBuffer buffer) { 24 | unsafe.invokeCleaner(buffer); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /logstash-core/src/main/java/org/logstash/common/io/SegmentListener.java: -------------------------------------------------------------------------------- 1 | package org.logstash.common.io; 2 | 3 | /** 4 | * Listener interface to receive notification when a DLQ segment is completely read and when are removed. 5 | * */ 6 | public interface SegmentListener { 7 | /** 8 | * Notifies the listener about the complete consumption of a bunch of segments. 9 | * */ 10 | void segmentCompleted(); 11 | 12 | /** 13 | * Notifies the listener about the deletion of consumed segments. 14 | * It reports the number of deleted segments and number of events contained in those segments. 15 | * 16 | * @param numberOfSegments the number of deleted segment files. 17 | * 18 | * @param numberOfEvents total number of events that were present in the deleted segments. 19 | * */ 20 | void segmentsDeleted(int numberOfSegments, long numberOfEvents); 21 | } 22 | -------------------------------------------------------------------------------- /logstash-core/src/main/java/org/logstash/config/ir/compiler/ConditionalEvaluationError.java: -------------------------------------------------------------------------------- 1 | package org.logstash.config.ir.compiler; 2 | 3 | import org.logstash.Event; 4 | 5 | /** 6 | * Exception raised when an if-condition in a pipeline throws an error at runtime. 7 | * */ 8 | public class ConditionalEvaluationError extends RuntimeException { 9 | private static final long serialVersionUID = -8633589068902565868L; 10 | 11 | // This class is serializable because of inheritance from Throwable, however it's not expected 12 | // to be ever transmitted on wire on stored in some binary storage. 13 | private final transient Event failedEvent; 14 | 15 | ConditionalEvaluationError(Throwable cause, Event failedEvent) { 16 | super(cause); 17 | this.failedEvent = failedEvent; 18 | } 19 | 20 | public Event failedEvent() { 21 | return failedEvent; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /logstash-core/src/main/java/org/logstash/execution/AbortedBatchException.java: -------------------------------------------------------------------------------- 1 | package org.logstash.execution; 2 | 3 | public class AbortedBatchException extends Exception { 4 | 5 | private static final long serialVersionUID = -2883406232121392458L; 6 | 7 | } 8 | -------------------------------------------------------------------------------- /logstash-core/src/main/java/org/logstash/execution/ObservedExecution.java: -------------------------------------------------------------------------------- 1 | package org.logstash.execution; 2 | 3 | import org.logstash.config.ir.CompiledPipeline; 4 | 5 | class ObservedExecution implements CompiledPipeline.Execution { 6 | private final WorkerObserver workerObserver; 7 | private final CompiledPipeline.Execution execution; 8 | 9 | public ObservedExecution(final WorkerObserver workerObserver, 10 | final CompiledPipeline.Execution execution) { 11 | this.workerObserver = workerObserver; 12 | this.execution = execution; 13 | } 14 | 15 | @Override 16 | public int compute(QB batch, boolean flush, boolean shutdown) { 17 | return workerObserver.observeExecutionComputation(batch, () -> execution.compute(batch, flush, shutdown)); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /logstash-core/src/main/java/org/logstash/instrument/metrics/timer/TimerMetricFactory.java: -------------------------------------------------------------------------------- 1 | package org.logstash.instrument.metrics.timer; 2 | 3 | import java.util.function.LongSupplier; 4 | 5 | public class TimerMetricFactory { 6 | static final TimerMetricFactory INSTANCE = new TimerMetricFactory(); 7 | 8 | private TimerMetricFactory() { 9 | } 10 | 11 | public TimerMetric create(final String name) { 12 | return create(name, System::nanoTime); 13 | } 14 | 15 | TimerMetric create(final String name, final LongSupplier nanoTimeSupplier) { 16 | return new ConcurrentLiveTimerMetric(name, nanoTimeSupplier); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /logstash-core/src/main/java/org/logstash/instrument/metrics/timer/Util.java: -------------------------------------------------------------------------------- 1 | package org.logstash.instrument.metrics.timer; 2 | 3 | public class Util { 4 | private Util() {} 5 | 6 | private static final long NANOS_PER_MILLI = 1_000_000L; 7 | 8 | static long wholeMillisFromNanos(final long excessNanos) { 9 | return Math.floorDiv(excessNanos, NANOS_PER_MILLI); 10 | } 11 | 12 | static int subMilliExcessNanos(final long excessNanos) { 13 | return Math.toIntExact(Math.floorMod(excessNanos, NANOS_PER_MILLI)); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /logstash-core/src/main/java/org/logstash/plugins/aliases/AliasDocumentReplace.java: -------------------------------------------------------------------------------- 1 | package org.logstash.plugins.aliases; 2 | 3 | import javax.annotation.Nonnull; 4 | 5 | /** 6 | * A POJO class linked to {@link AliasPlugin} to map AliasRegistry.yml structure. 7 | */ 8 | public class AliasDocumentReplace { 9 | 10 | /** 11 | * A document entry need to be replaced. 12 | */ 13 | @Nonnull 14 | private String replace; 15 | 16 | /** 17 | * A value where document entry need to be replaced with. 18 | */ 19 | @Nonnull 20 | private String with; 21 | 22 | public AliasDocumentReplace(String replace, String with) { 23 | this.replace = replace; 24 | this.with = with; 25 | } 26 | 27 | public String getReplace() { 28 | return this.replace; 29 | } 30 | 31 | public String getWith() { 32 | return this.with; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /logstash-core/src/main/java/org/logstash/secret/password/Validator.java: -------------------------------------------------------------------------------- 1 | package org.logstash.secret.password; 2 | 3 | import java.util.Optional; 4 | 5 | /** 6 | * A validator interface for password validation policies. 7 | */ 8 | public interface Validator { 9 | /** 10 | * Validates the input password. 11 | * @param password a password string 12 | * @return optional empty if succeeds or value for reasoning. 13 | */ 14 | Optional validate(String password); 15 | } 16 | -------------------------------------------------------------------------------- /logstash-core/src/main/java/org/logstash/util/CheckedSupplier.java: -------------------------------------------------------------------------------- 1 | package org.logstash.util; 2 | 3 | @FunctionalInterface 4 | public interface CheckedSupplier { 5 | T get() throws Exception; 6 | } 7 | -------------------------------------------------------------------------------- /logstash-core/src/main/java/org/logstash/util/JavaVersionChecker.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/logstash-core/src/main/java/org/logstash/util/JavaVersionChecker.java -------------------------------------------------------------------------------- /logstash-core/src/main/resources/log4j2.component.properties: -------------------------------------------------------------------------------- 1 | Log4jLogEventFactory=org.logstash.log.LogstashLogEventFactory 2 | log4j2.messageFactory=org.logstash.log.LogstashMessageFactory 3 | -------------------------------------------------------------------------------- /logstash-core/src/main/resources/log4j2.properties: -------------------------------------------------------------------------------- 1 | name=default 2 | appenders = console 3 | 4 | appender.console.type = Console 5 | appender.console.name = STDOUT 6 | appender.console.layout.type = PatternLayout 7 | appender.console.layout.pattern = [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n 8 | 9 | rootLogger.level = error 10 | rootLogger.appenderRefs = stdout 11 | rootLogger.appenderRef.stdout.ref = STDOUT 12 | 13 | logger.pqrepair.name = org.logstash.ackedqueue.PqRepair 14 | logger.pqrepair.level = info -------------------------------------------------------------------------------- /logstash-core/src/main/resources/org/logstash/plugins/AliasRegistry.yml: -------------------------------------------------------------------------------- 1 | input: 2 | - alias: elastic_agent 3 | from: beats 4 | docs: 5 | - replace: ":plugin: beats" 6 | with: ":plugin: elastic_agent" 7 | - replace: ":plugin-uc: Beats" 8 | with: ":plugin-uc: Elastic Agent" 9 | - replace: ":plugin-singular: Beat" 10 | with: ":plugin-singular: Elastic Agent" -------------------------------------------------------------------------------- /logstash-core/src/test/java/org/logstash/instrument/metrics/NullableLongMetric.java: -------------------------------------------------------------------------------- 1 | package org.logstash.instrument.metrics; 2 | 3 | import java.util.Objects; 4 | import java.util.concurrent.atomic.AtomicReference; 5 | 6 | class NullableLongMetric extends AbstractMetric { 7 | private AtomicReference value = new AtomicReference<>(); 8 | 9 | public NullableLongMetric(String name) { 10 | super(name); 11 | } 12 | 13 | @Override 14 | public MetricType getType() { 15 | return MetricType.COUNTER_LONG; 16 | } 17 | 18 | @Override 19 | public Long getValue() { 20 | return value.get(); 21 | } 22 | 23 | public void increment(final long amount) { 24 | value.updateAndGet((v) -> Math.addExact(Objects.requireNonNullElse(v, 0L), amount)); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /logstash-core/src/test/java/org/logstash/instrument/metrics/TestClock.java: -------------------------------------------------------------------------------- 1 | package org.logstash.instrument.metrics; 2 | 3 | import java.time.Clock; 4 | 5 | public abstract class TestClock extends Clock { 6 | abstract public long nanoTime(); 7 | } 8 | -------------------------------------------------------------------------------- /logstash-core/src/test/java/org/logstash/instrument/metrics/TestUptimeMetricFactory.java: -------------------------------------------------------------------------------- 1 | package org.logstash.instrument.metrics; 2 | 3 | import java.util.function.LongSupplier; 4 | 5 | public class TestUptimeMetricFactory { 6 | private final LongSupplier nanoTimeSupplier; 7 | 8 | public TestUptimeMetricFactory(LongSupplier nanoTimeSupplier) { 9 | this.nanoTimeSupplier = nanoTimeSupplier; 10 | } 11 | 12 | public UptimeMetric newUptimeMetric(final String name) { 13 | return new UptimeMetric(name, nanoTimeSupplier); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /logstash-core/src/test/java/org/logstash/instrument/metrics/timer/ConcurrentLiveTimerMetricTest.java: -------------------------------------------------------------------------------- 1 | package org.logstash.instrument.metrics.timer; 2 | 3 | import org.junit.Test; 4 | 5 | public class ConcurrentLiveTimerMetricTest extends TimerMetricTest { 6 | @Override 7 | TimerMetric initTimerMetric(final String name) { 8 | return testTimerMetricFactory.newConcurrentLiveTimerMetric(name); 9 | } 10 | 11 | @Test 12 | public void testValueDuringConcurrentTrackedExecutions() throws Exception { 13 | sharedTestWithConcurrentTrackedExecutions(true); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /logstash-core/src/test/resources/log4j-list.properties: -------------------------------------------------------------------------------- 1 | status = error 2 | name = LogstashPropertiesConfig 3 | 4 | appender.list.type = List 5 | appender.list.name = List 6 | #appender.list.layout.type = JSONLayout 7 | #appender.list.layout.compact = true 8 | #appender.list.layout.eventEol = true 9 | 10 | rootLogger.level = info 11 | rootLogger.appenderRef.stdout.ref = List 12 | -------------------------------------------------------------------------------- /logstash-core/src/test/resources/log4j2-log-stream-read-constraints.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /logstash-core/src/test/resources/log4j2.properties: -------------------------------------------------------------------------------- 1 | name=default 2 | appenders = console 3 | 4 | appender.console.type = Console 5 | appender.console.name = STDOUT 6 | appender.console.layout.type = PatternLayout 7 | appender.console.layout.pattern = [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n 8 | 9 | rootLogger.level = info 10 | rootLogger.appenderRefs = stdout 11 | rootLogger.appenderRef.stdout.ref = STDOUT 12 | -------------------------------------------------------------------------------- /logstash-core/src/test/resources/logstash.keystore.with.default.pass: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/logstash-core/src/test/resources/logstash.keystore.with.default.pass -------------------------------------------------------------------------------- /logstash-core/src/test/resources/logstash.keystore.with.defined.pass: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/logstash-core/src/test/resources/logstash.keystore.with.defined.pass -------------------------------------------------------------------------------- /logstash-core/src/test/resources/not.a.logstash.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/logstash-core/src/test/resources/not.a.logstash.keystore -------------------------------------------------------------------------------- /logstash-core/src/test/resources/org/logstash/ackedqueue/io/checkpoint.head: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/logstash-core/src/test/resources/org/logstash/ackedqueue/io/checkpoint.head -------------------------------------------------------------------------------- /logstash-core/src/test/resources/org/logstash/common/io/1.log: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/logstash-core/src/test/resources/org/logstash/common/io/1.log -------------------------------------------------------------------------------- /logstash-core/src/test/resources/org/logstash/config/ir/cache/pipeline1.conf: -------------------------------------------------------------------------------- 1 | input { 2 | stdin { id => "stdin_id_1" } 3 | } 4 | 5 | filter { 6 | mutate { 7 | id => "mutate_id_1" 8 | rename => ["a_field", "into_another"] 9 | } 10 | } 11 | 12 | output { 13 | stdout { id => "stdout_id_1" } 14 | } 15 | -------------------------------------------------------------------------------- /logstash-core/src/test/resources/org/logstash/config/ir/cache/pipeline2.conf: -------------------------------------------------------------------------------- 1 | # pipeline similar to pipeline 1 but with different ids 2 | # no extra classes should be generated because of this 3 | input { 4 | stdin { id => "stdin_id_1" } 5 | } 6 | 7 | filter { 8 | mutate { 9 | id => "mutate_id_1" 10 | rename => ["a_field", "into_another"] 11 | } 12 | } 13 | 14 | output { 15 | stdout { id => "stdout_id_1" } 16 | } 17 | -------------------------------------------------------------------------------- /logstash-core/src/test/resources/org/logstash/config/ir/cache/pipeline_reuse_baseline.conf: -------------------------------------------------------------------------------- 1 | input { 2 | stdin { } 3 | } 4 | 5 | filter { 6 | if [a] { 7 | noop {} 8 | if [a] { noop {} } 9 | } 10 | if [a] { 11 | if [a] { 12 | noop {} 13 | if [a] { noop {} } 14 | if [a] { noop {} } 15 | } 16 | } 17 | if [a] { 18 | if [a] { 19 | if [a] { 20 | noop {} 21 | noop {} 22 | if [a] { noop {} } 23 | } 24 | } 25 | } 26 | } 27 | output { 28 | if [a] { noop {} } 29 | else { noop {} } 30 | stdout {} 31 | stdout {} 32 | # stdout {} 33 | } 34 | -------------------------------------------------------------------------------- /logstash-core/src/test/resources/org/logstash/plugins/AliasRegistry.yml: -------------------------------------------------------------------------------- 1 | input: 2 | - alias: aliased_input1 3 | from: beats 4 | docs: 5 | - replace: ":plugin: beats" 6 | with: ":plugin: elastic_agent" 7 | - replace: ":plugin-uc: Beats" 8 | with: ":plugin-uc: Elastic Agent" 9 | - replace: ":plugin-singular: Beat" 10 | with: ":plugin-singular: Elastic Agent" 11 | - alias: aliased_input2 12 | from: tcp 13 | 14 | filter: 15 | - alias: aliased_filter 16 | from: json 17 | -------------------------------------------------------------------------------- /logstash-core/src/test/resources/org/logstash/plugins/logstash-input-java_input_example-1.0.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/logstash-core/src/test/resources/org/logstash/plugins/logstash-input-java_input_example-1.0.3.jar -------------------------------------------------------------------------------- /logstash-core/src/test/resources/org/logstash/util/x509_certificates/generated/GENERATED_AT: -------------------------------------------------------------------------------- 1 | 2022-05-17T20:07:57+00:00 2 | -------------------------------------------------------------------------------- /logstash-core/src/test/resources/org/logstash/util/x509_certificates/generated/README.txt: -------------------------------------------------------------------------------- 1 | GENERATED CERTIFICATES FOR TESTING ONLY. 2 | DO NOT USE THESE CERTIFICATES IN PRODUCTION 3 | -------------------------------------------------------------------------------- /logstash-core/src/test/resources/org/logstash/util/x509_certificates/generated/intermediate-ca.der.sha256: -------------------------------------------------------------------------------- 1 | dfb69ff77651063393dc3e77423382390a3c21859253457259f6a637a2515cda 2 | -------------------------------------------------------------------------------- /logstash-core/src/test/resources/org/logstash/util/x509_certificates/generated/root.der.sha256: -------------------------------------------------------------------------------- 1 | 3700208913f1b4955cf4df3cfcd241a5d98c00131966da6a78fe70532c22696c 2 | -------------------------------------------------------------------------------- /logstash-core/src/test/resources/org/logstash/util/x509_certificates/generated/server_from_intermediate.der.sha256: -------------------------------------------------------------------------------- 1 | ddf798cd453f19ee4300c4e4ac1f56b897ebbd9853f406d1947419b0e0fb91b2 2 | -------------------------------------------------------------------------------- /logstash-core/src/test/resources/org/logstash/util/x509_certificates/generated/server_from_root.der.sha256: -------------------------------------------------------------------------------- 1 | 9a1ceb7664315d5d62bd382ca9258704746a8056922bb36ca263762932e528fa 2 | -------------------------------------------------------------------------------- /pkg/centos/before-install.sh: -------------------------------------------------------------------------------- 1 | # create logstash group 2 | if ! getent group logstash >/dev/null; then 3 | groupadd -r logstash 4 | fi 5 | 6 | # create logstash user 7 | if ! getent passwd logstash >/dev/null; then 8 | useradd -r -g logstash -d /usr/share/logstash \ 9 | -s /sbin/nologin -c "logstash" logstash 10 | fi 11 | 12 | # Handle upgrade: Check if old service unit exists and remove it 13 | # if the new one is not installed in the system. Otherwise, assume 14 | # the old one is user-created. 15 | if [ -f /etc/systemd/system/logstash.service ] && \ 16 | [ ! -f /lib/systemd/system/logstash.service ]; then 17 | rm -rf /etc/systemd/system/logstash.service || true 18 | fi 19 | -------------------------------------------------------------------------------- /pkg/debian/before-install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # create logstash group 4 | if ! getent group logstash >/dev/null; then 5 | groupadd -r logstash 6 | fi 7 | 8 | # create logstash user 9 | if ! getent passwd logstash >/dev/null; then 10 | useradd -M -r -g logstash -d /usr/share/logstash \ 11 | -s /usr/sbin/nologin -c "LogStash Service User" logstash 12 | fi 13 | 14 | # Handle upgrade: Check if old service unit exists and remove it 15 | # if the new one is not installed in the system. Otherwise, assume 16 | # the old one is user-created. 17 | if [ -f /etc/systemd/system/logstash.service ] && \ 18 | [ ! -f /lib/systemd/system/logstash.service ]; then 19 | rm -rf /etc/systemd/system/logstash.service || true 20 | fi 21 | -------------------------------------------------------------------------------- /pkg/logrotate.conf: -------------------------------------------------------------------------------- 1 | /var/log/logstash/*.log /var/log/logstash/*.err /var/log/logstash/*.stdout { 2 | daily 3 | rotate 7 4 | copytruncate 5 | compress 6 | delaycompress 7 | missingok 8 | notifempty 9 | } 10 | -------------------------------------------------------------------------------- /pkg/pipelines.yml: -------------------------------------------------------------------------------- 1 | # This file is where you define your pipelines. You can define multiple. 2 | # For more information on multiple pipelines, see the documentation: 3 | # https://www.elastic.co/guide/en/logstash/current/multiple-pipelines.html 4 | 5 | - pipeline.id: main 6 | path.config: "/etc/logstash/conf.d/*.conf" 7 | -------------------------------------------------------------------------------- /pkg/service_templates/systemd/lib/systemd/system/logstash.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=logstash 3 | 4 | [Service] 5 | Type=simple 6 | User=logstash 7 | Group=logstash 8 | # Load env vars from /etc/default/ and /etc/sysconfig/ if they exist. 9 | # Prefixing the path with '-' makes it try to load, but if the file doesn't 10 | # exist, it continues onward. 11 | EnvironmentFile=-/etc/default/logstash 12 | EnvironmentFile=-/etc/sysconfig/logstash 13 | ExecStart=/usr/share/logstash/bin/logstash "--path.settings" "/etc/logstash" 14 | Restart=always 15 | WorkingDirectory=/ 16 | Nice=19 17 | LimitNOFILE=16384 18 | 19 | # When stopping, how long to wait before giving up and sending SIGKILL? 20 | # Keep in mind that SIGKILL on a process can cause data loss. 21 | TimeoutStopSec=infinity 22 | 23 | [Install] 24 | WantedBy=multi-user.target 25 | -------------------------------------------------------------------------------- /pkg/service_templates/sysv/etc/default/logstash: -------------------------------------------------------------------------------- 1 | LS_HOME="/usr/share/logstash" 2 | LS_SETTINGS_DIR="/etc/logstash" 3 | LS_PIDFILE="/var/run/logstash.pid" 4 | LS_USER="logstash" 5 | LS_GROUP="logstash" 6 | LS_GC_LOG_FILE="/var/log/logstash/gc.log" 7 | LS_OPEN_FILES="16384" 8 | LS_NICE="19" 9 | SERVICE_NAME="logstash" 10 | SERVICE_DESCRIPTION="logstash" 11 | -------------------------------------------------------------------------------- /pkg/ubuntu/before-install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # create logstash group 4 | if ! getent group logstash >/dev/null; then 5 | groupadd -r logstash 6 | fi 7 | 8 | # create logstash user 9 | if ! getent passwd logstash >/dev/null; then 10 | useradd -M -r -g logstash -d /usr/share/logstash \ 11 | -s /usr/sbin/nologin -c "LogStash Service User" logstash 12 | fi 13 | 14 | # Handle upgrade: Check if old service unit exists and remove it 15 | # if the new one is not installed in the system. Otherwise, assume 16 | # the old one is user-created. 17 | if [ -f /etc/systemd/system/logstash.service ] && \ 18 | [ ! -f /lib/systemd/system/logstash.service ]; then 19 | rm -rf /etc/systemd/system/logstash.service || true 20 | fi 21 | -------------------------------------------------------------------------------- /qa/.gitignore: -------------------------------------------------------------------------------- 1 | Gemfile.lock 2 | acceptance/.vagrant 3 | .vagrant 4 | .vm_ssh_config 5 | -------------------------------------------------------------------------------- /qa/.rspec: -------------------------------------------------------------------------------- 1 | --format 2 | documentation 3 | -------------------------------------------------------------------------------- /qa/Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | gem "rspec", "~> 3.13" 3 | gem "rake" 4 | gem "stud" 5 | gem "pry", :group => :test 6 | gem 'docker-api' 7 | -------------------------------------------------------------------------------- /qa/docker/fixtures/custom_logstash_yml/logstash.yml: -------------------------------------------------------------------------------- 1 | pipeline.batch.size: 200 -------------------------------------------------------------------------------- /qa/docker/fixtures/multiple_pipelines/config/pipelines.yml: -------------------------------------------------------------------------------- 1 | - pipeline.id: pipeline_one 2 | path.config: "/usr/share/logstash/pipeline/basic1.cfg" 3 | - pipeline.id: pipeline_two 4 | path.config: "/usr/share/logstash/pipeline/basic2.cfg" -------------------------------------------------------------------------------- /qa/docker/fixtures/multiple_pipelines/pipelines/basic1.cfg: -------------------------------------------------------------------------------- 1 | input { 2 | beats { 3 | id => 'multi_pipeline1' 4 | port => 5044 5 | } 6 | } 7 | output { stdout {} } -------------------------------------------------------------------------------- /qa/docker/fixtures/multiple_pipelines/pipelines/basic2.cfg: -------------------------------------------------------------------------------- 1 | input { 2 | stdin { 3 | id => 'multi_pipeline2' 4 | } 5 | } 6 | output { stdout {} } -------------------------------------------------------------------------------- /qa/docker/fixtures/simple_pipeline/basic.cfg: -------------------------------------------------------------------------------- 1 | input { 2 | beats { 3 | id => 'simple_pipeline' 4 | port => 5044 5 | } 6 | } 7 | output { stdout {} } -------------------------------------------------------------------------------- /qa/docker/patches/excon/unix_socket.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module Excon 4 | class UnixSocket < Excon::Socket 5 | private 6 | def connect 7 | @socket = ::UNIXSocket.new(@data[:socket]) 8 | end 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /qa/docker/spec/full/image_spec.rb: -------------------------------------------------------------------------------- 1 | require_relative '../spec_helper' 2 | require_relative '../../shared_examples/image_metadata' 3 | 4 | describe 'An image with the full distribution' do 5 | it_behaves_like 'the metadata is set correctly', 'full' 6 | end 7 | -------------------------------------------------------------------------------- /qa/docker/spec/oss/container_spec.rb: -------------------------------------------------------------------------------- 1 | require_relative '../spec_helper' 2 | require_relative '../../shared_examples/container_config' 3 | require_relative '../../shared_examples/container_options' 4 | require_relative '../../shared_examples/container' 5 | 6 | describe 'A container running the oss image' do 7 | it_behaves_like 'the container is configured correctly', 'oss' 8 | it_behaves_like 'it applies settings correctly', 'oss' 9 | it_behaves_like 'it runs with different configurations', 'oss' 10 | 11 | context 'The running container' do 12 | before do 13 | @image = find_image('oss') 14 | @container = start_container(@image, {}) 15 | end 16 | 17 | after do 18 | cleanup_container(@container) 19 | end 20 | 21 | it 'should be based on Red Hat Enterprise Linux' do 22 | expect(exec_in_container(@container, 'cat /etc/redhat-release')).to match /Red Hat Enterprise Linux/ 23 | end 24 | end 25 | end 26 | -------------------------------------------------------------------------------- /qa/docker/spec/oss/image_spec.rb: -------------------------------------------------------------------------------- 1 | require_relative '../spec_helper' 2 | require_relative '../../shared_examples/image_metadata' 3 | 4 | describe 'An image with the oss distribution' do 5 | it_behaves_like 'the metadata is set correctly', 'oss' 6 | end 7 | -------------------------------------------------------------------------------- /qa/docker/spec/wolfi/image_spec.rb: -------------------------------------------------------------------------------- 1 | require_relative '../spec_helper' 2 | require_relative '../../shared_examples/image_metadata' 3 | 4 | describe 'An image with the full distribution' do 5 | it_behaves_like 'the metadata is set correctly', 'wolfi' 6 | end 7 | -------------------------------------------------------------------------------- /qa/integration/.gitignore: -------------------------------------------------------------------------------- 1 | /services/installed 2 | /fixtures/certificates 3 | /fixtures/offline.o 4 | /fixtures/offline 5 | -------------------------------------------------------------------------------- /qa/integration/.rspec: -------------------------------------------------------------------------------- 1 | --default-path specs/ 2 | --format documentation -------------------------------------------------------------------------------- /qa/integration/Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | gem "logstash-core", :path => "../../logstash-core" 3 | gem "logstash-core-plugin-api", :path => "../../logstash-core-plugin-api" 4 | gemspec 5 | -------------------------------------------------------------------------------- /qa/integration/fixtures/01_logstash_bin_smoke_spec.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - logstash 4 | config: |- 5 | input { 6 | tcp { 7 | port => '<%=options[:port]%>' 8 | } 9 | 10 | generator { count => 5 } 11 | } 12 | output { 13 | file { 14 | path => '<%=options[:random_file]%>' 15 | flush_interval => 0 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /qa/integration/fixtures/beats_input_spec.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - filebeat 4 | - logstash 5 | config: 6 | without_tls: |- 7 | input { 8 | beats { 9 | port => 5044 10 | } 11 | } 12 | output {} 13 | tls_server_auth: |- 14 | input { 15 | beats { 16 | ssl_enabled => true 17 | port => 5044 18 | ssl_certificate => '<%=options[:ssl_certificate]%>' 19 | ssl_key => '<%=options[:ssl_key]%>' 20 | } 21 | } 22 | output {} 23 | tls_mutual_auth: |- 24 | input { 25 | beats { 26 | ssl_enabled => true 27 | port => 5044 28 | ssl_certificate => '<%=options[:ssl_certificate]%>' 29 | ssl_key => '<%=options[:ssl_key]%>' 30 | ssl_client_authentication => "required" 31 | ssl_certificate_authorities => '<%=options[:ssl_certificate]%>' 32 | } 33 | } 34 | output {} 35 | input: how_sample.input 36 | teardown_script: 37 | -------------------------------------------------------------------------------- /qa/integration/fixtures/command_line_spec.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - logstash 4 | -------------------------------------------------------------------------------- /qa/integration/fixtures/deprecation_log_spec.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - logstash 4 | config: |- 5 | input { 6 | generator { 7 | count => 4 8 | } 9 | } 10 | filter { 11 | ruby { 12 | code => '@deprecation_logger.deprecated "Teleport"' 13 | } 14 | } 15 | output { 16 | null {} 17 | } 18 | -------------------------------------------------------------------------------- /qa/integration/fixtures/direct_heap_allocator_flag_spec.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - logstash 4 | config: |- 5 | input { 6 | http { 7 | host => "localhost" 8 | port => 8080 9 | response_headers => {"Content-Type" => "application/json"} 10 | ecs_compatibility => disabled 11 | } 12 | } 13 | 14 | filter { 15 | ruby { 16 | init => "Thread.new { loop { logger.info 'Direct pinned: ' + Java::io.netty.buffer.ByteBufAllocator::DEFAULT.pinned_direct_memory.to_s + ' - Heap pinned: ' + Java::io.netty.buffer.ByteBufAllocator::DEFAULT.pinned_heap_memory.to_s; sleep 5 } }" 17 | code => "start = Time.now; while Time.now - start < 10; Java::io.netty.buffer.ByteBufAllocator::DEFAULT.buffer(1024); sleep 0.5 end" 18 | } 19 | } 20 | 21 | output { 22 | sink {} 23 | } 24 | -------------------------------------------------------------------------------- /qa/integration/fixtures/dlq_spec.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - logstash 4 | - elasticsearch 5 | config: 6 | input { 7 | generator{ 8 | message => '{"ip":1}' 9 | codec => "json" 10 | count => 1000 11 | } 12 | 13 | dead_letter_queue { 14 | path => "<%=options[:dlq_dir]%>" 15 | commit_offsets => true 16 | } 17 | } 18 | 19 | filter { 20 | if ([ip]) { 21 | mutate { 22 | remove_field => ["ip"] 23 | add_field => { 24 | "mutated" => "true" 25 | } 26 | } 27 | } 28 | } 29 | output { 30 | elasticsearch { index => "test-index" } 31 | } 32 | teardown_script: 33 | -------------------------------------------------------------------------------- /qa/integration/fixtures/env_variables_config_spec.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - logstash 4 | config: |- 5 | input { 6 | tcp { 7 | port => "${TEST_ENV_TCP_PORT}" 8 | } 9 | } 10 | filter { 11 | mutate { 12 | add_tag => [ "blah", "${TEST_ENV_TAG}" ] 13 | } 14 | } 15 | output { 16 | file { 17 | path => "${TEST_ENV_PATH}/logstash_env_test.log" 18 | flush_interval => 0 19 | codec => line { format => "%{message} %{tags}" } 20 | } 21 | } -------------------------------------------------------------------------------- /qa/integration/fixtures/fatal_error_spec.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - logstash 4 | -------------------------------------------------------------------------------- /qa/integration/fixtures/http_proxy_install_spec.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - logstash 4 | -------------------------------------------------------------------------------- /qa/integration/fixtures/install_java_plugin_spec.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - logstash 4 | config: |- 5 | input { 6 | java_input_example { 7 | count => 4 8 | } 9 | stdin{} 10 | } 11 | output { 12 | null {} 13 | } 14 | -------------------------------------------------------------------------------- /qa/integration/fixtures/install_spec.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - logstash 4 | -------------------------------------------------------------------------------- /qa/integration/fixtures/java_api_spec.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - logstash 4 | config: |- 5 | input { 6 | java_generator { 7 | count => 1 8 | } 9 | } 10 | filter { 11 | java_uuid { 12 | target => "uuid" 13 | } 14 | sleep { 15 | time => 10 16 | } 17 | } 18 | output { 19 | java_stdout { } 20 | } 21 | -------------------------------------------------------------------------------- /qa/integration/fixtures/kafka_input_spec.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - logstash 4 | - kafka 5 | config: |- 6 | input { 7 | kafka { 8 | topics => "logstash_topic_plain" 9 | auto_offset_reset => "earliest" 10 | codec => "plain" 11 | group_id => "ls10" 12 | } 13 | } 14 | output { 15 | file { 16 | path => "kafka_input.output" 17 | flush_interval => 0 18 | codec => line { format => "%{message}" } 19 | } 20 | } 21 | 22 | input: how_sample.input 23 | actual_output: kafka_input.output 24 | teardown_script: 25 | -------------------------------------------------------------------------------- /qa/integration/fixtures/keystore_spec.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - logstash 4 | -------------------------------------------------------------------------------- /qa/integration/fixtures/list_spec.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - logstash 4 | -------------------------------------------------------------------------------- /qa/integration/fixtures/logstash-dummy-pack/.gitignore: -------------------------------------------------------------------------------- 1 | vendor/bundle 2 | dependencies/ 3 | build/ 4 | -------------------------------------------------------------------------------- /qa/integration/fixtures/logstash-dummy-pack/Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | gemspec 3 | 4 | gem "paquet", :path => "#{File.dirname(__FILE__)}/../../../../tools/paquet" 5 | -------------------------------------------------------------------------------- /qa/integration/fixtures/logstash-dummy-pack/bundle.sh: -------------------------------------------------------------------------------- 1 | bundle install --path vendor 2 | bundle exec rake vendor 3 | bundle exec rake paquet:vendor 4 | rm -rf build/ 5 | mkdir -p build/logstash-dummy-pack/logstash/ 6 | cp -r dependencies build/logstash-dummy-pack/logstash/ 7 | gem build logstash-output-secret.gemspec 8 | mv logstash-output-secret*.gem build/logstash-dummy-pack/logstash/ 9 | 10 | # Generate stuff for a uber zip 11 | mkdir -p build/logstash-dummy-pack/elasticsearch 12 | touch build/logstash-dummy-pack/elasticsearch/README.md 13 | 14 | mkdir -p build/logstash-dummy-pack/kibana 15 | touch build/logstash-dummy-pack/kibana/README.md 16 | 17 | cd build/ 18 | zip -r logstash-dummy-pack.zip logstash-dummy-pack 19 | cp *.zip ../ 20 | cd .. 21 | -------------------------------------------------------------------------------- /qa/integration/fixtures/logstash-dummy-pack/logstash-dummy-pack.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/qa/integration/fixtures/logstash-dummy-pack/logstash-dummy-pack.zip -------------------------------------------------------------------------------- /qa/integration/fixtures/logstash-filter-qatest-0.1.1.gem: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/qa/integration/fixtures/logstash-filter-qatest-0.1.1.gem -------------------------------------------------------------------------------- /qa/integration/fixtures/logstash.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/qa/integration/fixtures/logstash.keystore -------------------------------------------------------------------------------- /qa/integration/fixtures/logstash_to_logstash_spec.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - logstash 4 | config: 5 | basic_ls_input: |- 6 | input { 7 | logstash { 8 | ssl_enabled => false 9 | username => "logstash" 10 | password => "$e0re!" 11 | } 12 | } 13 | output { 14 | file { 15 | path => '<%=options[:output_file_path]%>' 16 | flush_interval => 0 17 | codec => line { format => "%{[event][sequence]}:%{message}" } 18 | } 19 | } 20 | basic_ls_output: |- 21 | input { 22 | generator { 23 | count => '<%=options[:generator_count]%>' 24 | } 25 | } 26 | output { 27 | logstash { 28 | ssl_enabled => false 29 | hosts => ["127.0.0.1:9800"] 30 | username => "logstash" 31 | password => "$e0re!" 32 | } 33 | } 34 | 35 | teardown_script: -------------------------------------------------------------------------------- /qa/integration/fixtures/mixed_codec_spec.yml: -------------------------------------------------------------------------------- 1 | 2 | --- 3 | services: 4 | - logstash 5 | 6 | config: 7 | input_decode: |- 8 | input { 9 | java_stdin { 10 | codec => json 11 | } 12 | } 13 | output { 14 | file { 15 | path => "${PATH_TO_OUT}" 16 | } 17 | } 18 | 19 | input_decode_configured: |- 20 | input { 21 | java_stdin { 22 | codec => plain { 23 | charset => "ASCII-8BIT" 24 | } 25 | } 26 | } 27 | output { 28 | file { 29 | path => "${PATH_TO_OUT}" 30 | } 31 | } 32 | 33 | output_encode: |- 34 | input { 35 | generator { 36 | count => 4 37 | } 38 | } 39 | output { 40 | java_stdout { 41 | codec => json 42 | } 43 | } -------------------------------------------------------------------------------- /qa/integration/fixtures/multiple_pipeline_spec.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - logstash 4 | -------------------------------------------------------------------------------- /qa/integration/fixtures/offline_wrapper/.gitignore: -------------------------------------------------------------------------------- 1 | offine 2 | -------------------------------------------------------------------------------- /qa/integration/fixtures/offline_wrapper/Makefile: -------------------------------------------------------------------------------- 1 | OBJECTS=offline offline.o 2 | 3 | default: offline 4 | 5 | clean: 6 | rm -f $(OBJECTS) 7 | offline: offline.o 8 | $(CC) -o $@ $< 9 | -------------------------------------------------------------------------------- /qa/integration/fixtures/offline_wrapper/README.md: -------------------------------------------------------------------------------- 1 | 2 | # offline with seccomp 3 | 4 | This is a little hack I wrote while trying to see if seccomp could be used to 5 | help me more easily test programs in "offline mode" without having to actually 6 | disable networking on my whole laptop. 7 | 8 | Building: 9 | 10 | ``` 11 | make offline 12 | ``` 13 | 14 | Usage: 15 | 16 | ``` 17 | ./offline [args] 18 | ``` 19 | 20 | Example: 21 | 22 | ``` 23 | % nc localhost 10000 24 | Ncat: Connection refused. 25 | 26 | % ./offline nc localhost 10000 27 | Ncat: Permission denied. 28 | 29 | % ./offline host google.com 30 | host: isc_socket_bind: permission denied 31 | ``` 32 | -------------------------------------------------------------------------------- /qa/integration/fixtures/persistent_queues/logstash.yml: -------------------------------------------------------------------------------- 1 | queue.type: persisted 2 | queue.drain: true 3 | -------------------------------------------------------------------------------- /qa/integration/fixtures/pipeline_log_spec.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - logstash 4 | config: |- 5 | input { 6 | generator { 7 | count => 4 8 | } 9 | } 10 | output { 11 | null {} 12 | } 13 | -------------------------------------------------------------------------------- /qa/integration/fixtures/plugin_name_log_spec.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - logstash 4 | config: |- 5 | input { 6 | generator { 7 | count => 4 8 | } 9 | } 10 | filter { 11 | sleep { 12 | id => "sleep_filter_123" 13 | time => 1 14 | } 15 | } 16 | output { 17 | null {} 18 | } 19 | -------------------------------------------------------------------------------- /qa/integration/fixtures/plugins/.gitignore: -------------------------------------------------------------------------------- 1 | *.gem 2 | -------------------------------------------------------------------------------- /qa/integration/fixtures/plugins/generate-gems.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | cd "$( dirname "$0" )" 4 | find . -name '*.gemspec' | xargs -n1 gem build -------------------------------------------------------------------------------- /qa/integration/fixtures/prepare_offline_pack_spec.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - logstash 4 | -------------------------------------------------------------------------------- /qa/integration/fixtures/remove_spec.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - logstash 4 | -------------------------------------------------------------------------------- /qa/integration/fixtures/secret_store_spec.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - logstash 4 | config: |- 5 | input { 6 | generator { 7 | count => "${input.count}" 8 | } 9 | } 10 | filter { 11 | mutate { 12 | add_tag => [ "${tag1}", "${tag2}.${tag3}" ] 13 | } 14 | } 15 | output { 16 | file { 17 | path => "${TEST_ENV_PATH}/${output.path}/logstash_secretstore_test.output" 18 | flush_interval => 0 19 | codec => line { format => "%{message} %{tags}" } 20 | } 21 | } -------------------------------------------------------------------------------- /qa/integration/fixtures/settings_spec.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - logstash 4 | config: |- 5 | input { 6 | tcp { 7 | port => '<%=options[:port]%>' 8 | } 9 | } -------------------------------------------------------------------------------- /qa/integration/fixtures/slowlog_spec.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - logstash 4 | config: |- 5 | input { 6 | generator { 7 | count => 4 8 | } 9 | } 10 | filter { 11 | sleep { time => 1 every => 2 } 12 | } 13 | output { 14 | null {} 15 | } 16 | -------------------------------------------------------------------------------- /qa/integration/fixtures/update_spec.yml: -------------------------------------------------------------------------------- 1 | --- 2 | services: 3 | - logstash 4 | -------------------------------------------------------------------------------- /qa/integration/fixtures/webserver_certs/generated/README.txt: -------------------------------------------------------------------------------- 1 | GENERATED CERTIFICATES FOR TESTING ONLY. 2 | DO NOT USE THESE CERTIFICATES IN PRODUCTION 3 | -------------------------------------------------------------------------------- /qa/integration/fixtures/webserver_certs/generated/server_from_intermediate.jks: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/qa/integration/fixtures/webserver_certs/generated/server_from_intermediate.jks -------------------------------------------------------------------------------- /qa/integration/fixtures/webserver_certs/generated/server_from_intermediate.p12: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/qa/integration/fixtures/webserver_certs/generated/server_from_intermediate.p12 -------------------------------------------------------------------------------- /qa/integration/fixtures/webserver_certs/generated/server_from_root.jks: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/qa/integration/fixtures/webserver_certs/generated/server_from_root.jks -------------------------------------------------------------------------------- /qa/integration/fixtures/webserver_certs/generated/server_from_root.p12: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/qa/integration/fixtures/webserver_certs/generated/server_from_root.p12 -------------------------------------------------------------------------------- /qa/integration/gradle.properties: -------------------------------------------------------------------------------- 1 | isDistributedArtifact=false 2 | 3 | -------------------------------------------------------------------------------- /qa/integration/logstash.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/qa/integration/logstash.keystore -------------------------------------------------------------------------------- /qa/integration/services/elasticsearch_teardown.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | current_dir="$(dirname "$0")" 4 | 5 | source "$current_dir/helpers.sh" 6 | 7 | ES_HOME="$current_dir/../../../build/elasticsearch" 8 | 9 | stop_es() { 10 | local count=10 11 | [ ! -f $ES_HOME/elasticsearch.pid ] && return 0 12 | pid=$(cat $ES_HOME/elasticsearch.pid) 2>/dev/null 13 | if [ "x$pid" != "x" ] && [ "$pid" -gt 0 ] 14 | then 15 | while kill -SIGTERM "$pid" 2>/dev/null && [ $count -ne 0 ]; do 16 | echo "waiting for elasticsearch to stop" 17 | count=$(( $count - 1 )) 18 | [[ $count -eq 0 ]] && echo "killing elasticsearch" && kill -9 $pid 2>/dev/null || true 19 | sleep 0.5 20 | done 21 | fi 22 | } 23 | 24 | stop_es 25 | 26 | rm -rf /tmp/ls_integration/es-data 27 | rm -rf /tmp/ls_integration/es-logs 28 | -------------------------------------------------------------------------------- /qa/integration/services/filebeat_setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | current_dir="$(dirname "$0")" 4 | 5 | source "$current_dir/helpers.sh" 6 | 7 | generate_certificate() { 8 | target_directory=$current_dir/../fixtures/certificates 9 | mkdir -p $target_directory 10 | openssl req -subj '/CN=localhost/' -x509 -days $((100 * 365)) -batch -nodes -newkey rsa:2048 -keyout $target_directory/certificate.key -out $target_directory/certificate.crt 11 | } 12 | 13 | generate_certificate 14 | -------------------------------------------------------------------------------- /qa/integration/services/helpers.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | current_dir="$(dirname "$0")" 4 | 5 | INSTALL_DIR=$current_dir/installed 6 | PORT_WAIT_COUNT=20 7 | 8 | setup_install_dir() { 9 | if [[ ! -d "$INSTALL_DIR" ]]; then 10 | mkdir $INSTALL_DIR 11 | fi 12 | } 13 | 14 | wait_for_port() { 15 | count=$PORT_WAIT_COUNT 16 | while ! test_port "$1" && [[ $count -ne 0 ]]; do 17 | count=$(( $count - 1 )) 18 | [[ $count -eq 0 ]] && return 1 19 | sleep 0.5 20 | done 21 | # just in case, one more time 22 | test_port "$1" 23 | } 24 | 25 | test_port(){ 26 | /bin/bash -c "(echo >/dev/tcp/localhost/$1) >/dev/null 2>&1" 27 | } 28 | 29 | clean_install_dir() { 30 | if [[ -d "$INSTALL_DIR" ]]; then 31 | rm -rf $INSTALL_DIR 32 | fi 33 | } 34 | -------------------------------------------------------------------------------- /qa/integration/services/http_proxy_teardown.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -ex 3 | 4 | echo "Removing all the chain" 5 | sudo iptables -F OUTPUT 6 | -------------------------------------------------------------------------------- /qa/integration/services/kafka_teardown.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -ex 3 | current_dir="$(dirname "$0")" 4 | 5 | source "$current_dir/helpers.sh" 6 | 7 | KAFKA_HOME=$INSTALL_DIR/kafka 8 | 9 | stop_kafka() { 10 | echo "Stopping Kafka broker" 11 | $KAFKA_HOME/bin/kafka-server-stop.sh || EXIT=$? 12 | echo "Kafka broker stopped with exit code $EXIT" 13 | echo "Stopping zookeeper" 14 | $KAFKA_HOME/bin/zookeeper-server-stop.sh || EXIT=$? 15 | echo "Zookeeper stopped with exit code $EXIT" 16 | } 17 | 18 | # delete test topic 19 | echo "Deleting test topic in Kafka" 20 | $KAFKA_HOME/bin/kafka-topics.sh --delete --topic logstash_topic_plain --zookeeper localhost:2181 --if-exists || EXIT=$? 21 | echo "Deleted test topic in Kafka with exit code $EXIT" 22 | stop_kafka 23 | rm -rf /tmp/ls_integration/kafka-logs 24 | rm -rf /tmp/zookeeper 25 | 26 | -------------------------------------------------------------------------------- /qa/integration/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'integration-tests' 2 | -------------------------------------------------------------------------------- /qa/integration/suite.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Use this to output more debug-level information 3 | verbose_mode: false 4 | # Typically we use the binaries in LS_HOME/build. If you want to QA a LS in different location, 5 | # use the absolute path below 6 | #ls_home_abs_path: /tmp/logstash-5.0.0-alpha6 7 | feature_flag: <%= ENV['FEATURE_FLAG'] %> -------------------------------------------------------------------------------- /qa/scripts/windows/acceptance/logstash_release_default_plugins.ps1: -------------------------------------------------------------------------------- 1 | # Created By: Gabriel Moskovicz 2 | # 3 | # To be run on Jenkins 4 | # 5 | # Requirements to run the test: 6 | # 7 | # - Powershell 4 8 | # - Windows 7 or newer 9 | # - Java 8 or newer 10 | # - Ruby 7 or newer 11 | 12 | $ruby = $env:RUBY_HOME + "\jruby.exe" 13 | 14 | sleep 30 15 | 16 | cd rakelib 17 | 18 | $install_default = start $ruby -ArgumentList "-S rake test:install-default" -Passthru -NoNewWindow -Wait 19 | 20 | If ($install_default.exitCode -gt 0){ 21 | exit 1 22 | } 23 | 24 | $plugins = start $ruby -ArgumentList "-S rake test:plugins" -Passthru -NoNewWindow -Wait 25 | 26 | If ($plugins.exitCode -gt 0){ 27 | exit 1 28 | } -------------------------------------------------------------------------------- /qa/support/logstash-filter-qatest/logstash-filter-qatest-0.1.1.gem: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/qa/support/logstash-filter-qatest/logstash-filter-qatest-0.1.1.gem -------------------------------------------------------------------------------- /qa/support/logstash-integration-failure_injector/README.md: -------------------------------------------------------------------------------- 1 | # About the plugin 2 | 3 | This plugin is for Logstash pipelines test purpose _only_. 4 | 5 | # How to apply changes 6 | 7 | When you change the source code, make sure to build a gem file. 8 | ```shell 9 | gem build logstash-integration-failure_injector.gemspec 10 | ``` 11 | -------------------------------------------------------------------------------- /qa/support/logstash-integration-failure_injector/logstash-integration-failure_injector-0.0.1.gem: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/qa/support/logstash-integration-failure_injector/logstash-integration-failure_injector-0.0.1.gem -------------------------------------------------------------------------------- /rakelib/bootstrap.rake: -------------------------------------------------------------------------------- 1 | # Licensed to Elasticsearch B.V. under one or more contributor 2 | # license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright 4 | # ownership. Elasticsearch B.V. licenses this file to you under 5 | # the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | 18 | task "bootstrap" => ["vendor:all", "compile:all"] 19 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = "logstash" 2 | 3 | include ':logstash-core', 'logstash-core-benchmarks', 'benchmark-cli', 'jvm-options-parser', 'logstash-integration-tests', 'dependencies-report' 4 | project(':logstash-core').projectDir = new File('./logstash-core') 5 | project(':logstash-core-benchmarks').projectDir = new File('./logstash-core/benchmarks') 6 | project(':logstash-integration-tests').projectDir = new File('./qa/integration') 7 | project(':benchmark-cli').projectDir = new File('./tools/benchmark-cli') 8 | project(':dependencies-report').projectDir = new File('./tools/dependencies-report') 9 | project(':jvm-options-parser').projectDir = new File('./tools/jvm-options-parser') 10 | 11 | Boolean oss = System.getenv('OSS').equals('true') 12 | 13 | if (!oss) { 14 | include ':logstash-xpack' 15 | project(':logstash-xpack').projectDir = new File('./x-pack') 16 | } 17 | -------------------------------------------------------------------------------- /sonar-project.properties: -------------------------------------------------------------------------------- 1 | sonar.projectKey=elastic_logstash_AYm_nEbQaV3I-igkX1q9 2 | sonar.host.url=https://sonar.elastic.dev 3 | 4 | sonar.exclusions=vendor/**, gradle/**, rakelib/**, logstash-core-plugin-api/**, licenses/**, qa/**, **/spec/** 5 | sonar.tests=logstash-core/src/test, x-pack/src/test, buildSrc/src/test 6 | 7 | # Ruby 8 | sonar.ruby.coverage.reportPaths=coverage/coverage.json 9 | 10 | # Java 11 | sonar.coverage.jacoco.xmlReportPaths=**/jacocoTestReport.xml 12 | sonar.java.binaries=**/build/classes -------------------------------------------------------------------------------- /spec/README.md: -------------------------------------------------------------------------------- 1 | # How to run these tests 2 | 3 | Run one: 4 | 5 | `rspec spec/the/test.rb` 6 | 7 | Run them all: 8 | 9 | `rspec spec/**/*.rb` 10 | 11 | Debug one test: 12 | 13 | `LOGSTASH_DEBUG=y rspec spec/the/test.rb` 14 | 15 | -------------------------------------------------------------------------------- /spec/support/lscl_configs/apache_logstash.conf: -------------------------------------------------------------------------------- 1 | input { 2 | stdin { } 3 | } 4 | 5 | 6 | filter { 7 | grok { 8 | match => { 9 | "message" => '%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{DATA:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response:int} (?:-|%{NUMBER:bytes:int}) %{QS:referrer} %{QS:agent}' 10 | } 11 | } 12 | 13 | date { 14 | match => [ "timestamp", "dd/MMM/YYYY:HH:mm:ss Z" ] 15 | locale => en 16 | } 17 | 18 | geoip { 19 | source => "clientip" 20 | } 21 | 22 | useragent { 23 | source => "agent" 24 | target => "useragent" 25 | } 26 | } 27 | 28 | output { 29 | stdout { 30 | codec => dots {} 31 | } 32 | 33 | elasticsearch { 34 | index => "apache_elastic_example" 35 | template => "./apache_template.json" 36 | template_name => "apache_elastic_example" 37 | template_overwrite => true 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /spec/support/lscl_configs/nginx_json_logstash.conf: -------------------------------------------------------------------------------- 1 | input { 2 | stdin { 3 | codec => json 4 | } 5 | } 6 | 7 | filter { 8 | 9 | date { 10 | match => ["time", "dd/MMM/YYYY:HH:mm:ss Z" ] 11 | locale => en 12 | } 13 | 14 | geoip { 15 | source => "remote_ip" 16 | target => "geoip" 17 | } 18 | 19 | useragent { 20 | source => "agent" 21 | target => "user_agent" 22 | } 23 | 24 | grok { 25 | match => [ "request" , "%{WORD:request_action} %{DATA:request1} HTTP/%{NUMBER:http_version}" ] 26 | } 27 | } 28 | 29 | output { 30 | stdout { 31 | codec => dots {} 32 | } 33 | 34 | elasticsearch { 35 | index => "nginx_json_elastic_stack_example" 36 | document_type => "logs" 37 | template => "./nginx_json_template.json" 38 | template_name => "nginx_json_elastic_stack_example" 39 | template_overwrite => true 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /spec/support/lscl_configs/twitter_logstash.conf: -------------------------------------------------------------------------------- 1 | input { 2 | twitter { 3 | consumer_key => "INSERT YOUR CONSUMER KEY" 4 | consumer_secret => "INSERT YOUR CONSUMER SECRET" 5 | oauth_token => "INSERT YOUR ACCESS TOKEN" 6 | oauth_token_secret => "INSERT YOUR ACCESS TOKEN SECRET" 7 | keywords => [ "thor", "spiderman", "wolverine", "ironman", "hulk"] 8 | full_tweet => true 9 | } 10 | } 11 | 12 | filter { } 13 | 14 | output { 15 | stdout { 16 | codec => dots 17 | } 18 | elasticsearch { 19 | hosts => "localhost:9200" 20 | index => "twitter_elastic_example" 21 | document_type => "tweets" 22 | template => "./twitter_template.json" 23 | template_name => "twitter_elastic_example" 24 | template_overwrite => true 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /spec/support/lscl_configs/usfec_logstash.conf: -------------------------------------------------------------------------------- 1 | input { 2 | stdin { 3 | codec => json_lines {} 4 | } 5 | } 6 | 7 | filter { 8 | if !([transactionDate] == "") 9 | { 10 | date { 11 | match => [ "transactionDate", "MMddyyyy", "MM/dd/yyyy"] 12 | } 13 | } 14 | mutate { 15 | convert => ["transactionAmount", "float"] 16 | replace => { "type" => "%{recordType}" } 17 | } 18 | } 19 | 20 | output { 21 | #stdout { codec => rubydebug } 22 | stdout { codec => dots } 23 | elasticsearch { 24 | hosts => "localhost:9200" 25 | index => "usfec_%{recordType}" 26 | template => "usfec_template.json" 27 | template_name => "usfec" 28 | template_overwrite => true 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /spec/support/pack/empty-pack.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/spec/support/pack/empty-pack.zip -------------------------------------------------------------------------------- /spec/support/pack/valid-pack.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/spec/support/pack/valid-pack.zip -------------------------------------------------------------------------------- /spec/support/pack/valid-pack/logstash/valid-pack/dependencies/logstash-input-packtestdep-0.0.1.gem: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/spec/support/pack/valid-pack/logstash/valid-pack/dependencies/logstash-input-packtestdep-0.0.1.gem -------------------------------------------------------------------------------- /spec/support/pack/valid-pack/logstash/valid-pack/dependencies/logstash-input-packtestdep.gemspec: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | 3 | Gem::Specification.new do |spec| 4 | spec.name = "logstash-input-packtestdep" 5 | spec.version = "0.0.1" 6 | spec.authors = ["Elastic"] 7 | spec.email = ["info@elastic.co"] 8 | 9 | spec.summary = "a summary" 10 | spec.description = "a description" 11 | spec.homepage = "https://elastic.co" 12 | end 13 | -------------------------------------------------------------------------------- /spec/support/pack/valid-pack/logstash/valid-pack/logstash-input-packtest-0.0.1.gem: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/spec/support/pack/valid-pack/logstash/valid-pack/logstash-input-packtest-0.0.1.gem -------------------------------------------------------------------------------- /spec/support/pack/valid-pack/logstash/valid-pack/logstash-input-packtest.gemspec: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | 3 | Gem::Specification.new do |spec| 4 | spec.name = "logstash-input-packtest" 5 | spec.version = "0.0.1" 6 | spec.authors = ["Elastic"] 7 | spec.email = ["info@elastic.co"] 8 | spec.summary = "a summary" 9 | spec.description = "a description" 10 | spec.homepage = "https://elastic.co" 11 | 12 | spec.add_runtime_dependency "logstash-input-packtestdep" 13 | end 14 | -------------------------------------------------------------------------------- /spec/support/pack/valid-pack/logstash/valid-pack/logstash-input-packtest_pim-0.0.1.gem: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/spec/support/pack/valid-pack/logstash/valid-pack/logstash-input-packtest_pim-0.0.1.gem -------------------------------------------------------------------------------- /spec/support/pack/valid-pack/logstash/valid-pack/logstash-input-packtest_pim.gemspec: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | 3 | Gem::Specification.new do |spec| 4 | spec.name = "logstash-input-packtest_pim" 5 | spec.version = "0.0.1" 6 | spec.authors = ["Elastic"] 7 | spec.email = ["info@elastic.co"] 8 | spec.post_install_message = "Hello from the friendly pack" 9 | spec.summary = "a summary" 10 | spec.description = "a description" 11 | spec.homepage = "https://elastic.co" 12 | spec.add_runtime_dependency "logstash-input-packtestdep" 13 | end 14 | -------------------------------------------------------------------------------- /tools/benchmark-cli/gradle.properties: -------------------------------------------------------------------------------- 1 | isDistributedArtifact=false 2 | 3 | -------------------------------------------------------------------------------- /tools/benchmark-cli/src/main/resources/org/logstash/benchmark/cli/cases/apache.cfg: -------------------------------------------------------------------------------- 1 | input { 2 | stdin { } 3 | } 4 | 5 | filter { 6 | grok { 7 | match => { 8 | "message" => '%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{DATA:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response:int} (?:-|%{NUMBER:bytes:int}) %{QS:referrer} %{QS:agent}' 9 | } 10 | } 11 | 12 | date { 13 | match => [ "timestamp", "dd/MMM/YYYY:HH:mm:ss Z" ] 14 | locale => en 15 | } 16 | 17 | geoip { 18 | source => "clientip" 19 | } 20 | 21 | useragent { 22 | source => "agent" 23 | target => "useragent" 24 | } 25 | } 26 | 27 | output { 28 | stdout { codec => dots } 29 | } 30 | -------------------------------------------------------------------------------- /tools/benchmark-cli/src/main/resources/org/logstash/benchmark/cli/ls-benchmark.properties: -------------------------------------------------------------------------------- 1 | org.logstash.benchmark.apache.dataset.url=https://s3.amazonaws.com/data.elasticsearch.org/apache_logs/apache_access_logs.tar.gz 2 | -------------------------------------------------------------------------------- /tools/dependencies-report/gradle.properties: -------------------------------------------------------------------------------- 1 | isDistributedArtifact=false 2 | 3 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/acceptableLicenses.csv: -------------------------------------------------------------------------------- 1 | Apache-2.0 2 | BSD-2-Clause 3 | BSD-2-Clause-FreeBSD 4 | BSD-3-Clause 5 | BSD-3-Clause-Attribution 6 | EPL-1.0 7 | EPL-2.0 8 | ISC 9 | MIT 10 | Ruby 11 | Custom;https://www.redhat.com/licenses/EULA_Red_Hat_Universal_Base_Image_English_20190422.pdf -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/avro-NOTICE.txt: -------------------------------------------------------------------------------- 1 | Apache Avro 2 | Copyright 2010-2015 The Apache Software Foundation 3 | 4 | This product includes software developed at 5 | The Apache Software Foundation (https://www.apache.org/). 6 | 7 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/back_pressure-NOTICE.txt: -------------------------------------------------------------------------------- 1 | Copyright [yyyy] [name of copyright owner] 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/cabin-NOTICE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2011 Jordan Sissel 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | 15 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/com.google.code.findbugs!jsr305-NOTICE.txt: -------------------------------------------------------------------------------- 1 | Cannot find NOTICE.txt for the relatively old jsr305:1.3.9. Per https://search.maven.org/artifact/com.google.code.findbugs/jsr305/1.3.9/jar, the original source repo is at http://findbugs.googlecode.com/svn/trunk and is now defunct. 2 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/elastic-app-search-NOTICE.txt: -------------------------------------------------------------------------------- 1 | source: https://github.com/elastic/app-search-ruby/blob/v7.8.0/NOTICE.txt 2 | 3 | Elastic App Search Ruby client. 4 | 5 | Copyright 2012-2019 Elasticsearch B.V. -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/elastic-workplace-search-NOTICE.txt: -------------------------------------------------------------------------------- 1 | source: https://github.com/elastic/workplace-search-ruby/blob/master/NOTICE.txt 2 | 3 | Elastic Workplace Search Ruby client. 4 | 5 | Copyright 2012-2020 Elasticsearch B.V. -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/elasticsearch-NOTICE.txt: -------------------------------------------------------------------------------- 1 | source: https://github.com/elastic/elasticsearch-ruby/blob/v5.0.4/elasticsearch-api/LICENSE.txt 2 | 3 | Copyright 2013 Elasticsearch 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/elasticsearch-api-NOTICE.txt: -------------------------------------------------------------------------------- 1 | source: https://github.com/elastic/elasticsearch-ruby/blob/v5.0.4/elasticsearch-transport/LICENSE.txt 2 | 3 | Copyright (c) 2013 Elasticsearch 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/elasticsearch-transport-NOTICE.txt: -------------------------------------------------------------------------------- 1 | source: https://github.com/elastic/elasticsearch-ruby/blob/v5.0.4/elasticsearch/LICENSE.txt 2 | 3 | Copyright (c) 2013 Elasticsearch 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/gelfd2-NOTICE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2011-2013 John E. Vincent and contributors. 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/insist-NOTICE.txt: -------------------------------------------------------------------------------- 1 | source: https://github.com/jordansissel/ruby-insist/blob/master/LICENSE 2 | 3 | Copyright 2012-2013 Jordan Sissel and contributors. 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/jay-NOTICE.txt: -------------------------------------------------------------------------------- 1 | source: https://github.com/jruby/jruby/blob/master/COPYING 2 | 3 | JRuby is Copyright (c) 2007-2018 The JRuby project, and is released 4 | under a tri EPL/GPL/LGPL license. You can use it, redistribute it 5 | and/or modify it under the terms of the: 6 | 7 | Eclipse Public License version 2.0 8 | OR 9 | GNU General Public License version 2 10 | OR 11 | GNU Lesser General Public License version 2.1 12 | 13 | bytelist (http://github.com/jruby/bytelist), 14 | jnr-posix (https://github.com/jnr/jnr-posix), 15 | jruby-openssl (https://github.com/jruby/jruby-openssl), 16 | jruby-readline (https://github.com/jruby/jruby-readline), 17 | psych (https://github.com/ruby/psych), 18 | yydebug (https://github.com/jruby/jay-yydebug/) 19 | are released under the same copyright/license. 20 | 21 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/jls-lumberjack-NOTICE.txt: -------------------------------------------------------------------------------- 1 | source: https://github.com/elastic/ruby-lumberjack/blob/master/LICENSE 2 | 3 | 4 | Copyright 2012–2015 Jordan Sissel and contributors. 5 | 6 | Licensed under the Apache License, Version 2.0 (the "License"); 7 | you may not use this file except in compliance with the License. 8 | You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, software 13 | distributed under the License is distributed on an "AS IS" BASIS, 14 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | See the License for the specific language governing permissions and 16 | limitations under the License. 17 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/joda-NOTICE.txt: -------------------------------------------------------------------------------- 1 | source: https://github.com/JodaOrg/joda-time/blob/v2.9.9/NOTICE.txt 2 | 3 | This product includes software developed by 4 | Joda.org (http://www.joda.org/). -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/jrjackson-NOTICE.txt: -------------------------------------------------------------------------------- 1 | https://github.com/guyboertje/jrjackson/blob/v0.4.6/README.md 2 | 3 | LICENSE applicable to this library: 4 | 5 | Apache License 2.0 see http://www.apache.org/licenses/LICENSE-2.0 6 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/jruby-jms-NOTICE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2008, 2009, 2010, 2011 J. Reid Morrison, Inc. 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/jruby-stdin-channel-NOTICE.txt: -------------------------------------------------------------------------------- 1 | source: https://github.com/colinsurprenant/jruby-stdin-channel/blob/v0.2.0/LICENSE.md 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/minitar-NOTICE.txt: -------------------------------------------------------------------------------- 1 | source: https://github.com/halostatue/minitar/blob/v0.6.1/Licence.md 2 | 3 | minitar is free software that may be redistributed and/or modified under the 4 | terms of Ruby’s licence or the Simplified BSD licence. 5 | 6 | * Copyright 2004–2017 Austin Ziegler. 7 | * Portions copyright 2004 Mauricio Julio Fernández Pradier. 8 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/msgpack-NOTICE.txt: -------------------------------------------------------------------------------- 1 | source: https://github.com/msgpack/msgpack-ruby/blob/v1.2.4/ext/msgpack/ 2 | 3 | Copyright (C) 2008-2013 Sadayuki Furuhashi 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/org.apache.httpcomponents!httpclient-NOTICE.txt: -------------------------------------------------------------------------------- 1 | source: https://github.com/apache/httpcomponents-client/blob/4.5.x/NOTICE.txt 2 | 3 | Apache HttpComponents Client 4 | Copyright 1999-2021 The Apache Software Foundation 5 | 6 | This product includes software developed at 7 | The Apache Software Foundation (http://www.apache.org/). 8 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/org.apache.httpcomponents!httpcore-NOTICE.txt: -------------------------------------------------------------------------------- 1 | source: https://github.com/apache/httpcomponents-core/blob/4.4.x/NOTICE.txt 2 | 3 | Apache HttpComponents Core 4 | Copyright 2005-2021 The Apache Software Foundation 5 | 6 | This product includes software developed at 7 | The Apache Software Foundation (http://www.apache.org/). 8 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/org.apache.logging.log4j!log4j-1.2-api-NOTICE.txt: -------------------------------------------------------------------------------- 1 | source: https://github.com/apache/logging-log4j2/blob/rel/2.14.0/NOTICE.txt 2 | 3 | Apache Log4j 4 | Copyright 1999-2017 Apache Software Foundation 5 | 6 | This product includes software developed at 7 | The Apache Software Foundation (http://www.apache.org/). 8 | 9 | ResolverUtil.java 10 | Copyright 2005-2006 Tim Fennell 11 | 12 | Dumbster SMTP test server 13 | Copyright 2004 Jason Paul Kitchen 14 | 15 | TypeUtil.java 16 | Copyright 2002-2012 Ramnivas Laddad, Juergen Hoeller, Chris Beams 17 | 18 | picocli (http://picocli.info) 19 | Copyright 2017 Remko Popma -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/org.apache.logging.log4j!log4j-api-NOTICE.txt: -------------------------------------------------------------------------------- 1 | source: https://git-wip-us.apache.org/repos/asf?p=logging-log4j2.git;a=blob;f=NOTICE.txt;h=bd95322f254fc6f691b47e77df8c21229f47b8d4;hb=HEAD 2 | 3 | Apache Log4j 4 | Copyright 1999-2017 Apache Software Foundation 5 | 6 | This product includes software developed at 7 | The Apache Software Foundation (http://www.apache.org/). 8 | 9 | ResolverUtil.java 10 | Copyright 2005-2006 Tim Fennell 11 | 12 | Dumbster SMTP test server 13 | Copyright 2004 Jason Paul Kitchen 14 | 15 | TypeUtil.java 16 | Copyright 2002-2012 Ramnivas Laddad, Juergen Hoeller, Chris Beams 17 | 18 | picocli (http://picocli.info) 19 | Copyright 2017 Remko Popma -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/org.apache.logging.log4j!log4j-core-NOTICE.txt: -------------------------------------------------------------------------------- 1 | source: https://git-wip-us.apache.org/repos/asf?p=logging-log4j2.git;a=blob;f=NOTICE.txt;h=bd95322f254fc6f691b47e77df8c21229f47b8d4;hb=HEAD 2 | 3 | Apache Log4j 4 | Copyright 1999-2017 Apache Software Foundation 5 | 6 | This product includes software developed at 7 | The Apache Software Foundation (http://www.apache.org/). 8 | 9 | ResolverUtil.java 10 | Copyright 2005-2006 Tim Fennell 11 | 12 | Dumbster SMTP test server 13 | Copyright 2004 Jason Paul Kitchen 14 | 15 | TypeUtil.java 16 | Copyright 2002-2012 Ramnivas Laddad, Juergen Hoeller, Chris Beams 17 | 18 | picocli (http://picocli.info) 19 | Copyright 2017 Remko Popma -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/org.apache.logging.log4j!log4j-jcl-NOTICE.txt: -------------------------------------------------------------------------------- 1 | source: https://github.com/apache/logging-log4j2/blob/rel/2.14.0/NOTICE.txt 2 | 3 | Apache Log4j 4 | Copyright 1999-2017 Apache Software Foundation 5 | 6 | This product includes software developed at 7 | The Apache Software Foundation (http://www.apache.org/). 8 | 9 | ResolverUtil.java 10 | Copyright 2005-2006 Tim Fennell 11 | 12 | Dumbster SMTP test server 13 | Copyright 2004 Jason Paul Kitchen 14 | 15 | TypeUtil.java 16 | Copyright 2002-2012 Ramnivas Laddad, Juergen Hoeller, Chris Beams 17 | 18 | picocli (http://picocli.info) 19 | Copyright 2017 Remko Popma -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/org.apache.logging.log4j!log4j-slf4j-impl-NOTICE.txt: -------------------------------------------------------------------------------- 1 | source: https://git-wip-us.apache.org/repos/asf?p=logging-log4j2.git;a=blob;f=NOTICE.txt;h=bd95322f254fc6f691b47e77df8c21229f47b8d4;hb=HEAD 2 | 3 | Apache Log4j 4 | Copyright 1999-2017 Apache Software Foundation 5 | 6 | This product includes software developed at 7 | The Apache Software Foundation (http://www.apache.org/). 8 | 9 | ResolverUtil.java 10 | Copyright 2005-2006 Tim Fennell 11 | 12 | Dumbster SMTP test server 13 | Copyright 2004 Jason Paul Kitchen 14 | 15 | TypeUtil.java 16 | Copyright 2002-2012 Ramnivas Laddad, Juergen Hoeller, Chris Beams 17 | 18 | picocli (http://picocli.info) 19 | Copyright 2017 Remko Popma -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/org.eclipse.equinox!org.eclipse.equinox.app-NOTICE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012 Eclipse Foundation. 2 | All rights reserved. This program and the accompanying materials 3 | are made available under the terms of the Eclipse Distribution License v1.0 4 | which accompanies this distribution, and is available at 5 | http://www.eclipse.org/org/documents/edl-v10.php -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/org.eclipse.equinox!org.eclipse.equinox.common-NOTICE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012 Eclipse Foundation. 2 | All rights reserved. This program and the accompanying materials 3 | are made available under the terms of the Eclipse Distribution License v1.0 4 | which accompanies this distribution, and is available at 5 | http://www.eclipse.org/org/documents/edl-v10.php -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/org.eclipse.equinox!org.eclipse.equinox.preferences-NOTICE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012 Eclipse Foundation. 2 | All rights reserved. This program and the accompanying materials 3 | are made available under the terms of the Eclipse Distribution License v1.0 4 | which accompanies this distribution, and is available at 5 | http://www.eclipse.org/org/documents/edl-v10.php -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/org.eclipse.equinox!org.eclipse.equinox.registry-NOTICE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012 Eclipse Foundation. 2 | All rights reserved. This program and the accompanying materials 3 | are made available under the terms of the Eclipse Distribution License v1.0 4 | which accompanies this distribution, and is available at 5 | http://www.eclipse.org/org/documents/edl-v10.php -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/org.eclipse.jdt!org.eclipse.jdt.core-NOTICE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012, 2016 Eclipse Foundation and others. 2 | All rights reserved. This program and the accompanying materials 3 | are made available under the terms of the Eclipse Distribution License v1.0 4 | which accompanies this distribution, and is available at 5 | http://www.eclipse.org/org/documents/edl-v10.php -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/org.eclipse.osgi!org.eclipse.osgi-NOTICE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012, 2017 Eclipse Foundation. 2 | All rights reserved. This program and the accompanying materials 3 | are made available under the terms of the Eclipse Distribution License v1.0 4 | which accompanies this distribution, and is available at 5 | http://www.eclipse.org/org/documents/edl-v10.php -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/org.javassist!javassist-NOTICE.txt: -------------------------------------------------------------------------------- 1 | Copyright (C) 1999-2019 by Shigeru Chiba, All rights reserved. 2 | 3 | This software is distributed under the Mozilla Public License Version 1.1, the GNU Lesser General Public License Version 2.1 or later, or the Apache License Version 2.0. 4 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/org.logstash!jvm-options-parser-NOTICE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 Elasticsearch B.V. 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/org.reflections!reflections-NOTICE.txt: -------------------------------------------------------------------------------- 1 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 2 | Version 2, December 2004 3 | 4 | Copyright (C) 2004 Sam Hocevar 5 | 6 | Everyone is permitted to copy and distribute verbatim or modified 7 | copies of this license document, and changing it is allowed as long 8 | as the name is changed. 9 | 10 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 11 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 12 | 13 | 0. You just DO WHAT THE FUCK YOU WANT TO. 14 | 15 | Also licensed under BSD-2-Clause according to https://github.com/ronmamo/reflections/blob/0.9.11/pom.xml#L20-L22 16 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/org.yaml!snakeyaml-NOTICE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2008, SnakeYAML 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 4 | in compliance with the License. You may obtain a copy of the License at 5 | 6 | http://www.apache.org/licenses/LICENSE-2.0 7 | 8 | Unless required by applicable law or agreed to in writing, software distributed under the License 9 | is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 10 | or implied. See the License for the specific language governing permissions and limitations under 11 | the License. 12 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/paquet-NOTICE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012–2016 Elasticsearch 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/pleaserun-NOTICE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2014 Jordan Sissel contributors. 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/semantic_logger-NOTICE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2012, 2013, 2014, 2015, 2016 Reid Morrison 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/snappy-jars-NOTICE.txt: -------------------------------------------------------------------------------- 1 | Copyright Doug Mayer (https://github.com/doxavore) 2 | 3 | README.md: "Per the real implementation, Apache License v2.0." 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/stud-NOTICE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2012-2013 Jordan Sissel and contributors. 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/main/resources/notices/webhdfs-NOTICE.txt: -------------------------------------------------------------------------------- 1 | Copyright (C) 2012 Fluentd Project 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/test/resources/javaLicenses1.csv: -------------------------------------------------------------------------------- 1 | "artifact","moduleUrl","moduleLicense","moduleLicenseUrl", 2 | "com.fasterxml.jackson.core:jackson-core:2.9.4","https://github.com/FasterXML/jackson-core","The Apache Software License, Version 2.0","http://www.apache.org/licenses/LICENSE-2.0.txt", 3 | "com.google.errorprone:javac-shaded:9-dev-r4023-3","https://github.com/google/error-prone-javac","GNU General Public License, version 2, with the Classpath Exception","http://openjdk.java.net/legal/gplv2+ce.html", 4 | "gradle.plugin.com.github.jk1:gradle-license-report:0.7.1",,,, 5 | "junit:junit:4.13.2","http://junit.org","Eclipse Public License 1.0","http://www.eclipse.org/legal/epl-v10.html", 6 | "org.codehaus.janino:commons-compiler:3.0.8",,"New BSD License","https://raw.githubusercontent.com/janino-compiler/janino/master/LICENSE", 7 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/test/resources/javaLicenses2.csv: -------------------------------------------------------------------------------- 1 | "artifact","moduleUrl","moduleLicense","moduleLicenseUrl", 2 | "commons-io:commons-io:2.5","http://commons.apache.org/proper/commons-io/","Apache License, Version 2.0","http://www.apache.org/licenses/LICENSE-2.0.txt", 3 | "gradle.plugin.com.github.jk1:gradle-license-report:0.7.1",,,, 4 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/test/resources/javaLicensesMissingNotice.csv: -------------------------------------------------------------------------------- 1 | "artifact","moduleUrl","moduleLicense","moduleLicenseUrl", 2 | "co.elastic:noNoticeDep:0.0.1","Apache License, Version 2.0","http://www.apache.org/licenses/LICENSE-2.0.txt", 3 | "gradle.plugin.com.github.jk1:gradle-license-report:0.7.1",,,, -------------------------------------------------------------------------------- /tools/dependencies-report/src/test/resources/notices/Red Hat Universal Base Image minimal-NOTICE.txt: -------------------------------------------------------------------------------- 1 | TEST -------------------------------------------------------------------------------- /tools/dependencies-report/src/test/resources/notices/bundler-NOTICE.txt: -------------------------------------------------------------------------------- 1 | TEST -------------------------------------------------------------------------------- /tools/dependencies-report/src/test/resources/notices/com.fasterxml.jackson.core!jackson-core-NOTICE.txt: -------------------------------------------------------------------------------- 1 | TEST 2 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/test/resources/notices/com.google.errorprone!javac-shaded-NOTICE.txt: -------------------------------------------------------------------------------- 1 | TEST 2 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/test/resources/notices/commons-io!commons-io-NOTICE.txt: -------------------------------------------------------------------------------- 1 | TEST 2 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/test/resources/notices/control.js-NOTICE.txt: -------------------------------------------------------------------------------- 1 | TEST 2 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/test/resources/notices/filesize-NOTICE.txt: -------------------------------------------------------------------------------- 1 | TEST 2 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/test/resources/notices/gradle.plugin.com.github.jk1!gradle-license-report-NOTICE.txt: -------------------------------------------------------------------------------- 1 | TEST 2 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/test/resources/notices/jar-dependencies-NOTICE.txt: -------------------------------------------------------------------------------- 1 | TEST 2 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/test/resources/notices/jruby-openssl-NOTICE.txt: -------------------------------------------------------------------------------- 1 | TEST 2 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/test/resources/notices/jruby-readline-NOTICE.txt: -------------------------------------------------------------------------------- 1 | TEST 2 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/test/resources/notices/json-generator-NOTICE.txt: -------------------------------------------------------------------------------- 1 | json-generator notice 2 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/test/resources/notices/json-parser-NOTICE.txt: -------------------------------------------------------------------------------- 1 | TEST 2 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/test/resources/notices/junit!junit-NOTICE.txt: -------------------------------------------------------------------------------- 1 | TEST 2 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/test/resources/notices/org.codehaus.janino!commons-compiler-NOTICE.txt: -------------------------------------------------------------------------------- 1 | TEST 2 | -------------------------------------------------------------------------------- /tools/dependencies-report/src/test/resources/notices/tzinfo-NOTICE.txt: -------------------------------------------------------------------------------- 1 | TEST -------------------------------------------------------------------------------- /tools/jvm-options-parser/README.md: -------------------------------------------------------------------------------- 1 | Standalone jar for JvmOptionsParser to enable it to run under Java 8 to provide 2 | helpful fail fast message when logstash is run older versions of Java. -------------------------------------------------------------------------------- /tools/jvm-options-parser/gradle.properties: -------------------------------------------------------------------------------- 1 | isDistributedArtifact=false 2 | 3 | -------------------------------------------------------------------------------- /tools/logstash-docgen/.gitignore: -------------------------------------------------------------------------------- 1 | /.bundle/ 2 | /.yardoc 3 | /Gemfile.lock 4 | /_yardoc/ 5 | /coverage/ 6 | /doc/ 7 | /pkg/ 8 | /spec/reports/ 9 | /tmp/ 10 | target/ 11 | source/ 12 | -------------------------------------------------------------------------------- /tools/logstash-docgen/Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | # Specify your gem's dependencies in logstash-docgen.gemspec 4 | gemspec 5 | -------------------------------------------------------------------------------- /tools/logstash-docgen/Rakefile: -------------------------------------------------------------------------------- 1 | # Licensed to Elasticsearch B.V. under one or more contributor 2 | # license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright 4 | # ownership. Elasticsearch B.V. licenses this file to you under 5 | # the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | 18 | require "bundler/gem_tasks" 19 | task :default => :spec 20 | -------------------------------------------------------------------------------- /tools/logstash-docgen/bin/console: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | require "bundler/setup" 4 | require "logstash/docgen" 5 | 6 | # You can add fixtures and/or initialization code here to make experimenting 7 | # with your gem easier. You can also use a different console, if you like. 8 | 9 | # (If you use this, don't forget to add pry to your Gemfile!) 10 | # require "pry" 11 | # Pry.start 12 | 13 | require "irb" 14 | IRB.start 15 | -------------------------------------------------------------------------------- /tools/logstash-docgen/bin/logstash-docgen: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | require "bundler/setup" 4 | require "logstash/docgen/runner" 5 | 6 | LogStash::Docgen::Runner.run 7 | -------------------------------------------------------------------------------- /tools/logstash-docgen/bin/setup: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -euo pipefail 3 | IFS=$'\n\t' 4 | set -vx 5 | 6 | bundle install 7 | 8 | # Do any other automated setup that you need to do here 9 | -------------------------------------------------------------------------------- /tools/logstash-docgen/docs.md: -------------------------------------------------------------------------------- 1 | Extraction of the inline documentation into a separate file 2 | 3 | For details see https://github.com/elastic/logstash/issues/6846 4 | -------------------------------------------------------------------------------- /tools/logstash-docgen/logstash-docgen.yml: -------------------------------------------------------------------------------- 1 | --- 2 | ignore_plugins: 3 | - -mixin- 4 | - logstash-input-example 5 | - logstash-output-example 6 | - logstash-codec-example 7 | - logstash-filter-example 8 | - logstash-patterns-core 9 | -------------------------------------------------------------------------------- /tools/paquet/.gitignore: -------------------------------------------------------------------------------- 1 | /.bundle/ 2 | /.yardoc 3 | /Gemfile.lock 4 | /spec/support/dependencies 5 | /spec/support/.bundle 6 | /spec/support/*.lock 7 | -------------------------------------------------------------------------------- /tools/paquet/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.1 2 | - Making sure the gems are downloaded in binary format, without it, gems downloaded on windows will be corrupted. 3 | -------------------------------------------------------------------------------- /tools/paquet/Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | # Specify your gem's dependencies in paquet.gemspec 4 | gemspec 5 | -------------------------------------------------------------------------------- /tools/paquet/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012–2016 Elasticsearch 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /tools/paquet/Rakefile: -------------------------------------------------------------------------------- 1 | # Licensed to Elasticsearch B.V. under one or more contributor 2 | # license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright 4 | # ownership. Elasticsearch B.V. licenses this file to you under 5 | # the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | 18 | require "bundler/gem_tasks" 19 | task :default => :spec 20 | -------------------------------------------------------------------------------- /tools/paquet/lib/paquet/version.rb: -------------------------------------------------------------------------------- 1 | # Licensed to Elasticsearch B.V. under one or more contributor 2 | # license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright 4 | # ownership. Elasticsearch B.V. licenses this file to you under 5 | # the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | 18 | module Paquet 19 | VERSION = "0.2.1" 20 | end 21 | -------------------------------------------------------------------------------- /tools/paquet/spec/spec_helper.rb: -------------------------------------------------------------------------------- 1 | # Licensed to Elasticsearch B.V. under one or more contributor 2 | # license agreements. See the NOTICE file distributed with 3 | # this work for additional information regarding copyright 4 | # ownership. Elasticsearch B.V. licenses this file to you under 5 | # the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, 12 | # software distributed under the License is distributed on an 13 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 | # KIND, either express or implied. See the License for the 15 | # specific language governing permissions and limitations 16 | # under the License. 17 | 18 | require "webmock/rspec" 19 | -------------------------------------------------------------------------------- /tools/paquet/spec/support/Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | gemspec 3 | gem "paquet", :path => "../../" 4 | -------------------------------------------------------------------------------- /tools/paquet/spec/support/paquet.gemspec: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | 3 | Gem::Specification.new do |spec| 4 | spec.name = "paquet-test" 5 | spec.version = "0.0.0" 6 | spec.authors = ["Elastic"] 7 | spec.email = ["info@elastic.co"] 8 | spec.license = "Apache License (2.0)" 9 | 10 | spec.summary = %q{testing gem} 11 | spec.description = %q{testing gem} 12 | spec.homepage = "https://github.com/elastic/logstash" 13 | 14 | spec.add_runtime_dependency "stud" 15 | spec.add_runtime_dependency "flores", "0.0.8" 16 | spec.add_runtime_dependency "logstash-devutils", "0.0.6" 17 | end 18 | -------------------------------------------------------------------------------- /x-pack/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.1.0 2 | - First version of Logstash monitoring includes agent that ships Logstash monitoring data 3 | periodically to Elasticsearch instance. 4 | -------------------------------------------------------------------------------- /x-pack/ci/unit_tests.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -ie 2 | #Note - ensure that the -e flag is set to properly set the $? status if any command fails 3 | 4 | # Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one 5 | # or more contributor license agreements. Licensed under the Elastic License; 6 | # you may not use this file except in compliance with the Elastic License. 7 | 8 | # Since we are using the system jruby, we need to make sure our jvm process 9 | # uses at least 1g of memory, If we don't do this we can get OOM issues when 10 | # installing gems. See https://github.com/elastic/logstash/issues/5179 11 | export JRUBY_OPTS="-J-Xmx1g" 12 | export GRADLE_OPTS="-Xmx4g -Dorg.gradle.jvmargs=-Xmx4g -Dorg.gradle.daemon=false -Dorg.gradle.logging.level=info" 13 | export CI=true 14 | 15 | if [ -n "$BUILD_JAVA_HOME" ]; then 16 | GRADLE_OPTS="$GRADLE_OPTS -Dorg.gradle.java.home=$BUILD_JAVA_HOME" 17 | fi 18 | 19 | ./gradlew runXPackUnitTests -------------------------------------------------------------------------------- /x-pack/gradle.properties: -------------------------------------------------------------------------------- 1 | isDistributedArtifact=true 2 | 3 | -------------------------------------------------------------------------------- /x-pack/lib/geoip_database_management/constants.rb: -------------------------------------------------------------------------------- 1 | # Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one 2 | # or more contributor license agreements. Licensed under the Elastic License; 3 | # you may not use this file except in compliance with the Elastic License. 4 | 5 | module LogStash module GeoipDatabaseManagement 6 | module Constants 7 | GZ_EXT = 'tgz'.freeze 8 | DB_EXT = 'mmdb'.freeze 9 | 10 | GEOLITE = 'GeoLite2-'.freeze 11 | CITY = "City".freeze 12 | ASN = "ASN".freeze 13 | DB_TYPES = [ASN, CITY].freeze 14 | 15 | CITY_DB_NAME = "#{GEOLITE}#{CITY}.#{DB_EXT}".freeze 16 | ASN_DB_NAME = "#{GEOLITE}#{ASN}.#{DB_EXT}".freeze 17 | DEFAULT_DB_NAMES = [CITY_DB_NAME, ASN_DB_NAME].freeze 18 | end 19 | end end -------------------------------------------------------------------------------- /x-pack/lib/geoip_database_management/data_path.rb: -------------------------------------------------------------------------------- 1 | # Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one 2 | # or more contributor license agreements. Licensed under the Elastic License; 3 | # you may not use this file except in compliance with the Elastic License. 4 | 5 | module LogStash module GeoipDatabaseManagement 6 | class DataPath 7 | include GeoipDatabaseManagement::Constants 8 | 9 | def initialize(root) 10 | @root = ::File::expand_path(root).freeze 11 | end 12 | 13 | attr_reader :root 14 | 15 | def gz(database_type, dirname) 16 | resolve(dirname, "#{GEOLITE}#{database_type}.#{GZ_EXT}") 17 | end 18 | 19 | def db(database_type, dirname) 20 | resolve(dirname, "#{GEOLITE}#{database_type}.#{DB_EXT}") 21 | end 22 | 23 | def resolve(relative_path, *more) 24 | ::File.expand_path(::File.join(relative_path, *more), @root) 25 | end 26 | 27 | end 28 | end; end -------------------------------------------------------------------------------- /x-pack/lib/helpers/loggable_try.rb: -------------------------------------------------------------------------------- 1 | # Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one 2 | # or more contributor license agreements. Licensed under the Elastic License; 3 | # you may not use this file except in compliance with the Elastic License. 4 | 5 | require 'stud/try' 6 | 7 | module LogStash module Helpers 8 | class LoggableTry < Stud::Try 9 | def initialize(logger, name) 10 | @logger = logger 11 | @name = name 12 | end 13 | 14 | def log_failure(exception, fail_count, message) 15 | @logger.warn("Attempt to #{@name} failed. #{message}", fail_count: fail_count, exception: exception.message) 16 | end 17 | end 18 | end end 19 | -------------------------------------------------------------------------------- /x-pack/lib/monitoring/outputs/elasticsearch_monitoring.rb: -------------------------------------------------------------------------------- 1 | # Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one 2 | # or more contributor license agreements. Licensed under the Elastic License; 3 | # you may not use this file except in compliance with the Elastic License. 4 | 5 | module LogStash module Outputs 6 | class ElasticSearchMonitoring < LogStash::Outputs::ElasticSearch 7 | config_name "elasticsearch_monitoring" 8 | 9 | # This is need to avoid deprecation warning in output 10 | config :document_type, :validate => :string 11 | 12 | def use_event_type?(client) 13 | !LogStash::MonitoringExtension.use_direct_shipping?(LogStash::SETTINGS) 14 | end 15 | end 16 | end; end 17 | -------------------------------------------------------------------------------- /x-pack/qa/integration/spec_helper.rb: -------------------------------------------------------------------------------- 1 | # Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one 2 | # or more contributor license agreements. Licensed under the Elastic License; 3 | # you may not use this file except in compliance with the Elastic License. 4 | 5 | MONITORING_INDEXES = ".monitoring-logstash-*" 6 | 7 | require_relative "support/helpers" 8 | require_relative "support/shared_examples" 9 | require_relative "support/elasticsearch/api/actions/update_password" 10 | require "json" 11 | require "json-schema" 12 | -------------------------------------------------------------------------------- /x-pack/qa/integration/support/elasticsearch/api/actions/update_password.rb: -------------------------------------------------------------------------------- 1 | # Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one 2 | # or more contributor license agreements. Licensed under the Elastic License; 3 | # you may not use this file except in compliance with the Elastic License. 4 | 5 | module Elasticsearch 6 | module API 7 | module Actions 8 | # Update the password of the specified user 9 | def update_password(arguments = {}) 10 | method = HTTP_PUT 11 | path = Utils.__pathify '_security/user/', 12 | Utils.__escape(arguments[:user]), 13 | '/_password' 14 | params = {} 15 | body = { 16 | "password" => "#{arguments[:password]}" 17 | } 18 | perform_request(method, path, params, body).body 19 | end 20 | end 21 | end 22 | end 23 | -------------------------------------------------------------------------------- /x-pack/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'x-pack' 2 | -------------------------------------------------------------------------------- /x-pack/spec/geoip_database_management/fixtures/sample.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/logstash/d3340fa4d72d745426f1ec3245e7da9616c2e89d/x-pack/spec/geoip_database_management/fixtures/sample.tgz -------------------------------------------------------------------------------- /x-pack/spec/geoip_database_management/spec_helper.rb: -------------------------------------------------------------------------------- 1 | 2 | RSpec.configure do |config| 3 | config.around(:each, verify_stubs: true) do |example| 4 | config.mock_with :rspec do |mocks| 5 | begin 6 | previous_verify = mockes.verify_partial_doubles 7 | mocks.verify_partial_doubles = true 8 | example.run 9 | ensure 10 | mocks.verify_partial_doubles = previous_verify 11 | end 12 | end 13 | end 14 | end -------------------------------------------------------------------------------- /x-pack/spec/spec_helper.rb: -------------------------------------------------------------------------------- 1 | # Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one 2 | # or more contributor license agreements. Licensed under the Elastic License; 3 | # you may not use this file except in compliance with the Elastic License. 4 | 5 | require "logstash/devutils/rspec/spec_helper" 6 | require_relative "support/matchers" 7 | require_relative "support/helpers" 8 | require "monitoring/inputs/metrics" 9 | 10 | if ENV['TEST_DEBUG'] 11 | java.lang.System.setProperty("ls.log.level", "debug") 12 | end 13 | -------------------------------------------------------------------------------- /x-pack/spec/support/matchers.rb: -------------------------------------------------------------------------------- 1 | # Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one 2 | # or more contributor license agreements. Licensed under the Elastic License; 3 | # you may not use this file except in compliance with the Elastic License. 4 | 5 | RSpec::Matchers.define :have_registered_hook do |emitter_scope, klass| 6 | match do |hooks| 7 | hooks.registered_hook?(emitter_scope, klass) 8 | end 9 | 10 | failure_message do 11 | "HooksRegistry doesn't contains a hook named `#{klass}` for the specified emitter scope: `#{emitter_scope}`" 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /x-pack/src/test/java/org/logstash/xpack/test/RSpecIntegrationTests.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one 3 | * or more contributor license agreements. Licensed under the Elastic License; 4 | * you may not use this file except in compliance with the Elastic License. 5 | */ 6 | 7 | 8 | package org.logstash.xpack.test; 9 | 10 | import org.junit.Test; 11 | 12 | import java.util.Arrays; 13 | import java.util.List; 14 | 15 | public class RSpecIntegrationTests extends RSpecTests { 16 | 17 | @Override 18 | protected List rspecArgs() { 19 | return Arrays.asList("-fd", "qa/integration"); 20 | } 21 | 22 | @Test 23 | @Override 24 | public void rspecTests() throws Exception { 25 | super.rspecTests(); 26 | } 27 | 28 | } 29 | --------------------------------------------------------------------------------