logstash-input-kafka 6.0.1 → 6.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/lib/logstash/inputs/kafka.rb +67 -8
- data/logstash-input-kafka.gemspec +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ca18508e563e481b0e21452577fd2ab764126df5
|
4
|
+
data.tar.gz: f5d951ba0229244db1a08eae618c99caea32b9e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 92df3686bcac5a2056acaf6ae59fe6ee185174568250d298e1158678708ff9da47700b85600b301f31435c550411c6495d838499009fbc088da826aa62ff33ea
|
7
|
+
data.tar.gz: 5675c2530563e407aec9bd3a15554b9644d4d9f393b6c5d9ac8e1b49985c27439415a4468704ff204890bef124fb92d88b09553a6e87ea569f0ef9cc5a47b64f
|
data/CHANGELOG.md
CHANGED
@@ -146,15 +146,49 @@ class LogStash::Inputs::Kafka < LogStash::Inputs::Base
|
|
146
146
|
# Time kafka consumer will wait to receive new messages from topics
|
147
147
|
config :poll_timeout_ms, :validate => :number, :default => 100
|
148
148
|
# Enable SSL/TLS secured communication to Kafka broker.
|
149
|
-
config :ssl, :validate => :boolean, :default => false
|
149
|
+
config :ssl, :validate => :boolean, :default => false, :deprecated => "Use security_protocol => 'ssl'"
|
150
|
+
# The truststore type.
|
151
|
+
config :ssl_truststore_type, :validate => :string
|
150
152
|
# The JKS truststore path to validate the Kafka broker's certificate.
|
151
153
|
config :ssl_truststore_location, :validate => :path
|
152
154
|
# The truststore password
|
153
155
|
config :ssl_truststore_password, :validate => :password
|
156
|
+
# The keystore type.
|
157
|
+
config :ssl_keystore_type, :validate => :string
|
154
158
|
# If client authentication is required, this setting stores the keystore path.
|
155
159
|
config :ssl_keystore_location, :validate => :path
|
156
160
|
# If client authentication is required, this setting stores the keystore password
|
157
161
|
config :ssl_keystore_password, :validate => :password
|
162
|
+
# The password of the private key in the key store file.
|
163
|
+
config :ssl_key_password, :validate => :password
|
164
|
+
# Security protocol to use, which can be either of PLAINTEXT,SSL,SASL_PLAINTEXT,SASL_SSL
|
165
|
+
config :security_protocol, :validate => ["PLAINTEXT", "SSL", "SASL_PLAINTEXT", "SASL_SSL"], :default => "PLAINTEXT"
|
166
|
+
# http://kafka.apache.org/documentation.html#security_sasl[SASL mechanism] used for client connections.
|
167
|
+
# This may be any mechanism for which a security provider is available.
|
168
|
+
# GSSAPI is the default mechanism.
|
169
|
+
config :sasl_mechanism, :validate => :string, :default => "GSSAPI"
|
170
|
+
# The Kerberos principal name that Kafka broker runs as.
|
171
|
+
# This can be defined either in Kafka's JAAS config or in Kafka's config.
|
172
|
+
config :sasl_kerberos_service_name, :validate => :string
|
173
|
+
# The Java Authentication and Authorization Service (JAAS) API supplies user authentication and authorization
|
174
|
+
# services for Kafka. This setting provides the path to the JAAS file. Sample JAAS file for Kafka client:
|
175
|
+
# [source,java]
|
176
|
+
# ----------------------------------
|
177
|
+
# KafkaClient {
|
178
|
+
# com.sun.security.auth.module.Krb5LoginModule required
|
179
|
+
# useTicketCache=true
|
180
|
+
# renewTicket=true
|
181
|
+
# serviceName="kafka";
|
182
|
+
# };
|
183
|
+
# ----------------------------------
|
184
|
+
#
|
185
|
+
# Please note that specifying `jaas_path` and `kerberos_config` in the config file will add these
|
186
|
+
# to the global JVM system properties. This means if you have multiple Kafka inputs, all of them would be sharing the same
|
187
|
+
# `jaas_path` and `kerberos_config`. If this is not desirable, you would have to run separate instances of Logstash on
|
188
|
+
# different JVM instances.
|
189
|
+
config :jaas_path, :validate => :path
|
190
|
+
# Optional path to kerberos config file. This is krb5.conf style as detailed in https://web.mit.edu/kerberos/krb5-1.12/doc/admin/conf_files/krb5_conf.html
|
191
|
+
config :kerberos_config, :validate => :path
|
158
192
|
# Option to add Kafka metadata like topic, message size to the event.
|
159
193
|
# This will add a field named `kafka` to the logstash event containing the following attributes:
|
160
194
|
# `topic`: The topic this message is associated with
|
@@ -253,14 +287,15 @@ class LogStash::Inputs::Kafka < LogStash::Inputs::Base
|
|
253
287
|
props.put(kafka::SESSION_TIMEOUT_MS_CONFIG, session_timeout_ms) unless session_timeout_ms.nil?
|
254
288
|
props.put(kafka::VALUE_DESERIALIZER_CLASS_CONFIG, value_deserializer_class)
|
255
289
|
|
256
|
-
|
257
|
-
props.put("security.protocol", "SSL")
|
258
|
-
props.put("ssl.truststore.location", ssl_truststore_location)
|
259
|
-
props.put("ssl.truststore.password", ssl_truststore_password.value) unless ssl_truststore_password.nil?
|
290
|
+
props.put("security.protocol", security_protocol) unless security_protocol.nil?
|
260
291
|
|
261
|
-
|
262
|
-
props
|
263
|
-
|
292
|
+
if security_protocol == "SSL"
|
293
|
+
set_trustore_keystore_config(props)
|
294
|
+
elsif security_protocol == "SASL_PLAINTEXT"
|
295
|
+
set_sasl_config(props)
|
296
|
+
elsif security_protocol == "SASL_SSL"
|
297
|
+
set_trustore_keystore_config
|
298
|
+
set_sasl_config
|
264
299
|
end
|
265
300
|
|
266
301
|
org.apache.kafka.clients.consumer.KafkaConsumer.new(props)
|
@@ -269,4 +304,28 @@ class LogStash::Inputs::Kafka < LogStash::Inputs::Base
|
|
269
304
|
throw e
|
270
305
|
end
|
271
306
|
end
|
307
|
+
|
308
|
+
def set_trustore_keystore_config(props)
|
309
|
+
props.put("ssl.truststore.type", ssl_truststore_type) unless ssl_truststore_type.nil?
|
310
|
+
props.put("ssl.truststore.location", ssl_truststore_location)
|
311
|
+
props.put("ssl.truststore.password", ssl_truststore_password.value) unless ssl_truststore_password.nil?
|
312
|
+
|
313
|
+
# Client auth stuff
|
314
|
+
props.put("ssl.keystore.type", ssl_keystore_type) unless ssl_keystore_type.nil?
|
315
|
+
props.put("ssl.key.password", ssl_key_password.value) unless ssl_key_password.nil?
|
316
|
+
props.put("ssl.keystore.location", ssl_keystore_location) unless ssl_keystore_location.nil?
|
317
|
+
props.put("ssl.keystore.password", ssl_keystore_password.value) unless ssl_keystore_password.nil?
|
318
|
+
end
|
319
|
+
|
320
|
+
def set_sasl_config(props)
|
321
|
+
java.lang.System.setProperty("java.security.auth.login.config",jaas_path) unless jaas_path.nil?
|
322
|
+
java.lang.System.setProperty("java.security.krb5.conf",kerberos_config) unless kerberos_config.nil?
|
323
|
+
|
324
|
+
props.put("sasl.mechanism",sasl_mechanism)
|
325
|
+
if sasl_mechanism == "GSSAPI" && sasl_kerberos_service_name.nil?
|
326
|
+
raise LogStash::ConfigurationError, "sasl_kerberos_service_name must be specified when SASL mechanism is GSSAPI"
|
327
|
+
end
|
328
|
+
|
329
|
+
props.put("sasl.kerberos.service.name",sasl_kerberos_service_name)
|
330
|
+
end
|
272
331
|
end #class LogStash::Inputs::Kafka
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'logstash-input-kafka'
|
3
|
-
s.version = '6.0
|
3
|
+
s.version = '6.1.0'
|
4
4
|
s.licenses = ['Apache License (2.0)']
|
5
5
|
s.summary = 'This input will read events from a Kafka topic. It uses the high level consumer API provided by Kafka to read messages from the broker'
|
6
6
|
s.description = "This gem is a Logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gemname. This gem is not a stand-alone program"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-input-kafka
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.0
|
4
|
+
version: 6.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elasticsearch
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-11-
|
11
|
+
date: 2016-11-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|