减少 elasticsearch 的索引大小
Reducing elasticsearch's index size
我目前有大量的日志文件正在被 Logstash 分析,因此在 Elasticsearch 中使用了大量的 space。
然而,很多这些数据对我来说是无用的,因为所有的东西都没有显示在 Kibana 中。
所以我想知道:有没有一种方法可以使索引大小保持最小并且只存储匹配的事件?
编辑: 可能我不清楚我想要实现什么。我有几个属于不同类别的日志(因为它们的用途不同,构建方式也不同)。我创建了几个与这些不同类型的日志相对应的过滤器配置文件。
目前,我所有日志中的所有数据都存储在 Elasticsearch 中。例如,假设我正在我的一个日志中查找文本 "cat",将存储包含 "cat" 的事件,但其他 10,000 行也会存储。我想避免这种情况,只将这 1 个事件存储在 Elasticsearch 的索引中。
您并没有真正提供太多信息,但据我所知,您有 2 个选择,您可以更新您的 logstash 过滤器,以便只将您感兴趣的数据发送到 elasticsearch。您可以通过让 conditional logic to "drop {}" certain events. Or you could mutate { remove_field } 删除某些事件中的各个字段来做到这一点。
你的另一个选择是 close/delete elasticsearch 数据库中的旧索引,这将减少占用堆的信息量 space,并且会立即生效,而我的第一个选择是只影响未来的日志。 close/delete 旧索引的最简单方法是使用 curator.
编辑:
根据你的进一步问题,我建议:
- 在您的输入中,为所有输入添加一个标签,例如 "drop"
- 作为每个 grok 的一部分,您可以在成功匹配时删除标签,因此当 grok 工作时,删除删除标签
- 作为输出的一部分,在输出周围放置条件逻辑,以便您只
保存记录时不带 drop 标签,例如:
output { if "drop" not in [tags] { etc } }
我目前有大量的日志文件正在被 Logstash 分析,因此在 Elasticsearch 中使用了大量的 space。 然而,很多这些数据对我来说是无用的,因为所有的东西都没有显示在 Kibana 中。
所以我想知道:有没有一种方法可以使索引大小保持最小并且只存储匹配的事件?
编辑: 可能我不清楚我想要实现什么。我有几个属于不同类别的日志(因为它们的用途不同,构建方式也不同)。我创建了几个与这些不同类型的日志相对应的过滤器配置文件。
目前,我所有日志中的所有数据都存储在 Elasticsearch 中。例如,假设我正在我的一个日志中查找文本 "cat",将存储包含 "cat" 的事件,但其他 10,000 行也会存储。我想避免这种情况,只将这 1 个事件存储在 Elasticsearch 的索引中。
您并没有真正提供太多信息,但据我所知,您有 2 个选择,您可以更新您的 logstash 过滤器,以便只将您感兴趣的数据发送到 elasticsearch。您可以通过让 conditional logic to "drop {}" certain events. Or you could mutate { remove_field } 删除某些事件中的各个字段来做到这一点。
你的另一个选择是 close/delete elasticsearch 数据库中的旧索引,这将减少占用堆的信息量 space,并且会立即生效,而我的第一个选择是只影响未来的日志。 close/delete 旧索引的最简单方法是使用 curator.
编辑:
根据你的进一步问题,我建议:
- 在您的输入中,为所有输入添加一个标签,例如 "drop"
- 作为每个 grok 的一部分,您可以在成功匹配时删除标签,因此当 grok 工作时,删除删除标签
- 作为输出的一部分,在输出周围放置条件逻辑,以便您只 保存记录时不带 drop 标签,例如:
output { if "drop" not in [tags] { etc } }