logstash ELK日志记录索引最佳实践-每个“日志类型”索引?

gijlo24d  于 2023-08-01  发布在  Logstash
关注(0)|答案(1)|浏览(158)

我的团队希望使用ELK堆栈来监视日志。我们假设每个微服务、每个日期都应该有一个索引。例如“service 1 -30/05/2023”。
每个“日志类型”都有一个索引是否被认为是良好的做法?例如,“service 1-usercreated-30/05/2023”,“service 1-locationupdated-30/05/2023”
(其中类型将由开发人员手动插入)

66bbxpm5

66bbxpm51#

这里有几件事需要考虑。为了回答您的问题,需要考虑的主要问题涉及数据的数量和生命周期。
从维护的Angular 来看,对索引进行细粒度的分离可能是有意义的。删除与给定微服务A和/或给定日志类型B相关的所有索引比运行与相同微服务A和/或日志类型B匹配的查询删除任务更容易。
但是,如果您的数据隔离粒度太细,则可能会有太多碎片的风险,而且这些碎片可能太“小”。为了记录,您的集群被预配置为每个数据节点最多包含1000个分片,因此如果您有例如3个数据节点,集群最多可容纳3000个分片,无论分片大小。因此,如果你有太细粒度的索引,并且某些索引的数据量不是很高,你最终会有许多非常空的分片,即使你有足够的磁盘空间来容纳更多的数据,你的集群也会拒绝新的写请求,直到你删除一些分片。
这就是为什么你需要考虑数据保留每个微服务和/或每个日志类型。对于微服务A,您可能需要在30天内保留数据,对于微服务B,您需要在90天内保留数据。在这种情况下,将两个微服务的数据分离在两个不同的索引中是有意义的(如果索引是仅附加的,则为data streams),以便每个索引都可以有自己的index lifecycle policy
如果有不同的日志类型需要不同的保留策略,则同样的想法也适用于日志类型。既然你提到开发人员负责指定日志类型,“太多小碎片”的问题可能会更加严重,因为你无法控制它们将指定什么,导致创建更多的索引。

相关问题