logstash-output-elasticsearch 0.2.7-java → 0.2.8-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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/README.md +1 -1
- data/lib/logstash/outputs/elasticsearch.rb +54 -17
- data/logstash-output-elasticsearch.gemspec +1 -1
- data/spec/outputs/elasticsearch_spec.rb +28 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d77d5d461770a2ff1f5305fc51bfd2d26ee30765
|
4
|
+
data.tar.gz: 5f7fc066a058c2858684080f7ff428019e44541d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb51c75b6dabfe4dd33f96322ebe920cb64bfb580aaed2215ecc8bb36ae0fb3f58533ef501dbe93b9c56450b7a54333c56ffd72f31b8206574656b5cc5654b6a
|
7
|
+
data.tar.gz: aaf694ad4c3113b7d25a2320d05c66bf4906e5714901f6ba4f6cb2343f302561375128a0002d5eda6c31bceb0b5ea0d984cc1a0c6bd46c43fd623d38e57e4ff1
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
## 0.2.8 (June 12, 2015)
|
2
|
+
- Add option to enable and disable SSL certificate verification during handshake (#160)
|
3
|
+
- Doc improvements for clarifying round robin behavior using hosts config
|
4
|
+
|
5
|
+
## 0.2.7 (May 28, 2015)
|
6
|
+
- Bump es-ruby version to 1.0.10
|
7
|
+
|
8
|
+
## 0.2.6 (May 28, 2015)
|
9
|
+
- Disable timeouts when using http protocol which would cause bulk requests to fail (#103)
|
data/README.md
CHANGED
@@ -13,7 +13,7 @@ Logstash provides infrastructure to automatically generate documentation for thi
|
|
13
13
|
|
14
14
|
## Need Help?
|
15
15
|
|
16
|
-
Need help? Try #logstash on freenode IRC or the logstash
|
16
|
+
Need help? Try #logstash on freenode IRC or the https://discuss.elastic.co/c/logstash discussion forum.
|
17
17
|
|
18
18
|
## Developing
|
19
19
|
|
@@ -94,23 +94,43 @@ class LogStash::Outputs::ElasticSearch < LogStash::Outputs::Base
|
|
94
94
|
config :routing, :validate => :string
|
95
95
|
|
96
96
|
# The name of your cluster if you set it on the Elasticsearch side. Useful
|
97
|
-
# for discovery.
|
97
|
+
# for discovery when using `node` or `transport` protocols.
|
98
|
+
# By default, it looks for a cluster named 'elasticsearch'.
|
98
99
|
config :cluster, :validate => :string
|
99
100
|
|
100
|
-
#
|
101
|
-
#
|
102
|
-
#
|
103
|
-
#
|
104
|
-
#
|
105
|
-
#
|
106
|
-
# hosts for `node` protocol, it is important to confirm that at least one non-client
|
107
|
-
# node is listed in the
|
108
|
-
#
|
109
|
-
#
|
110
|
-
#
|
111
|
-
#
|
101
|
+
# For the `node` protocol, if you do not specify `host`, it will attempt to use
|
102
|
+
# multicast discovery to connect to Elasticsearch. If http://www.elastic.co/guide/en/elasticsearch/guide/current/_important_configuration_changes.html#_prefer_unicast_over_multicast[multicast is disabled] in Elasticsearch,
|
103
|
+
# you must include the hostname or IP address of the host(s) to use for Elasticsearch unicast discovery.
|
104
|
+
# Remember the `node` protocol uses the http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-transport.html#modules-transport[transport] address (eg. 9300, not 9200).
|
105
|
+
# `"127.0.0.1"`
|
106
|
+
# `["127.0.0.1:9300","127.0.0.2:9300"]`
|
107
|
+
# When setting hosts for `node` protocol, it is important to confirm that at least one non-client
|
108
|
+
# node is listed in the `host` list. Also keep in mind that the `host` parameter when used with
|
109
|
+
# the `node` protocol is for *discovery purposes only* (not for load balancing). When multiple hosts
|
110
|
+
# are specified, it will contact the first host to see if it can use it to discover the cluster. If not,
|
111
|
+
# then it will contact the second host in the list and so forth. With the `node` protocol,
|
112
|
+
# Logstash will join the Elasticsearch cluster as a node client (which has a copy of the cluster
|
113
|
+
# state) and this node client is the one that will automatically handle the load balancing of requests
|
114
|
+
# across data nodes in the cluster.
|
115
|
+
# If you are looking for a high availability setup, our recommendation is to use the `transport` protocol (below),
|
116
|
+
# set up multiple http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html[client nodes] and list the client nodes in the `host` parameter.
|
117
|
+
#
|
118
|
+
# For the `transport` protocol, it will load balance requests across the hosts specified in the `host` parameter.
|
119
|
+
# Remember the `transport` protocol uses the http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-transport.html#modules-transport[transport] address (eg. 9300, not 9200).
|
112
120
|
# `"127.0.0.1"`
|
113
121
|
# `["127.0.0.1:9300","127.0.0.2:9300"]`
|
122
|
+
# There is also a `sniffing` option (see below) that can be used with the transport protocol to instruct it to use the host to sniff for
|
123
|
+
# "alive" nodes in the cluster and automatically use it as the hosts list (but will skip the dedicated master nodes).
|
124
|
+
# If you do not use the sniffing option, it is important to exclude http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html[dedicated master nodes] from the `host` list
|
125
|
+
# to prevent Logstash from sending bulk requests to the master nodes. So this parameter should only reference either data or client nodes.
|
126
|
+
#
|
127
|
+
# For the `http` protocol, it will load balance requests across the hosts specified in the `host` parameter.
|
128
|
+
# Remember the `http` protocol uses the http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-http.html#modules-http[http] address (eg. 9200, not 9300).
|
129
|
+
# `"127.0.0.1"`
|
130
|
+
# `["127.0.0.1:9200","127.0.0.2:9200"]`
|
131
|
+
# It is important to exclude http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html[dedicated master nodes] from the `host` list
|
132
|
+
# to prevent LS from sending bulk requests to the master nodes. So this parameter should only reference either data or client nodes.
|
133
|
+
|
114
134
|
config :host, :validate => :array
|
115
135
|
|
116
136
|
# The port for Elasticsearch transport to use.
|
@@ -171,12 +191,16 @@ class LogStash::Outputs::ElasticSearch < LogStash::Outputs::Base
|
|
171
191
|
|
172
192
|
# Choose the protocol used to talk to Elasticsearch.
|
173
193
|
#
|
174
|
-
# The 'node' protocol will connect to the cluster as a normal Elasticsearch
|
175
|
-
# node (but will not store data).
|
176
|
-
# multicast discovery. If you use the `node` protocol, you must permit
|
194
|
+
# The 'node' protocol (default) will connect to the cluster as a normal Elasticsearch
|
195
|
+
# node (but will not store data). If you use the `node` protocol, you must permit
|
177
196
|
# bidirectional communication on the port 9300 (or whichever port you have
|
178
197
|
# configured).
|
179
198
|
#
|
199
|
+
# If you do not specify the `host` parameter, it will use multicast for http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-discovery-zen.html[Elasticsearch discovery]. While this may work in a test/dev environment where multicast is enabled in
|
200
|
+
# Elasticsearch, we strongly recommend http://www.elastic.co/guide/en/elasticsearch/guide/current/_important_configuration_changes.html#_prefer_unicast_over_multicast[disabling multicast]
|
201
|
+
# in Elasticsearch. To connect to an Elasticsearch cluster with multicast disabled,
|
202
|
+
# you must include the `host` parameter (see relevant section above).
|
203
|
+
#
|
180
204
|
# The 'transport' protocol will connect to the host you specify and will
|
181
205
|
# not show up as a 'node' in the Elasticsearch cluster. This is useful
|
182
206
|
# in situations where you cannot permit connections outbound from the
|
@@ -216,6 +240,11 @@ class LogStash::Outputs::ElasticSearch < LogStash::Outputs::Base
|
|
216
240
|
# Enable SSL
|
217
241
|
config :ssl, :validate => :boolean, :default => false
|
218
242
|
|
243
|
+
# Validate the server's certificate
|
244
|
+
# Disabling this severely compromises security
|
245
|
+
# For more information read https://www.cs.utexas.edu/~shmat/shmat_ccs12.pdf
|
246
|
+
config :ssl_certificate_verification, :validate => :boolean, :default => true
|
247
|
+
|
219
248
|
# The .cer or .pem file to validate the server's certificate
|
220
249
|
config :cacert, :validate => :path
|
221
250
|
|
@@ -533,7 +562,15 @@ class LogStash::Outputs::ElasticSearch < LogStash::Outputs::Base
|
|
533
562
|
elsif @truststore
|
534
563
|
ssl_options[:truststore_password] = @truststore_password.value if @truststore_password
|
535
564
|
end
|
536
|
-
ssl_options[:truststore] = @truststore
|
565
|
+
ssl_options[:truststore] = @truststore if @truststore
|
566
|
+
if @ssl_certificate_verification == false
|
567
|
+
@logger.warn [
|
568
|
+
"** WARNING ** Detected UNSAFE options in elasticsearch output configuration!",
|
569
|
+
"** WARNING ** You have enabled encryption but DISABLED certificate verification.",
|
570
|
+
"** WARNING ** To make sure your data is secure change :ssl_certificate_verification to true"
|
571
|
+
].join("\n")
|
572
|
+
ssl_options[:verify] = false
|
573
|
+
end
|
537
574
|
{ ssl: ssl_options }
|
538
575
|
end
|
539
576
|
|
@@ -900,6 +900,34 @@ describe "ship lots of events w/ default index_type and dynamic routing key usin
|
|
900
900
|
end
|
901
901
|
end
|
902
902
|
end
|
903
|
+
|
904
|
+
context "when using http protocol" do
|
905
|
+
protocol = "http"
|
906
|
+
context "when using ssl without cert verification" do
|
907
|
+
subject do
|
908
|
+
require "logstash/outputs/elasticsearch"
|
909
|
+
settings = {
|
910
|
+
"protocol" => protocol,
|
911
|
+
"host" => "node01",
|
912
|
+
"ssl" => true,
|
913
|
+
"ssl_certificate_verification" => false
|
914
|
+
}
|
915
|
+
next LogStash::Outputs::ElasticSearch.new(settings)
|
916
|
+
end
|
917
|
+
|
918
|
+
it "should pass the flag to the ES client" do
|
919
|
+
expect(::Elasticsearch::Client).to receive(:new) do |args|
|
920
|
+
expect(args[:ssl]).to eq(:verify => false)
|
921
|
+
end
|
922
|
+
subject.register
|
923
|
+
end
|
924
|
+
|
925
|
+
it "print a warning" do
|
926
|
+
expect(subject.logger).to receive(:warn)
|
927
|
+
subject.register
|
928
|
+
end
|
929
|
+
end
|
930
|
+
end
|
903
931
|
end
|
904
932
|
|
905
933
|
describe "send messages to ElasticSearch using HTTPS", :elasticsearch_secure => true do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-output-elasticsearch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.8
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-06-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -161,6 +161,7 @@ extensions: []
|
|
161
161
|
extra_rdoc_files: []
|
162
162
|
files:
|
163
163
|
- .gitignore
|
164
|
+
- CHANGELOG.md
|
164
165
|
- CONTRIBUTORS
|
165
166
|
- Gemfile
|
166
167
|
- LICENSE
|