fluent-plugin-elasticsearch 2.11.11 → 2.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/History.md +3 -0
- data/README.md +36 -3
- data/fluent-plugin-elasticsearch.gemspec +1 -1
- data/lib/fluent/plugin/elasticsearch_index_template.rb +12 -10
- data/lib/fluent/plugin/out_elasticsearch.rb +8 -1
- data/test/plugin/test_out_elasticsearch.rb +75 -6
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: daf714ffb7c731c2d2792efd8930165c2ca8baa3c387eae815f41d2ccfd89ead
|
4
|
+
data.tar.gz: df13ef1152b10bb2d63e7a870ab9afcbed6f040e6aee2a671f376690d0e616bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b33818935a059b0e150bb5dcc0cbc1179a3b7179d4fd0b29c964d8238efcbaa68cc59b3232f3f326ba855914b2d54d1fd9bdf0eb107a75108a1c38dae8c305e0
|
7
|
+
data.tar.gz: 4d8d1cd2a3700e657c763caf5544344e6bfad1c185879539f48b52a65b84e5ba4dbc8bd524a1934e7d29348a20d7763a4c156519f71bb49c296b3192b2185069
|
data/History.md
CHANGED
data/README.md
CHANGED
@@ -37,6 +37,9 @@ Current maintainers: @cosmo0920
|
|
37
37
|
+ [template_file](#template_file)
|
38
38
|
+ [template_overwrite](#template_overwrite)
|
39
39
|
+ [customize_template](#customize_template)
|
40
|
+
+ [rollover_index](#rollover_index)
|
41
|
+
+ [deflector_alias](#deflector_alias)
|
42
|
+
+ [application_name](#application_name)
|
40
43
|
+ [index_prefix](#index_prefix)
|
41
44
|
+ [templates](#templates)
|
42
45
|
+ [max_retry_putting_template](#max_retry_putting_template)
|
@@ -338,22 +341,52 @@ If `template_file` and `template_name` are set, then this parameter will be igno
|
|
338
341
|
|
339
342
|
### customize_template
|
340
343
|
|
341
|
-
Specify the string and its value to be replaced in form of hash. Can contain multiple
|
344
|
+
Specify the string and its value to be replaced in form of hash. Can contain multiple key value pair that would be replaced in the specified template_file.
|
345
|
+
This setting only creates template and to add rollover index please check the [rollover_index](#rollover_index) configuration.
|
342
346
|
|
343
347
|
```
|
344
348
|
customize_template {"string_1": "subs_value_1", "string_2": "subs_value_2"}
|
345
349
|
```
|
346
350
|
|
347
|
-
If
|
351
|
+
If [template_file](#template_file) and [template_name](#template_name) are set, then this parameter will be in effect otherwise ignored.
|
352
|
+
|
353
|
+
### rollover_index
|
354
|
+
|
355
|
+
Specify this as true when an index with rollover capability needs to be created. It creates an index with the format <logstash-default-{now/d}-000001> where logstash denotes the index_prefix and default denotes the application_name which can be set.
|
356
|
+
'deflector_alias' is a required field for rollover_index set to true.
|
357
|
+
'index_prefix' and 'application_name' are optional and defaults to logstash and default respectively.
|
358
|
+
```
|
359
|
+
rollover_index true # defaults to false
|
360
|
+
```
|
361
|
+
|
362
|
+
If [customize_template](#customize_template) is set, then this parameter will be in effect otherwise ignored.
|
363
|
+
|
364
|
+
### deflector_alias
|
365
|
+
|
366
|
+
Specify the deflector alias which would be assigned to the rollover index created. This is useful in case of using the Elasticsearch rollover API
|
367
|
+
```
|
368
|
+
deflector_alias test-current
|
369
|
+
```
|
370
|
+
|
371
|
+
If [rollover_index](#rollover_index) is set, then this parameter will be in effect otherwise ignored.
|
348
372
|
|
349
373
|
### index_prefix
|
350
374
|
|
375
|
+
Specify the index prefix for the rollover index to be created.
|
351
376
|
```
|
352
377
|
index_prefix mylogs # defaults to "logstash"
|
353
378
|
```
|
354
379
|
|
355
|
-
If
|
380
|
+
If [rollover_index](#rollover_index) is set, then this parameter will be in effect otherwise ignored.
|
381
|
+
|
382
|
+
### application_name
|
383
|
+
|
384
|
+
Specify the application name for the rollover index to be created.
|
385
|
+
```
|
386
|
+
application_name default # defaults to "default"
|
387
|
+
```
|
356
388
|
|
389
|
+
If [rollover_index](#rollover_index) is set, then this parameter will be in effect otherwise ignored.
|
357
390
|
|
358
391
|
### template_overwrite
|
359
392
|
|
@@ -3,7 +3,7 @@ $:.push File.expand_path('../lib', __FILE__)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = 'fluent-plugin-elasticsearch'
|
6
|
-
s.version = '2.
|
6
|
+
s.version = '2.12.0'
|
7
7
|
s.authors = ['diogo', 'pitr']
|
8
8
|
s.email = ['pitr.vern@gmail.com', 'me@diogoterror.com']
|
9
9
|
s.description = %q{Elasticsearch output plugin for Fluent event collector}
|
@@ -68,9 +68,8 @@ module Fluent::ElasticsearchIndexTemplate
|
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
71
|
-
def template_custom_install(
|
72
|
-
template_custom_name=
|
73
|
-
alias_name=name.downcase+'-current'
|
71
|
+
def template_custom_install(template_name, template_file, overwrite, customize_template, index_prefix, rollover_index, deflector_alias_name, app_name)
|
72
|
+
template_custom_name=template_name.downcase
|
74
73
|
if overwrite
|
75
74
|
template_put(template_custom_name, get_custom_template(template_file, customize_template))
|
76
75
|
log.info("Template '#{template_custom_name}' overwritten with #{template_file}.")
|
@@ -82,14 +81,17 @@ module Fluent::ElasticsearchIndexTemplate
|
|
82
81
|
else
|
83
82
|
log.info("Template configured and already installed.")
|
84
83
|
end
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
84
|
+
if rollover_index
|
85
|
+
if !client.indices.exists_alias(:name => deflector_alias_name)
|
86
|
+
index_name_temp='<'+index_prefix.downcase+'-'+app_name.downcase+'-{now/d}-000001>'
|
87
|
+
indexcreation(index_name_temp)
|
88
|
+
client.indices.put_alias(:index => index_name_temp, :name => deflector_alias_name)
|
89
|
+
log.info("The alias '#{deflector_alias_name}' is created for the index '#{index_name_temp}'")
|
90
|
+
else
|
91
|
+
log.info("The alias '#{deflector_alias_name}' is already present")
|
92
|
+
end
|
91
93
|
else
|
92
|
-
log.info("
|
94
|
+
log.info("No index and alias creation action performed because rollover_index is set to '#{rollover_index}'")
|
93
95
|
end
|
94
96
|
end
|
95
97
|
|
@@ -99,7 +99,10 @@ EOC
|
|
99
99
|
config_param :template_file, :string, :default => nil
|
100
100
|
config_param :template_overwrite, :bool, :default => false
|
101
101
|
config_param :customize_template, :hash, :default => nil
|
102
|
+
config_param :rollover_index, :string, :default => false
|
103
|
+
config_param :deflector_alias, :string, :default => nil
|
102
104
|
config_param :index_prefix, :string, :default => "logstash"
|
105
|
+
config_param :application_name, :string, :default => "default"
|
103
106
|
config_param :templates, :hash, :default => nil
|
104
107
|
config_param :max_retry_putting_template, :integer, :default => 10
|
105
108
|
config_param :include_tag_key, :bool, :default => false
|
@@ -160,10 +163,14 @@ EOC
|
|
160
163
|
end
|
161
164
|
|
162
165
|
raise Fluent::ConfigError, "'max_retry_putting_template' must be positive number." if @max_retry_putting_template < 0
|
166
|
+
|
163
167
|
if @template_name && @template_file
|
164
168
|
retry_install(@max_retry_putting_template) do
|
165
169
|
if @customize_template
|
166
|
-
|
170
|
+
if @rollover_index
|
171
|
+
raise Fluent::ConfigError, "'deflector_alias' must be provided if 'rollover_index' is set true ." if not @deflector_alias
|
172
|
+
end
|
173
|
+
template_custom_install(@template_name, @template_file, @template_overwrite, @customize_template, @index_prefix, @rollover_index, @deflector_alias, @application_name)
|
167
174
|
else
|
168
175
|
template_install(@template_name, @template_file, @template_overwrite)
|
169
176
|
end
|
@@ -380,10 +380,44 @@ class ElasticsearchOutput < Test::Unit::TestCase
|
|
380
380
|
path /es/
|
381
381
|
user john
|
382
382
|
password doe
|
383
|
-
template_name
|
383
|
+
template_name myapp_alias_template
|
384
384
|
template_file #{template_file}
|
385
385
|
customize_template {"--appid--": "myapp-logs","--index_prefix--":"mylogs"}
|
386
|
+
}
|
387
|
+
|
388
|
+
# connection start
|
389
|
+
stub_request(:head, "https://john:doe@logs.google.com:777/es//").
|
390
|
+
to_return(:status => 200, :body => "", :headers => {})
|
391
|
+
# check if template exists
|
392
|
+
stub_request(:get, "https://john:doe@logs.google.com:777/es//_template/myapp_alias_template").
|
393
|
+
to_return(:status => 404, :body => "", :headers => {})
|
394
|
+
# creation
|
395
|
+
stub_request(:put, "https://john:doe@logs.google.com:777/es//_template/myapp_alias_template").
|
396
|
+
to_return(:status => 200, :body => "", :headers => {})
|
397
|
+
|
398
|
+
driver(config)
|
399
|
+
|
400
|
+
assert_requested(:put, "https://john:doe@logs.google.com:777/es//_template/myapp_alias_template", times: 1)
|
401
|
+
end
|
402
|
+
|
403
|
+
def test_custom_template_with_rollover_index_create
|
404
|
+
cwd = File.dirname(__FILE__)
|
405
|
+
template_file = File.join(cwd, 'test_alias_template.json')
|
406
|
+
|
407
|
+
config = %{
|
408
|
+
host logs.google.com
|
409
|
+
port 777
|
410
|
+
scheme https
|
411
|
+
path /es/
|
412
|
+
user john
|
413
|
+
password doe
|
414
|
+
template_name myapp_alias_template
|
415
|
+
template_file #{template_file}
|
416
|
+
customize_template {"--appid--": "myapp-logs","--index_prefix--":"mylogs"}
|
417
|
+
rollover_index true
|
418
|
+
deflector_alias myapp_deflector
|
386
419
|
index_prefix mylogs
|
420
|
+
application_name myapp
|
387
421
|
}
|
388
422
|
|
389
423
|
# connection start
|
@@ -399,10 +433,10 @@ class ElasticsearchOutput < Test::Unit::TestCase
|
|
399
433
|
stub_request(:put, "https://john:doe@logs.google.com:777/es//%3Cmylogs-myapp-%7Bnow%2Fd%7D-000001%3E").
|
400
434
|
to_return(:status => 200, :body => "", :headers => {})
|
401
435
|
# check if alias exists
|
402
|
-
stub_request(:head, "https://john:doe@logs.google.com:777/es//_alias/
|
436
|
+
stub_request(:head, "https://john:doe@logs.google.com:777/es//_alias/myapp_deflector").
|
403
437
|
to_return(:status => 404, :body => "", :headers => {})
|
404
438
|
# put the alias for the index
|
405
|
-
stub_request(:put, "https://john:doe@logs.google.com:777/es//%3Cmylogs-myapp-%7Bnow%2Fd%7D-000001%3E/_alias/
|
439
|
+
stub_request(:put, "https://john:doe@logs.google.com:777/es//%3Cmylogs-myapp-%7Bnow%2Fd%7D-000001%3E/_alias/myapp_deflector").
|
406
440
|
to_return(:status => 200, :body => "", :headers => {})
|
407
441
|
|
408
442
|
driver(config)
|
@@ -410,6 +444,7 @@ class ElasticsearchOutput < Test::Unit::TestCase
|
|
410
444
|
assert_requested(:put, "https://john:doe@logs.google.com:777/es//_template/myapp_alias_template", times: 1)
|
411
445
|
end
|
412
446
|
|
447
|
+
|
413
448
|
def test_template_overwrite
|
414
449
|
cwd = File.dirname(__FILE__)
|
415
450
|
template_file = File.join(cwd, 'test_template.json')
|
@@ -452,11 +487,45 @@ class ElasticsearchOutput < Test::Unit::TestCase
|
|
452
487
|
path /es/
|
453
488
|
user john
|
454
489
|
password doe
|
455
|
-
template_name
|
490
|
+
template_name myapp_alias_template
|
491
|
+
template_file #{template_file}
|
492
|
+
template_overwrite true
|
493
|
+
customize_template {"--appid--": "myapp-logs","--index_prefix--":"mylogs"}
|
494
|
+
}
|
495
|
+
|
496
|
+
# connection start
|
497
|
+
stub_request(:head, "https://john:doe@logs.google.com:777/es//").
|
498
|
+
to_return(:status => 200, :body => "", :headers => {})
|
499
|
+
# check if template exists
|
500
|
+
stub_request(:get, "https://john:doe@logs.google.com:777/es//_template/myapp_alias_template").
|
501
|
+
to_return(:status => 200, :body => "", :headers => {})
|
502
|
+
# creation
|
503
|
+
stub_request(:put, "https://john:doe@logs.google.com:777/es//_template/myapp_alias_template").
|
504
|
+
to_return(:status => 200, :body => "", :headers => {})
|
505
|
+
|
506
|
+
driver(config)
|
507
|
+
|
508
|
+
assert_requested(:put, "https://john:doe@logs.google.com:777/es//_template/myapp_alias_template", times: 1)
|
509
|
+
end
|
510
|
+
|
511
|
+
def test_custom_template_with_rollover_index_overwrite
|
512
|
+
cwd = File.dirname(__FILE__)
|
513
|
+
template_file = File.join(cwd, 'test_template.json')
|
514
|
+
|
515
|
+
config = %{
|
516
|
+
host logs.google.com
|
517
|
+
port 777
|
518
|
+
scheme https
|
519
|
+
path /es/
|
520
|
+
user john
|
521
|
+
password doe
|
522
|
+
template_name myapp_alias_template
|
456
523
|
template_file #{template_file}
|
457
524
|
template_overwrite true
|
458
525
|
customize_template {"--appid--": "myapp-logs","--index_prefix--":"mylogs"}
|
526
|
+
deflector_alias myapp_deflector
|
459
527
|
index_prefix mylogs
|
528
|
+
application_name myapp
|
460
529
|
}
|
461
530
|
|
462
531
|
# connection start
|
@@ -472,10 +541,10 @@ class ElasticsearchOutput < Test::Unit::TestCase
|
|
472
541
|
stub_request(:put, "https://john:doe@logs.google.com:777/es//%3Cmylogs-myapp-%7Bnow%2Fd%7D-000001%3E").
|
473
542
|
to_return(:status => 200, :body => "", :headers => {})
|
474
543
|
# check if alias exists
|
475
|
-
stub_request(:head, "https://john:doe@logs.google.com:777/es//_alias/
|
544
|
+
stub_request(:head, "https://john:doe@logs.google.com:777/es//_alias/myapp_deflector").
|
476
545
|
to_return(:status => 404, :body => "", :headers => {})
|
477
546
|
# put the alias for the index
|
478
|
-
stub_request(:put, "https://john:doe@logs.google.com:777/es//%3Cmylogs-myapp-%7Bnow%2Fd%7D-000001%3E/_alias/
|
547
|
+
stub_request(:put, "https://john:doe@logs.google.com:777/es//%3Cmylogs-myapp-%7Bnow%2Fd%7D-000001%3E/_alias/myapp_deflector").
|
479
548
|
to_return(:status => 200, :body => "", :headers => {})
|
480
549
|
|
481
550
|
driver(config)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-elasticsearch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- diogo
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-10-
|
12
|
+
date: 2018-10-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fluentd
|