处理 AWS/CloudWatch 日志时什么是好的索引策略?

what is a good indexing strategy when dealing with AWS/CloudWatch logs?

我是 Elasticsearch 世界的新手,我正在从事一个使用 Amazon Elasticsearch 服务(Elasticsearch 和 Kibana)为来自不同 AWS 账户的所有 CloudWatch 日志提供日志分析系统的项目。设置堆栈和路由 CloudWatch 日志是比较容易的部分。但是我注意到,当您以时间序列方式拥有不可变数据(在本例中为日志)时,一个好的索引策略会特别发挥作用。 我的第一种方法是为每个日志组创建一个每日单一索引,并根据我的要求使用索引策略 move/expire 旧索引。但我认为我将在我的 Elasticsearch 集群中处理很多小索引。 然后我考虑将每个 AWS 帐户中的所有 CloudWatch 日志组索引到每日单个索引中。问题是它超过了主要由 CloudTrail 和 VPS 流日志引起的映射限制(1000 个字段),我认为它不是增加这个限制是个好主意。 所以我决定将我的日志分组为一些有限数量的索引类型(例如 cloudtrail 日志、VPC 流日志和其他日志)。所以基本上我会为每个 AWS 账户创建三个每日指数,这些指数相对较大,我不必增加映射限制。 我分享这个是为了看看是否有人实施了类似的东西,他们有什么想法。我还处于项目的初始阶段,我急切地寻求建议和推荐。

一个好的索引策略是非常主观的,取决于许多因素,例如每个索引的大小以及您查询它的频率。

既然我们在这里处理的是 cloudwatch 日志,您应该继续关注避免大量较小的索引。除了组合不同类型的日志,您还可以考虑将旧索引组合成每周或每月索引。例如,在周末将一周的数据重新索引为每周索引。此外,请确保您已定义保留期并清除所有旧索引。

您还可以考虑查看 Amazon Elasticsearch 中的 UltraWarm nodes,它提供热温存储架构,非常适合只读数据,例如日志。