logstash-core 6.0.0.alpha2-java → 6.0.0.beta1-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. checksums.yaml +5 -5
  2. data/gemspec_jars.rb +6 -4
  3. data/lib/logstash-core/logstash-core.jar +0 -0
  4. data/lib/logstash-core/logstash-core.rb +2 -2
  5. data/lib/logstash-core/version.rb +1 -1
  6. data/lib/logstash-core_jars.rb +14 -10
  7. data/lib/logstash/agent.rb +4 -2
  8. data/lib/logstash/api/commands/default_metadata.rb +1 -1
  9. data/lib/logstash/api/commands/hot_threads_reporter.rb +8 -2
  10. data/lib/logstash/api/commands/node.rb +2 -2
  11. data/lib/logstash/api/commands/stats.rb +2 -2
  12. data/lib/logstash/bootstrap_check/bad_ruby.rb +2 -2
  13. data/lib/logstash/bootstrap_check/default_config.rb +2 -3
  14. data/lib/logstash/compiler.rb +12 -12
  15. data/lib/logstash/compiler/lscl.rb +17 -7
  16. data/lib/logstash/compiler/treetop_monkeypatches.rb +1 -0
  17. data/lib/logstash/config/config_ast.rb +11 -1
  18. data/lib/logstash/config/mixin.rb +5 -0
  19. data/lib/logstash/config/modules_common.rb +101 -0
  20. data/lib/logstash/config/source/base.rb +75 -0
  21. data/lib/logstash/config/source/local.rb +52 -50
  22. data/lib/logstash/config/source/modules.rb +55 -0
  23. data/lib/logstash/config/source/multi_local.rb +54 -10
  24. data/lib/logstash/config/source_loader.rb +1 -0
  25. data/lib/logstash/config/string_escape.rb +27 -0
  26. data/lib/logstash/elasticsearch_client.rb +142 -0
  27. data/lib/logstash/environment.rb +5 -1
  28. data/lib/logstash/event.rb +0 -1
  29. data/lib/logstash/instrument/global_metrics.rb +13 -0
  30. data/lib/logstash/instrument/metric_store.rb +16 -13
  31. data/lib/logstash/instrument/metric_type/counter.rb +6 -18
  32. data/lib/logstash/instrument/metric_type/gauge.rb +6 -12
  33. data/lib/logstash/instrument/periodic_poller/dlq.rb +19 -0
  34. data/lib/logstash/instrument/periodic_pollers.rb +3 -1
  35. data/lib/logstash/logging/logger.rb +43 -14
  36. data/lib/logstash/modules/cli_parser.rb +74 -0
  37. data/lib/logstash/modules/elasticsearch_config.rb +22 -0
  38. data/lib/logstash/modules/elasticsearch_importer.rb +37 -0
  39. data/lib/logstash/modules/elasticsearch_resource.rb +10 -0
  40. data/lib/logstash/modules/file_reader.rb +36 -0
  41. data/lib/logstash/modules/kibana_base.rb +24 -0
  42. data/lib/logstash/modules/kibana_client.rb +122 -0
  43. data/lib/logstash/modules/kibana_config.rb +125 -0
  44. data/lib/logstash/modules/kibana_dashboards.rb +36 -0
  45. data/lib/logstash/modules/kibana_importer.rb +17 -0
  46. data/lib/logstash/modules/kibana_resource.rb +10 -0
  47. data/lib/logstash/modules/kibana_settings.rb +40 -0
  48. data/lib/logstash/modules/logstash_config.rb +120 -0
  49. data/lib/logstash/modules/resource_base.rb +38 -0
  50. data/lib/logstash/modules/scaffold.rb +50 -0
  51. data/lib/logstash/modules/settings_merger.rb +23 -0
  52. data/lib/logstash/modules/util.rb +17 -0
  53. data/lib/logstash/namespace.rb +1 -0
  54. data/lib/logstash/pipeline.rb +66 -27
  55. data/lib/logstash/pipeline_settings.rb +1 -0
  56. data/lib/logstash/plugins/registry.rb +1 -0
  57. data/lib/logstash/runner.rb +47 -3
  58. data/lib/logstash/settings.rb +20 -1
  59. data/lib/logstash/util/dead_letter_queue_manager.rb +1 -1
  60. data/lib/logstash/util/safe_uri.rb +146 -11
  61. data/lib/logstash/util/thread_dump.rb +4 -3
  62. data/lib/logstash/util/wrapped_acked_queue.rb +28 -24
  63. data/lib/logstash/util/wrapped_synchronous_queue.rb +19 -20
  64. data/lib/logstash/version.rb +1 -1
  65. data/locales/en.yml +56 -1
  66. data/logstash-core.gemspec +6 -4
  67. data/spec/logstash/agent/converge_spec.rb +2 -2
  68. data/spec/logstash/agent_spec.rb +11 -3
  69. data/spec/logstash/api/modules/logging_spec.rb +13 -7
  70. data/spec/logstash/api/modules/node_plugins_spec.rb +23 -5
  71. data/spec/logstash/api/modules/node_spec.rb +17 -15
  72. data/spec/logstash/api/modules/node_stats_spec.rb +0 -1
  73. data/spec/logstash/api/modules/plugins_spec.rb +40 -9
  74. data/spec/logstash/api/modules/root_spec.rb +0 -1
  75. data/spec/logstash/api/rack_app_spec.rb +2 -1
  76. data/spec/logstash/compiler/compiler_spec.rb +54 -7
  77. data/spec/logstash/config/config_ast_spec.rb +47 -8
  78. data/spec/logstash/config/mixin_spec.rb +14 -2
  79. data/spec/logstash/config/pipeline_config_spec.rb +7 -7
  80. data/spec/logstash/config/source/local_spec.rb +5 -2
  81. data/spec/logstash/config/source/multi_local_spec.rb +56 -10
  82. data/spec/logstash/config/source_loader_spec.rb +1 -1
  83. data/spec/logstash/config/string_escape_spec.rb +24 -0
  84. data/spec/logstash/event_spec.rb +9 -0
  85. data/spec/logstash/filters/base_spec.rb +1 -1
  86. data/spec/logstash/instrument/metric_store_spec.rb +2 -3
  87. data/spec/logstash/instrument/metric_type/counter_spec.rb +0 -12
  88. data/spec/logstash/instrument/metric_type/gauge_spec.rb +1 -8
  89. data/spec/logstash/instrument/periodic_poller/dlq_spec.rb +17 -0
  90. data/spec/logstash/instrument/periodic_poller/jvm_spec.rb +1 -1
  91. data/spec/logstash/legacy_ruby_event_spec.rb +0 -9
  92. data/spec/logstash/legacy_ruby_timestamp_spec.rb +19 -14
  93. data/spec/logstash/modules/cli_parser_spec.rb +129 -0
  94. data/spec/logstash/modules/logstash_config_spec.rb +56 -0
  95. data/spec/logstash/modules/scaffold_spec.rb +239 -0
  96. data/spec/logstash/pipeline_dlq_commit_spec.rb +1 -1
  97. data/spec/logstash/pipeline_spec.rb +87 -20
  98. data/spec/logstash/runner_spec.rb +122 -5
  99. data/spec/logstash/setting_spec.rb +2 -2
  100. data/spec/logstash/settings/splittable_string_array_spec.rb +51 -0
  101. data/spec/logstash/timestamp_spec.rb +8 -2
  102. data/spec/logstash/util/safe_uri_spec.rb +16 -0
  103. data/spec/logstash/util/wrapped_acked_queue_spec.rb +63 -0
  104. data/spec/logstash/util/wrapped_synchronous_queue_spec.rb +0 -22
  105. data/spec/support/helpers.rb +1 -1
  106. data/spec/support/matchers.rb +21 -4
  107. metadata +102 -19
  108. data/lib/logstash/instrument/metric_type/base.rb +0 -31
  109. data/lib/logstash/program.rb +0 -14
  110. data/lib/logstash/string_interpolation.rb +0 -18
@@ -537,8 +537,27 @@ module LogStash
537
537
  end
538
538
  end
539
539
  end
540
- end
541
540
 
541
+ class SplittableStringArray < ArrayCoercible
542
+ DEFAULT_TOKEN = ","
543
+
544
+ def initialize(name, klass, default, strict=true, tokenizer = DEFAULT_TOKEN, &validator_proc)
545
+ @element_class = klass
546
+ @token = tokenizer
547
+ super(name, klass, default, strict, &validator_proc)
548
+ end
549
+
550
+ def coerce(value)
551
+ if value.is_a?(Array)
552
+ value
553
+ elsif value.nil?
554
+ []
555
+ else
556
+ value.split(@token).map(&:strip)
557
+ end
558
+ end
559
+ end
560
+ end
542
561
 
543
562
  SETTINGS = Settings.new
544
563
  end
@@ -48,7 +48,7 @@ module LogStash; module Util
48
48
  def self.get(pipeline_id)
49
49
  if LogStash::SETTINGS.get("dead_letter_queue.enable")
50
50
  return DeadLetterQueueWriter.new(
51
- DeadLetterQueueFactory.getWriter(pipeline_id, LogStash::SETTINGS.get("path.dead_letter_queue")))
51
+ DeadLetterQueueFactory.getWriter(pipeline_id, LogStash::SETTINGS.get("path.dead_letter_queue"), LogStash::SETTINGS.get('dead_letter_queue.max_bytes')))
52
52
  else
53
53
  return DeadLetterQueueWriter.new(nil)
54
54
  end
@@ -11,20 +11,21 @@ class LogStash::Util::SafeURI
11
11
 
12
12
  extend Forwardable
13
13
 
14
- def_delegators :@uri, :coerce, :query=, :route_from, :port=, :default_port, :select, :normalize!, :absolute?, :registry=, :path, :password, :hostname, :merge, :normalize, :host, :component_ary, :userinfo=, :query, :set_opaque, :+, :merge!, :-, :password=, :parser, :port, :set_host, :set_path, :opaque=, :scheme, :fragment=, :set_query, :set_fragment, :userinfo, :hostname=, :set_port, :path=, :registry, :opaque, :route_to, :set_password, :hierarchical?, :set_user, :set_registry, :set_userinfo, :fragment, :component, :user=, :set_scheme, :absolute, :host=, :relative?, :scheme=, :user
15
14
 
16
15
  attr_reader :uri
17
-
16
+
18
17
  public
19
18
  def initialize(arg)
20
19
  @uri = case arg
21
20
  when String
22
21
  arg = "//#{arg}" if HOSTNAME_PORT_REGEX.match(arg)
23
- URI.parse(arg)
24
- when URI
22
+ java.net.URI.new(arg)
23
+ when java.net.URI
25
24
  arg
25
+ when URI
26
+ java.net.URI.new(arg.to_s)
26
27
  else
27
- raise ArgumentError, "Expected a string or URI, got a #{arg.class} creating a URL"
28
+ raise ArgumentError, "Expected a string, java.net.URI, or URI, got a #{arg.class} creating a URL"
28
29
  end
29
30
  end
30
31
 
@@ -37,11 +38,11 @@ class LogStash::Util::SafeURI
37
38
  end
38
39
 
39
40
  def sanitized
40
- return uri unless uri.password # nothing to sanitize here!
41
+ return uri unless password # nothing to sanitize here!
41
42
 
42
- safe = uri.clone
43
- safe.password = PASS_PLACEHOLDER
44
- safe
43
+ user_info = user ? "#{user}:#{PASS_PLACEHOLDER}" : nil
44
+
45
+ make_uri(scheme, user_info, host, port, path, query, fragment)
45
46
  end
46
47
 
47
48
  def ==(other)
@@ -49,8 +50,142 @@ class LogStash::Util::SafeURI
49
50
  end
50
51
 
51
52
  def clone
52
- cloned_uri = uri.clone
53
- self.class.new(cloned_uri)
53
+ # No need to clone the URI, in java its immutable
54
+ self.class.new(uri)
55
+ end
56
+
57
+ def update(field, value)
58
+ new_scheme = scheme
59
+ new_user = user
60
+ new_password = password
61
+ new_host = host
62
+ new_port = port
63
+ new_path = path
64
+ new_query = query
65
+ new_fragment = fragment
66
+
67
+ case field
68
+ when :scheme
69
+ new_scheme = value
70
+ when :user
71
+ new_user = value
72
+ when :password
73
+ new_password = value
74
+ when :host
75
+ new_host = value
76
+ when :port
77
+ new_port = value
78
+ when :path
79
+ new_path = value
80
+ when :query
81
+ new_query = value
82
+ when :fragment
83
+ new_fragment = value
84
+ end
85
+
86
+ user_info = new_user
87
+ if new_user && new_password
88
+ user_info += ":" + new_password
89
+ end
90
+
91
+ @uri = make_uri(new_scheme, user_info, new_host, new_port, new_path, new_query, new_fragment)
92
+ end
93
+
94
+ def user
95
+ if userinfo
96
+ userinfo.split(":")[0]
97
+ end
98
+ end
99
+
100
+ def user=(new_user)
101
+ update(:user, new_user)
102
+ end
103
+
104
+ def password
105
+ if userinfo
106
+ userinfo.split(":")[1]
107
+ end
108
+ end
109
+
110
+ def password=(new_password)
111
+ update(:password, new_password)
112
+ end
113
+
114
+ def hostname
115
+ # Alias from the ruby library
116
+ host
117
+ end
118
+
119
+ def host=(new_host)
120
+ update(:host, new_host)
121
+ end
122
+
123
+ def port
124
+ # In java this is an int
125
+ uri.port < 1 ? nil : uri.port
126
+ end
127
+
128
+ def port=(new_port)
129
+ update(:port, new_port)
130
+ end
131
+
132
+ def path=(new_path)
133
+ update(:path, new_path)
134
+ end
135
+
136
+ def query=(new_query)
137
+ update(:query, new_query)
138
+ end
139
+
140
+ def fragment=(new_fragment)
141
+ update(:fragment, new_fragment)
142
+ end
143
+
144
+ # Same algorithm as Ruby's URI class uses
145
+ def normalize!
146
+ if path && path == ''
147
+ path = '/'
148
+ end
149
+ if scheme && scheme != scheme.downcase
150
+ scheme = self.scheme.downcase
151
+ end
152
+ if host && host != host.downcase
153
+ host = self.host.downcase
154
+ end
155
+ end
156
+
157
+ def normalize
158
+ d = self.dup
159
+ d.normalize!
160
+ d
161
+ end
162
+
163
+ def path
164
+ @uri.raw_path
165
+ end
166
+
167
+ def query
168
+ @uri.raw_query
169
+ end
170
+
171
+ def fragment
172
+ @uri.raw_fragment
173
+ end
174
+
175
+ def userinfo
176
+ @uri.raw_user_info
177
+ end
178
+
179
+ def_delegators :@uri, :absolute?, :scheme, :host
180
+
181
+ private
182
+
183
+ # Jruby doesn't guess the constructor correctly if there are some nil things in place
184
+ # hence, this method
185
+ def make_uri(scheme, user_info, host, port, path, query, fragment)
186
+ # It is lot legal to have a path not starting with a /
187
+ prefixed_path = path && path[0] != "/" ? "/#{path}" : path
188
+ java.net.URI.new(scheme, user_info, host, port || -1, prefixed_path, query, fragment)
54
189
  end
55
190
  end
56
191
 
@@ -19,12 +19,13 @@ module LogStash
19
19
 
20
20
  def each(&block)
21
21
  i=0
22
- dump.each_pair do |thread_name, _hash|
22
+ dump.each do |hash|
23
+ thread_name = hash["thread.name"]
23
24
  break if i >= top_count
24
25
  if ignore
25
- next if idle_thread?(thread_name, _hash)
26
+ next if idle_thread?(thread_name, hash)
26
27
  end
27
- block.call(thread_name, _hash)
28
+ block.call(hash)
28
29
  i += 1
29
30
  end
30
31
  end
@@ -57,24 +57,6 @@ module LogStash; module Util
57
57
  end
58
58
  alias_method(:<<, :push)
59
59
 
60
- # TODO - fix doc for this noop method
61
- # Offer an object to the queue, wait for the specified amount of time.
62
- # If adding to the queue was successful it will return true, false otherwise.
63
- #
64
- # @param [Object] Object to add to the queue
65
- # @param [Integer] Time in milliseconds to wait before giving up
66
- # @return [Boolean] True if adding was successful if not it return false
67
- def offer(obj, timeout_ms)
68
- raise NotImplementedError.new("The offer method is not implemented. There is no non blocking write operation yet.")
69
- end
70
-
71
- # Blocking
72
- def take
73
- check_closed("read a batch")
74
- # TODO - determine better arbitrary timeout millis
75
- @queue.read_batch(1, 200).get_elements.first
76
- end
77
-
78
60
  # Block for X millis
79
61
  def poll(millis)
80
62
  check_closed("read")
@@ -100,6 +82,10 @@ module LogStash; module Util
100
82
  end
101
83
  end
102
84
 
85
+ def is_empty?
86
+ @queue.is_empty?
87
+ end
88
+
103
89
  def close
104
90
  @queue.close
105
91
  @closed.make_true
@@ -127,7 +113,12 @@ module LogStash; module Util
127
113
  end
128
114
 
129
115
  def empty?
130
- @mutex.synchronize { @queue.is_fully_acked? }
116
+ @mutex.lock
117
+ begin
118
+ @queue.is_empty?
119
+ ensure
120
+ @mutex.unlock
121
+ end
131
122
  end
132
123
 
133
124
  def set_batch_dimensions(batch_size, wait_for)
@@ -152,8 +143,11 @@ module LogStash; module Util
152
143
  end
153
144
 
154
145
  def inflight_batches
155
- @mutex.synchronize do
146
+ @mutex.lock
147
+ begin
156
148
  yield(@inflight_batches)
149
+ ensure
150
+ @mutex.unlock
157
151
  end
158
152
  end
159
153
 
@@ -173,16 +167,24 @@ module LogStash; module Util
173
167
  end
174
168
 
175
169
  batch = new_batch
176
- @mutex.synchronize { batch.read_next }
170
+ @mutex.lock
171
+ begin
172
+ batch.read_next
173
+ ensure
174
+ @mutex.unlock
175
+ end
177
176
  start_metrics(batch)
178
177
  batch
179
178
  end
180
179
 
181
180
  def start_metrics(batch)
182
- @mutex.synchronize do
181
+ @mutex.lock
182
+ begin
183
183
  # there seems to be concurrency issues with metrics, keep it in the mutex
184
184
  set_current_thread_inflight_batch(batch)
185
185
  start_clock
186
+ ensure
187
+ @mutex.unlock
186
188
  end
187
189
  end
188
190
 
@@ -191,12 +193,14 @@ module LogStash; module Util
191
193
  end
192
194
 
193
195
  def close_batch(batch)
194
- @mutex.synchronize do
196
+ @mutex.lock
197
+ begin
195
198
  batch.close
196
-
197
199
  # there seems to be concurrency issues with metrics, keep it in the mutex
198
200
  @inflight_batches.delete(Thread.current)
199
201
  stop_clock(batch)
202
+ ensure
203
+ @mutex.unlock
200
204
  end
201
205
  end
202
206
 
@@ -18,21 +18,6 @@ module LogStash; module Util
18
18
  end
19
19
  alias_method(:<<, :push)
20
20
 
21
- # Offer an object to the queue, wait for the specified amount of time.
22
- # If adding to the queue was successful it wil return true, false otherwise.
23
- #
24
- # @param [Object] Object to add to the queue
25
- # @param [Integer] Time in milliseconds to wait before giving up
26
- # @return [Boolean] True if adding was successful if not it return false
27
- def offer(obj, timeout_ms)
28
- @queue.offer(obj, timeout_ms, TimeUnit::MILLISECONDS)
29
- end
30
-
31
- # Blocking
32
- def take
33
- @queue.take
34
- end
35
-
36
21
  # Block for X millis
37
22
  def poll(millis)
38
23
  @queue.poll(millis, TimeUnit::MILLISECONDS)
@@ -98,8 +83,11 @@ module LogStash; module Util
98
83
  end
99
84
 
100
85
  def inflight_batches
101
- @mutex.synchronize do
86
+ @mutex.lock
87
+ begin
102
88
  yield(@inflight_batches)
89
+ ensure
90
+ @mutex.unlock
103
91
  end
104
92
  end
105
93
 
@@ -115,16 +103,24 @@ module LogStash; module Util
115
103
 
116
104
  def read_batch
117
105
  batch = new_batch
118
- @mutex.synchronize { batch.read_next }
106
+ @mutex.lock
107
+ begin
108
+ batch.read_next
109
+ ensure
110
+ @mutex.unlock
111
+ end
119
112
  start_metrics(batch)
120
113
  batch
121
114
  end
122
115
 
123
116
  def start_metrics(batch)
124
- @mutex.synchronize do
125
- # there seems to be concurrency issues with metrics, keep it in the mutex
117
+ @mutex.lock
118
+ # there seems to be concurrency issues with metrics, keep it in the mutex
119
+ begin
126
120
  set_current_thread_inflight_batch(batch)
127
121
  start_clock
122
+ ensure
123
+ @mutex.unlock
128
124
  end
129
125
  end
130
126
 
@@ -133,10 +129,13 @@ module LogStash; module Util
133
129
  end
134
130
 
135
131
  def close_batch(batch)
136
- @mutex.synchronize do
132
+ @mutex.lock
133
+ begin
137
134
  # there seems to be concurrency issues with metrics, keep it in the mutex
138
135
  @inflight_batches.delete(Thread.current)
139
136
  stop_clock(batch)
137
+ ensure
138
+ @mutex.unlock
140
139
  end
141
140
  end
142
141
 
@@ -11,4 +11,4 @@
11
11
  # eventually this file should be in the root logstash lib fir and dependencies in logstash-core should be
12
12
  # fixed.
13
13
 
14
- LOGSTASH_VERSION = "6.0.0-alpha2"
14
+ LOGSTASH_VERSION = "6.0.0-beta1"
data/locales/en.yml CHANGED
@@ -81,14 +81,37 @@ en:
81
81
  ::: {%{hostname}}
82
82
  Hot threads at %{time}, busiestThreads=%{top_count}:
83
83
  thread_title: |-
84
- %{percent_of_cpu_time} % of cpu usage, state: %{thread_state}, thread name: '%{thread_name}'
84
+ %{percent_of_cpu_time} % of cpu usage, state: %{thread_state}, thread name: '%{thread_name}', thread id: %{thread_id}
85
85
  logging:
86
86
  unrecognized_option: |-
87
87
  unrecognized option [%{option}]
88
+ modules:
89
+ configuration:
90
+ parse-failed: |-
91
+ Failed to parse the module configuration: [%{error}]
92
+ modules-must-be-unique: >-
93
+ Only a single instance of any module can be run at a time. Duplicate
94
+ modules: %{duplicate_modules}
95
+ modules-invalid-name: >-
96
+ Invalid module name: %{module_name}
97
+ modules-variables-malformed: >-
98
+ Failed to parse module variable %{rawvar}. Must be in -M
99
+ "MODULE_NAME.KEY.SUBKEY=VALUE" format
100
+ modules-unavailable: >-
101
+ The modules specified are not available yet.
102
+ Specified modules: %{specified_modules}
103
+ Available modules: %{available_modules}
104
+ elasticsearch_connection_failed: >-
105
+ Failed to import module configurations to Elasticsearch and/or Kibana.
106
+ Module: %{module_name} has Elasticsearch hosts: %{elasticsearch_hosts} and Kibana hosts: %{kibana_hosts}
107
+ modules-too-many-specified: >-
108
+ Too many modules specified. Maximum allowed: %{max}, specified: %{specified_modules}
109
+
88
110
  runner:
89
111
  short-help: |-
90
112
  usage:
91
113
  bin/logstash -f CONFIG_PATH [-t] [-r] [] [-w COUNT] [-l LOG]
114
+ bin/logstash --modules MODULE_NAME [-M "MODULE_NAME.var.PLUGIN_TYPE.PLUGIN_NAME.VARIABLE_NAME=VALUE"] [-t] [-w COUNT] [-l LOG]
92
115
  bin/logstash -e CONFIG_STR [-t] [--log.level fatal|error|warn|info|debug|trace] [-w COUNT] [-l LOG]
93
116
  bin/logstash -i SHELL [--log.level fatal|error|warn|info|debug|trace]
94
117
  bin/logstash -V [--log.level fatal|error|warn|info|debug|trace]
@@ -100,6 +123,20 @@ en:
100
123
  the '-f yourlogstash.conf' flag?
101
124
  config-string-path-exclusive:
102
125
  Settings 'path.config' (-f) and 'config.string' (-e) can't be used simultaneously.
126
+ config-module-exclusive: >-
127
+ Settings 'path.config' (-f) or 'config.string' (-e) can't be used in conjunction with
128
+ (--modules) or the "modules:" block in the logstash.yml file.
129
+ reload-with-modules: >-
130
+ Configuration reloading can't be used with command-line or logstash.yml specified modules.
131
+ cli-module-override: >-
132
+ Both command-line and logstash.yml modules configurations detected.
133
+ Using command-line module configuration to override logstash.yml module configuration.
134
+ config-pipelines-failed-read: >-
135
+ Failed to read pipelines yaml file. Location: %{path}
136
+ config-pipelines-empty: >-
137
+ Pipelines YAML file is empty. Location: %{path}
138
+ config-pipelines-invalid: >-
139
+ Pipelines YAML file must contain an array of pipeline configs. Found "%{invalid_class}" in %{path}
103
140
  reload-without-config-path: >-
104
141
  Configuration reloading also requires passing a configuration path with '-f yourlogstash.conf'
105
142
  reload-with-config-string: >-
@@ -187,6 +224,24 @@ en:
187
224
  "%{default_output}"
188
225
  If you wish to use both defaults, please use
189
226
  the empty string for the '-e' flag.
227
+ modules: |+
228
+ Load Logstash modules.
229
+ Modules can be defined using multiple instances
230
+ '--modules module1 --modules module2',
231
+ or comma-separated syntax
232
+ '--modules=module1,module2'
233
+ Cannot be used in conjunction with '-e' or '-f'
234
+ Use of '--modules' will override modules declared
235
+ in the 'logstash.yml' file.
236
+ modules_variable: |+
237
+ Load variables for module template.
238
+ Multiple instances of '-M' or
239
+ '--modules.variable' are supported.
240
+ Ignored if '--modules' flag is not used.
241
+ Should be in the format of
242
+ '-M "MODULE_NAME.var.PLUGIN_TYPE.PLUGIN_NAME.VARIABLE_NAME=VALUE"'
243
+ as in
244
+ '-M "example.var.filter.mutate.fieldname=fieldvalue"'
190
245
  configtest: |+
191
246
  Check configuration for valid syntax and then exit.
192
247
  http_host: Web API binding host