我从所有 docker 容器中收集带有 filebeat 的日志,将它们发送到 logstash,然后从 logstash 转发到 elasticsearch。如果索引太大或太旧,我想滚动自动创建的索引。我测试的变体很少。
使用 Elasticsearch ILM。我创建了
my_policy1
超过 5M 时应该翻转的策略和模板template_charizard
:{“index_patterns”:[“printmessage_charizard*”],“设置”:{“number_of_shards”:1,“number_of_replicas”:1,“index.lifecycle.name”:“my_policy1”,“index.lifecycle.rollover_alias”:“ charizard-actual" },"别名": { "charizard-actual": { "is_write_index": true } } }
这不起作用,我必须使用 alias 创建索引,在这种情况下
charizard-actual
是手动的。如果我没有,将会出现错误:Rollover alias [charizard-actual] can point to multiple indices, found duplicated alias [[charizard-actual]] in index template [template_charizard]
将会有更多的容器被消耗,所以我不能每次创建一些新的索引时都手动创建索引。我希望它会自动创建。
更新:
我测试了这个选项(完全按照教程,同名),但它不起作用。它只是创建新的空索引,带有增量编号,但所有日志都进入引导索引。
我可以配置 logstash ILM。这工作正常,但我不能在别名中使用变量,所以我必须为每个索引创建弹性搜索输出并制作很多 ifs。
我可以配置 filebeat ILM。与logstash类似的问题。我可以在翻转别名中使用变量,但它对所有索引都是硬编码的。
我的期望是,我将配置一些策略、一些模板,并且基于索引名称的正则表达式将模板应用于索引。所有选项基本上都是有用的,每次必须手动更改(编辑logstash配置)或请求(先手动创建索引)。
问题:
正确翻转的最佳解决方案是什么?
为什么所有东西都必须硬编码,那时很难维护。
根据我的说法,curator 将是最好的解决方案,但是需要维护另一个应用程序。
任何人都可以向我解释所有 ILM 选项的用法吗?无法想象为每个新索引更改配置,甚至首先手动创建索引或对所有日志使用硬编码别名,例如 filebeat 示例。也许我错过了一些东西。