我已阅读以下教程:
在经历了好几次它的阶段之后,我仍然停留在遇到相同的错误上。 我想自动删除具有一定年龄的旧索引。
我在AWS上有几个实例,每个实例都在弹性搜索中写入自己的索引,例如: 索引名称-
filebeat-log-centralization-ds-test-2020.08.09
已映射到索引模板的
{
"filebeat-template" : {
"order" : 0,
"index_patterns" : [
"filebeat-*"
],
"settings" : {
"index" : {
"lifecycle" : {
"name" : "logs-deletion-policy",
"rollover_alias" : "filebeat"
},
"number_of_shards" : "1",
"number_of_replicas" : "0"
}
},
"mappings" : {
"_meta" : { },
"_source" : { },
"properties" : { /*** some mappings ***/
"aliases" : { }
}
}
ILM政策:
PUT _ilm/policy/logs-deletion-policy
{
"policy": {
"phases": {
"hot": {
"actions": {
"rollover": {
"max_size": "50GB",
"max_age": "1m"
}
}
},
"delete": {
"min_age": "0d",
"actions": {
"delete": {}
}
}
}
}
}
我已经引导了过渡别名索引:
PUT filebeat-000001
{
"aliases": {
"filebeat": {
"is_write_index": true
}
}
}
filebeat-0000N索引(我刚刚创建的过渡别名索引)正在翻转并被删除,
但是"filebeat-log-centralization-ds-test-2020.08.09"
显示错误:
illegal_argument_exception: index.lifecycle.rollover_alias [filebeat]
does not point to index [filebeat-log-centralization-ds-test-2020.08.09]
我不知道我在做什么错,并尝试重复该教程,但没有成功。 我想念什么?
编辑:
我尝试将filebeat别名添加到索引模板。
GET /filebeat-log-centralization-ds-test-2020.08.09/_alias/
{
"filebeat-log-centralization-ds-test-2020.08.09" : {
"aliases" : {
"filebeat" : { }
}
}
}
这会导致filebeat-log-centralization-ds-test-2020.08.09
索引错误
illegal_argument_exception: Rollover alias [filebeat] can point to multiple indices, found duplicated alias [[filebeat]] in index template [filebeat-template]
答案 0 :(得分:1)
我无法解决此问题,但是确实使用curator解决了这个问题,因为我的主要目标是删除旧索引。
创建一个名为config.yml
的文件
client:
hosts:
- 127.0.0.1
port: 9200
url_prefix:
use_ssl: False
certificate:
client_cert:
client_key:
ssl_no_validate: False
http_auth: username:password
timeout: 30
master_only: False
logging:
loglevel: INFO
logfile: /var/log/curator/curator.log
logformat: default
blacklist: ['elasticsearch', 'urllib3']
Curator需要一个操作文件。创建一个名为delete_indices.yml
actions:
1:
action: delete_indices
description: >-
Delete indices with age greater than 4 days(based on index name), for filebeat-*
prefixed indices.
options:
ignore_empty_list: True
disable_action: False
filters:
- filtertype: pattern
kind: prefix
value: filebeat-
- filtertype: age
source: creation_date
direction: older
unit: days
unit_count: 4
上述配置会删除所有年龄超过4天的索引
现在您可以使用以下命令运行它-
curator --config config.yml delete_indices.yml
由于我的配置需要自动删除旧索引,因此我正在使用crontab
运行它。
运行
crontab -e
这将打开您的个人crontab(cron配置文件)。
添加以下代码-
* * * * * /usr/local/bin/curator --config {config.yml location} {delete_indices.yml location} >/dev/null 2>&1
答案 1 :(得分:0)
您alias
创建的filebeat
似乎没有指向要删除的索引,该索引在异常消息中突出显示。
index.lifecycle.rollover_alias [filebeat]不指向索引 [filebeat-log-centralization-ds-test-2020.08.09]
您可以使用GET alias API进行确认,如果没有链接use update alias API,则可以将filebeat
别名链接到filebeat-log-centralization-ds-test-2020.08.09
。