fluent-plugin-elasticsearch 4.1.4 → 4.3.1
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/.github/ISSUE_TEMPLATE/bug_report.md +37 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +24 -0
- data/.github/workflows/issue-auto-closer.yml +1 -1
- data/.github/workflows/linux.yml +1 -1
- data/.github/workflows/macos.yml +1 -1
- data/.github/workflows/windows.yml +1 -1
- data/History.md +25 -0
- data/README.ElasticsearchGenID.md +2 -2
- data/README.md +101 -3
- data/fluent-plugin-elasticsearch.gemspec +1 -1
- data/lib/fluent/plugin/elasticsearch_index_template.rb +44 -16
- data/lib/fluent/plugin/out_elasticsearch.rb +58 -11
- data/test/plugin/test_elasticsearch_fallback_selector.rb +1 -0
- data/test/plugin/test_elasticsearch_index_lifecycle_management.rb +3 -0
- data/test/plugin/test_elasticsearch_tls.rb +8 -2
- data/test/plugin/test_index_alias_template.json +11 -0
- data/test/plugin/test_index_template.json +25 -0
- data/test/plugin/test_out_elasticsearch.rb +1030 -263
- data/test/plugin/test_out_elasticsearch_dynamic.rb +7 -2
- metadata +8 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1cd81dcd51b189a0197c440aee9211661cd277c668ecf84474540393d77e47f0
|
|
4
|
+
data.tar.gz: c8b22ada3eaa16f7423e04c804130f35a12c15de34565272a7048dda78fc0d83
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0564d3b40b180c425c68323dbaf7498e7483e4832a76262c8378ffdcb8bb4591e62b77a53a6a0c232ba418d397a2d74447d24b77441aca26a38aee02e0f389d2
|
|
7
|
+
data.tar.gz: f0274d59d1a6411ab320d93f3840325b1379f417f50c716ecba75ea0eda31392d75c1f41efcb958c825745ada6aaa3f6810da96aae4bfde7f11e6e03602242aa
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug Report
|
|
3
|
+
about: Create a report to help us improve. If you have questions about ES plugin on kubernetes, please direct these to https://discuss.kubernetes.io/ before sumbit kubernetes related issue.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
(check apply)
|
|
8
|
+
- [ ] read [the contribution guideline](https://github.com/uken/fluent-plugin-elasticsearch/blob/master/CONTRIBUTING.md)
|
|
9
|
+
- [ ] (optional) already reported 3rd party upstream repository or mailing list if you use k8s addon or helm charts.
|
|
10
|
+
|
|
11
|
+
#### Problem
|
|
12
|
+
|
|
13
|
+
...
|
|
14
|
+
|
|
15
|
+
#### Steps to replicate
|
|
16
|
+
|
|
17
|
+
Either clone and modify https://gist.github.com/pitr/9a518e840db58f435911
|
|
18
|
+
|
|
19
|
+
**OR**
|
|
20
|
+
|
|
21
|
+
Provide example config and message
|
|
22
|
+
|
|
23
|
+
#### Expected Behavior or What you need to ask
|
|
24
|
+
|
|
25
|
+
...
|
|
26
|
+
|
|
27
|
+
#### Using Fluentd and ES plugin versions
|
|
28
|
+
|
|
29
|
+
* OS version
|
|
30
|
+
* Bare Metal or within Docker or Kubernetes or others?
|
|
31
|
+
* Fluentd v0.12 or v0.14/v1.0
|
|
32
|
+
* paste result of ``fluentd --version`` or ``td-agent --version``
|
|
33
|
+
* ES plugin 3.x.y/2.x.y or 1.x.y
|
|
34
|
+
* paste boot log of fluentd or td-agent
|
|
35
|
+
* paste result of ``fluent-gem list``, ``td-agent-gem list`` or your Gemfile.lock
|
|
36
|
+
* ES version (optional)
|
|
37
|
+
* ES template(s) (optional)
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Feature request
|
|
3
|
+
about: Suggest an idea for this project
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
(check apply)
|
|
8
|
+
- [ ] read [the contribution guideline](https://github.com/uken/fluent-plugin-elasticsearch/blob/master/CONTRIBUTING.md)
|
|
9
|
+
|
|
10
|
+
**Is your feature request related to a problem? Please describe.**
|
|
11
|
+
|
|
12
|
+
<!-- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] -->
|
|
13
|
+
|
|
14
|
+
**Describe the solution you'd like**
|
|
15
|
+
|
|
16
|
+
<!-- A clear and concise description of what you want to happen. -->
|
|
17
|
+
|
|
18
|
+
**Describe alternatives you've considered**
|
|
19
|
+
|
|
20
|
+
<!-- A clear and concise description of any alternative solutions or features you've considered. -->
|
|
21
|
+
|
|
22
|
+
**Additional context**
|
|
23
|
+
|
|
24
|
+
<!-- Add any other context or screenshots about the feature request here. -->
|
|
@@ -9,4 +9,4 @@ jobs:
|
|
|
9
9
|
with:
|
|
10
10
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
11
11
|
issue-close-message: "@${issue.user.login} this issue was automatically closed because it did not follow the issue template."
|
|
12
|
-
issue-pattern: "(.*Problem.*)|(.*Expected Behavior or What you need to ask.*)|(.*Using Fluentd and ES plugin versions.*)"
|
|
12
|
+
issue-pattern: "(.*Problem.*)|(.*Expected Behavior or What you need to ask.*)|(.*Using Fluentd and ES plugin versions.*)|(.*Is your feature request related to a problem? Please describe.*)|(.*Describe the solution you'd like.*)|(.*Describe alternatives you've considered.*)"
|
data/.github/workflows/linux.yml
CHANGED
data/.github/workflows/macos.yml
CHANGED
data/History.md
CHANGED
|
@@ -2,6 +2,31 @@
|
|
|
2
2
|
|
|
3
3
|
### [Unreleased]
|
|
4
4
|
|
|
5
|
+
### 4.3.1
|
|
6
|
+
- Unsplit huge records by default (#851)
|
|
7
|
+
|
|
8
|
+
### 4.3.0
|
|
9
|
+
- Add cloud_id & cloud_auth settings (#850)
|
|
10
|
+
- Fix failing tests on es6 client (#848)
|
|
11
|
+
- feat: retry on transport errors (#846)
|
|
12
|
+
- fix typo (#838)
|
|
13
|
+
- Remove unnecessary nil check (#826)
|
|
14
|
+
|
|
15
|
+
### 4.2.2
|
|
16
|
+
- Remove unnecessary nil check (#826)
|
|
17
|
+
- Fix ILM rollover index template pattern to apply index_separator (#825)
|
|
18
|
+
- Fix ILM rollover alias creation when a placeholder is used in index_name (#823)
|
|
19
|
+
- Add a note about the pitfalls of per-date indexes used with ILM (#822)
|
|
20
|
+
|
|
21
|
+
### 4.2.1
|
|
22
|
+
- Update a broken link (#821)
|
|
23
|
+
- Include chunk_id in records (#820)
|
|
24
|
+
- Fix a failing testcase (#818)
|
|
25
|
+
|
|
26
|
+
### 4.2.0
|
|
27
|
+
- ci: Add Ruby 2.7 jobs (#812)
|
|
28
|
+
- Support Elasticsearch new style template (#810)
|
|
29
|
+
|
|
5
30
|
### 4.1.4
|
|
6
31
|
- ElasticsearchGenID update docs for hash_type (#809)
|
|
7
32
|
- Handle api key header (#808)
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
In your Fluentd configuration, use `@type elasticsearch_genid`. Additional configuration is optional, default values would look like this:
|
|
18
18
|
|
|
19
19
|
```
|
|
20
|
-
<
|
|
20
|
+
<filter>
|
|
21
21
|
@type elasticsearch_genid
|
|
22
22
|
hash_id_key _hash
|
|
23
23
|
include_tag_in_seed false
|
|
@@ -27,7 +27,7 @@ In your Fluentd configuration, use `@type elasticsearch_genid`. Additional confi
|
|
|
27
27
|
record_keys []
|
|
28
28
|
separator _
|
|
29
29
|
hash_type sha1
|
|
30
|
-
</
|
|
30
|
+
</filter>
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
## Configuration
|
data/README.md
CHANGED
|
@@ -19,6 +19,8 @@ Current maintainers: @cosmo0920
|
|
|
19
19
|
* [Configuration](#configuration)
|
|
20
20
|
+ [host](#host)
|
|
21
21
|
+ [port](#port)
|
|
22
|
+
+ [cloud_id](#cloud_id)
|
|
23
|
+
+ [cloud_auth](#cloud_auth)
|
|
22
24
|
+ [emit_error_for_missing_id](#emit_error_for_missing_id)
|
|
23
25
|
+ [hosts](#hosts)
|
|
24
26
|
+ [user, password, path, scheme, ssl_verify](#user-password-path-scheme-ssl_verify)
|
|
@@ -101,6 +103,10 @@ Current maintainers: @cosmo0920
|
|
|
101
103
|
+ [ilm_policies](#ilm_policies)
|
|
102
104
|
+ [ilm_policy_overwrite](#ilm_policy_overwrite)
|
|
103
105
|
+ [truncate_caches_interval](#truncate_caches_interval)
|
|
106
|
+
+ [use_legacy_template](#use_legacy_template)
|
|
107
|
+
+ [metadata section](#metadata-section)
|
|
108
|
+
+ [include_chunk_id](#include_chunk_id)
|
|
109
|
+
+ [chunk_id_key](#chunk_id_key)
|
|
104
110
|
* [Configuration - Elasticsearch Input](#configuration---elasticsearch-input)
|
|
105
111
|
* [Configuration - Elasticsearch Filter GenID](#configuration---elasticsearch-filter-genid)
|
|
106
112
|
* [Elasticsearch permissions](#elasticsearch-permissions)
|
|
@@ -183,6 +189,26 @@ port 9201 # defaults to 9200
|
|
|
183
189
|
|
|
184
190
|
You can specify Elasticsearch port by this parameter.
|
|
185
191
|
|
|
192
|
+
### cloud_id
|
|
193
|
+
|
|
194
|
+
```
|
|
195
|
+
cloud_id test-dep:ZXVyb3BlLXdlc3QxLmdjcC5jbG91ZC5lcy5pbyRiYZTA1Ng==
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
You can specify Elasticsearch cloud_id by this parameter.
|
|
199
|
+
|
|
200
|
+
If you specify `cloud_id` option then `cloud_auth` option is required.
|
|
201
|
+
If you specify `cloud_id` option, `host`, `port`, `user` and `password` options are ignored.
|
|
202
|
+
|
|
203
|
+
### cloud_auth
|
|
204
|
+
|
|
205
|
+
```
|
|
206
|
+
cloud_auth 'elastic:slkjdaooewkd87iqQ2O8EQYV'
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
You can specify Elasticsearch cloud_auth by this parameter.
|
|
210
|
+
|
|
211
|
+
|
|
186
212
|
### emit_error_for_missing_id
|
|
187
213
|
|
|
188
214
|
```
|
|
@@ -497,7 +523,7 @@ Specify the application name for the rollover index to be created.
|
|
|
497
523
|
application_name default # defaults to "default"
|
|
498
524
|
```
|
|
499
525
|
|
|
500
|
-
If [enable_ilm](#enable_ilm is set, then this parameter will be in effect otherwise ignored.
|
|
526
|
+
If [enable_ilm](#enable_ilm) is set, then this parameter will be in effect otherwise ignored.
|
|
501
527
|
|
|
502
528
|
### template_overwrite
|
|
503
529
|
|
|
@@ -920,7 +946,7 @@ Starting with version 0.8.0, this gem uses excon, which supports proxy with envi
|
|
|
920
946
|
|
|
921
947
|
### Buffer options
|
|
922
948
|
|
|
923
|
-
`fluentd-plugin-elasticsearch` extends [Fluentd's builtin Output plugin](https://docs.fluentd.org/
|
|
949
|
+
`fluentd-plugin-elasticsearch` extends [Fluentd's builtin Output plugin](https://docs.fluentd.org/output#overview) and use `compat_parameters` plugin helper. It adds the following options:
|
|
924
950
|
|
|
925
951
|
```
|
|
926
952
|
buffer_type memory
|
|
@@ -1139,6 +1165,8 @@ And yet another option is described in Dynamic Configuration section.
|
|
|
1139
1165
|
|
|
1140
1166
|
### Dynamic configuration
|
|
1141
1167
|
|
|
1168
|
+
**NOTE**: *`out_elasticsearch_dynamic` will be planned to be marked as deprecated.* Please don't use the new Fluentd configuration. This plugin is maintained for backward compatibility.
|
|
1169
|
+
|
|
1142
1170
|
If you want configurations to depend on information in messages, you can use `elasticsearch_dynamic`. This is an experimental variation of the Elasticsearch plugin allows configuration values to be specified in ways such as the below:
|
|
1143
1171
|
|
|
1144
1172
|
```
|
|
@@ -1251,7 +1279,7 @@ Default value is `true`.
|
|
|
1251
1279
|
|
|
1252
1280
|
Configure `bulk_message` request splitting threshold size.
|
|
1253
1281
|
|
|
1254
|
-
Default value is `
|
|
1282
|
+
Default value is `-1`(unlimited).
|
|
1255
1283
|
|
|
1256
1284
|
If you specify this size as negative number, `bulk_message` request splitting feature will be disabled.
|
|
1257
1285
|
|
|
@@ -1303,6 +1331,63 @@ If it is set, timer for clearing `alias_indexes` and `template_names` caches wil
|
|
|
1303
1331
|
|
|
1304
1332
|
Default value is `nil`.
|
|
1305
1333
|
|
|
1334
|
+
## use_legacy_template
|
|
1335
|
+
|
|
1336
|
+
Use legacy template or not.
|
|
1337
|
+
|
|
1338
|
+
Elasticsearch 7.8 or later supports the brand new composable templates.
|
|
1339
|
+
|
|
1340
|
+
For Elasticsearch 7.7 or older, users should specify this parameter as `false`.
|
|
1341
|
+
|
|
1342
|
+
Composable template documentation is [Put Index Template API | Elasticsearch Reference](https://www.elastic.co/guide/en/elasticsearch/reference/current/index-templates.html) and legacy template documentation is [Index Templates | Elasticsearch Reference](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates-v1.html).
|
|
1343
|
+
|
|
1344
|
+
Please confirm that whether the using Elasticsearch cluster(s) support the composable template feature or not when turn on the brand new feature with this parameter.
|
|
1345
|
+
|
|
1346
|
+
## <metadata\> section
|
|
1347
|
+
|
|
1348
|
+
Users can specify whether including `chunk_id` information into records or not:
|
|
1349
|
+
|
|
1350
|
+
```aconf
|
|
1351
|
+
<match your.awesome.routing.tag>
|
|
1352
|
+
@type elasticsearch
|
|
1353
|
+
# Other configurations.
|
|
1354
|
+
<metadata>
|
|
1355
|
+
include_chunk_id true
|
|
1356
|
+
# chunk_id_key chunk_id # Default value is "chunk_id".
|
|
1357
|
+
</metadata>
|
|
1358
|
+
</match>
|
|
1359
|
+
```
|
|
1360
|
+
|
|
1361
|
+
### include_chunk_id
|
|
1362
|
+
|
|
1363
|
+
Whether including `chunk_id` for not. Default value is `false`.
|
|
1364
|
+
|
|
1365
|
+
```aconf
|
|
1366
|
+
<match your.awesome.routing.tag>
|
|
1367
|
+
@type elasticsearch
|
|
1368
|
+
# Other configurations.
|
|
1369
|
+
<metadata>
|
|
1370
|
+
include_chunk_id true
|
|
1371
|
+
</metadata>
|
|
1372
|
+
</match>
|
|
1373
|
+
```
|
|
1374
|
+
|
|
1375
|
+
|
|
1376
|
+
### chunk_id_key
|
|
1377
|
+
|
|
1378
|
+
Specify `chunk_id_key` to store `chunk_id` information into records. Default value is `chunk_id`.
|
|
1379
|
+
|
|
1380
|
+
```aconf
|
|
1381
|
+
<match your.awesome.routing.tag>
|
|
1382
|
+
@type elasticsearch
|
|
1383
|
+
# Other configurations.
|
|
1384
|
+
<metadata>
|
|
1385
|
+
include_chunk_id
|
|
1386
|
+
chunk_id_key chunk_hex
|
|
1387
|
+
</metadata>
|
|
1388
|
+
</match>
|
|
1389
|
+
```
|
|
1390
|
+
|
|
1306
1391
|
## Configuration - Elasticsearch Input
|
|
1307
1392
|
|
|
1308
1393
|
See [Elasticsearch Input plugin document](README.ElasticsearchInput.md)
|
|
@@ -1820,6 +1905,16 @@ template_name your-fluentd-template
|
|
|
1820
1905
|
template_file /path/to/fluentd-template.json
|
|
1821
1906
|
```
|
|
1822
1907
|
|
|
1908
|
+
Note that if you create a new set of indexes every day, the elasticsearch ILM policy system will treat each day separately and will always
|
|
1909
|
+
maintain a separate active write index for each day.
|
|
1910
|
+
|
|
1911
|
+
If you have a rollover based on max_age, it will continue to roll the indexes for prior dates even if no new documents are indexed. If you want
|
|
1912
|
+
to delete indexes after a period of time, the ILM policy will never delete the current write index regardless of its age, so you would need a separate
|
|
1913
|
+
system, such as curator, to actually delete the old indexes.
|
|
1914
|
+
|
|
1915
|
+
For this reason, if you put the date into the index names with ILM you should only rollover based on size or number of documents and may need to use
|
|
1916
|
+
curator to actually delete old indexes.
|
|
1917
|
+
|
|
1823
1918
|
#### Fixed ILM indices
|
|
1824
1919
|
|
|
1825
1920
|
Also, users can use fixed ILM indices configuration.
|
|
@@ -1935,4 +2030,7 @@ Install dev dependencies:
|
|
|
1935
2030
|
$ gem install bundler
|
|
1936
2031
|
$ bundle install
|
|
1937
2032
|
$ bundle exec rake test
|
|
2033
|
+
# To just run the test you are working on:
|
|
2034
|
+
$ bundle exec rake test TEST=test/plugin/test_out_elasticsearch.rb TESTOPTS='--verbose --name=test_custom_template_with_rollover_index_create_and_custom_ilm'
|
|
2035
|
+
|
|
1938
2036
|
```
|
|
@@ -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 = '4.1
|
|
6
|
+
s.version = '4.3.1'
|
|
7
7
|
s.authors = ['diogo', 'pitr', 'Hiroshi Hatake']
|
|
8
8
|
s.email = ['pitr.vern@gmail.com', 'me@diogoterror.com', 'cosmo0920.wp@gmail.com']
|
|
9
9
|
s.description = %q{Elasticsearch output plugin for Fluent event collector}
|
|
@@ -22,18 +22,23 @@ module Fluent::ElasticsearchIndexTemplate
|
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
def template_exists?(name, host = nil)
|
|
25
|
-
|
|
25
|
+
if @use_legacy_template
|
|
26
|
+
client(host).indices.get_template(:name => name)
|
|
27
|
+
else
|
|
28
|
+
client(host).indices.get_index_template(:name => name)
|
|
29
|
+
end
|
|
26
30
|
return true
|
|
27
31
|
rescue Elasticsearch::Transport::Transport::Errors::NotFound
|
|
28
32
|
return false
|
|
29
33
|
end
|
|
30
34
|
|
|
31
|
-
def retry_operate(max_retries, fail_on_retry_exceed = true)
|
|
35
|
+
def retry_operate(max_retries, fail_on_retry_exceed = true, catch_trasport_exceptions = true)
|
|
32
36
|
return unless block_given?
|
|
33
37
|
retries = 0
|
|
38
|
+
transport_errors = Elasticsearch::Transport::Transport::Errors.constants.map{ |c| Elasticsearch::Transport::Transport::Errors.const_get c } if catch_trasport_exceptions
|
|
34
39
|
begin
|
|
35
40
|
yield
|
|
36
|
-
rescue *client.transport.host_unreachable_exceptions, Timeout::Error => e
|
|
41
|
+
rescue *client.transport.host_unreachable_exceptions, *transport_errors, Timeout::Error => e
|
|
37
42
|
@_es = nil
|
|
38
43
|
@_es_info = nil
|
|
39
44
|
if retries < max_retries
|
|
@@ -52,7 +57,11 @@ module Fluent::ElasticsearchIndexTemplate
|
|
|
52
57
|
end
|
|
53
58
|
|
|
54
59
|
def template_put(name, template, host = nil)
|
|
55
|
-
|
|
60
|
+
if @use_legacy_template
|
|
61
|
+
client(host).indices.put_template(:name => name, :body => template)
|
|
62
|
+
else
|
|
63
|
+
client(host).indices.put_index_template(:name => name, :body => template)
|
|
64
|
+
end
|
|
56
65
|
end
|
|
57
66
|
|
|
58
67
|
def indexcreation(index_name, host = nil)
|
|
@@ -65,14 +74,15 @@ module Fluent::ElasticsearchIndexTemplate
|
|
|
65
74
|
end
|
|
66
75
|
end
|
|
67
76
|
|
|
68
|
-
def template_install(name, template_file, overwrite, enable_ilm = false, deflector_alias_name = nil, ilm_policy_id = nil, host = nil, target_index = nil)
|
|
77
|
+
def template_install(name, template_file, overwrite, enable_ilm = false, deflector_alias_name = nil, ilm_policy_id = nil, host = nil, target_index = nil, index_separator = '-')
|
|
69
78
|
inject_template_name = get_template_name(enable_ilm, name, deflector_alias_name)
|
|
70
79
|
if overwrite
|
|
71
80
|
template_put(inject_template_name,
|
|
72
81
|
enable_ilm ? inject_ilm_settings_to_template(deflector_alias_name,
|
|
73
82
|
target_index,
|
|
74
83
|
ilm_policy_id,
|
|
75
|
-
get_template(template_file)
|
|
84
|
+
get_template(template_file),
|
|
85
|
+
index_separator) :
|
|
76
86
|
get_template(template_file), host)
|
|
77
87
|
|
|
78
88
|
log.debug("Template '#{inject_template_name}' overwritten with #{template_file}.")
|
|
@@ -83,7 +93,8 @@ module Fluent::ElasticsearchIndexTemplate
|
|
|
83
93
|
enable_ilm ? inject_ilm_settings_to_template(deflector_alias_name,
|
|
84
94
|
target_index,
|
|
85
95
|
ilm_policy_id,
|
|
86
|
-
get_template(template_file)
|
|
96
|
+
get_template(template_file),
|
|
97
|
+
index_separator) :
|
|
87
98
|
get_template(template_file), host)
|
|
88
99
|
log.info("Template configured, but no template installed. Installed '#{inject_template_name}' from #{template_file}.")
|
|
89
100
|
else
|
|
@@ -91,14 +102,15 @@ module Fluent::ElasticsearchIndexTemplate
|
|
|
91
102
|
end
|
|
92
103
|
end
|
|
93
104
|
|
|
94
|
-
def template_custom_install(template_name, template_file, overwrite, customize_template, enable_ilm, deflector_alias_name, ilm_policy_id, host, target_index)
|
|
105
|
+
def template_custom_install(template_name, template_file, overwrite, customize_template, enable_ilm, deflector_alias_name, ilm_policy_id, host, target_index, index_separator)
|
|
95
106
|
template_custom_name = get_template_name(enable_ilm, template_name, deflector_alias_name)
|
|
96
107
|
custom_template = if enable_ilm
|
|
97
108
|
inject_ilm_settings_to_template(deflector_alias_name,
|
|
98
109
|
target_index,
|
|
99
110
|
ilm_policy_id,
|
|
100
111
|
get_custom_template(template_file,
|
|
101
|
-
customize_template)
|
|
112
|
+
customize_template),
|
|
113
|
+
index_separator)
|
|
102
114
|
else
|
|
103
115
|
get_custom_template(template_file, customize_template)
|
|
104
116
|
end
|
|
@@ -119,15 +131,31 @@ module Fluent::ElasticsearchIndexTemplate
|
|
|
119
131
|
enable_ilm ? deflector_alias_name : template_name
|
|
120
132
|
end
|
|
121
133
|
|
|
122
|
-
def inject_ilm_settings_to_template(deflector_alias, target_index, ilm_policy_id, template)
|
|
134
|
+
def inject_ilm_settings_to_template(deflector_alias, target_index, ilm_policy_id, template, index_separator)
|
|
123
135
|
log.debug("Overwriting index patterns when Index Lifecycle Management is enabled.")
|
|
124
|
-
template
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
136
|
+
template['index_patterns'] = "#{target_index}#{index_separator}*"
|
|
137
|
+
if @use_legacy_template
|
|
138
|
+
template.delete('template') if template.include?('template')
|
|
139
|
+
# Prepare settings Hash
|
|
140
|
+
if !template.key?('settings')
|
|
141
|
+
template['settings'] = {}
|
|
142
|
+
end
|
|
143
|
+
if template['settings'] && (template['settings']['index.lifecycle.name'] || template['settings']['index.lifecycle.rollover_alias'])
|
|
144
|
+
log.debug("Overwriting index lifecycle name and rollover alias when Index Lifecycle Management is enabled.")
|
|
145
|
+
end
|
|
146
|
+
template['settings'].update({ 'index.lifecycle.name' => ilm_policy_id, 'index.lifecycle.rollover_alias' => deflector_alias})
|
|
147
|
+
template['order'] = template['order'] ? template['order'] + target_index.count(index_separator) + 1 : 51 + target_index.count(index_separator)
|
|
148
|
+
else
|
|
149
|
+
# Prepare template.settings Hash
|
|
150
|
+
if !template['template'].key?('settings')
|
|
151
|
+
template['template']['settings'] = {}
|
|
152
|
+
end
|
|
153
|
+
if template['template']['settings'] && (template['template']['settings']['index.lifecycle.name'] || template['template']['settings']['index.lifecycle.rollover_alias'])
|
|
154
|
+
log.debug("Overwriting index lifecycle name and rollover alias when Index Lifecycle Management is enabled.")
|
|
155
|
+
end
|
|
156
|
+
template['template']['settings'].update({ 'index.lifecycle.name' => ilm_policy_id, 'index.lifecycle.rollover_alias' => deflector_alias})
|
|
157
|
+
template['priority'] = template['priority'] ? template['priority'] + target_index.count(index_separator) + 1 : 101 + target_index.count(index_separator)
|
|
129
158
|
end
|
|
130
|
-
template['settings'].update({ 'index.lifecycle.name' => ilm_policy_id, 'index.lifecycle.rollover_alias' => deflector_alias})
|
|
131
159
|
template
|
|
132
160
|
end
|
|
133
161
|
|