Elastic 数据流命名方案简介
随着 Elastic 7.9 版本的发布,[Elastic Agent 和 Fleet] (https://www.elastic.co/blog/introducing-elastic-agent-and-ingest-manager)已推出,同时还引入了一种用于在 Elasticsearch 中对时序数据的索引和数据流进行结构化的新方法。在这篇博客文章中,我们将概述 Elastic 数据流命名方案及其工作原理。这是关于 Elastic 数据流命名方案系列博客文章的第一篇。
Elastic 数据流命名方案
Elastic 数据流命名方案专为时序数据设计,使用以下命名规范将数据集分割成不同的数据流。
- 类型:描述数据的通用类型
- 数据集:描述已采集的数据及其结构
- 命名空间:用户可配置的任意分组
这三个部分由“-”组合在一起,生成了类似“logs-nginx.access-production”的数据流。在这三个部分中,都不允许使用“-”字符。这意味着所有数据流都按以下方式命名:
{type}–{dataset}–{namespace}
数据集和命名空间都有默认值,分别为“dataset=generic”和“namespace=default”。对于 Elastic Agent 而言,如果用户刚刚开始摄取日志文件,则数据会以“logs-generic-default”形式出现。
为了充分发挥 Elastic 数据流命名方案的优势,每个文档必须包含以下三个字段:
- data_stream.type
- data_stream.dataset
- data_stream.namespace
有关这些字段 的更多详细信息,请参阅 Elastic Common Schema (ECS)。上述字段映射为 constant_keyword字段,通过减少需要查询的分片数量,使查询效率更高。
Elastic 数据流命名方案的优势
与 Beats 和 Logstash 之前使用的索引策略相比,Elastic 数据流命名方案有一些优势。它不再使用极少数大型索引,而是使用许多更小但更密集的数据流。简要总结其优势:
- 减少了每个索引的字段数:由于数据按数据集分成多个数据流,因此每个数据流包含最少的字段集。这样可以提高空间利用率并加快查询速度。
- 更精细的数据控制:通过按数据集和“命名空间”对数据进行划分,可实现对轮换、保留策略和安全权限的精细化管理。
- 灵活性:用户可以使用“命名空间”以任何他们想要的方式划分和组织数据。
- 更优质的精选体验:由于 Elastic 数据流命名方案具有通用结构,因此可以在数据流之上构建更优质的精选体验。
- 所需的摄取权限更少:以前,模板和摄取管道的设置由 Elastic Agent 执行。由于现在数据集中进行处理,因此数据摄取工具只需具备追加数据的权限即可。
Elastic 数据流命名方案的使用
Elastic 数据流命名方案从 Elastic Stack 7.9 版本及更高版本开始受支持,因为该功能需要支持数据流、新的 Elasticsearch 组件模板,以及恒定的关键词。“logs--”和“metrics--”的索引模板随 Elasticsearch >=7.9 一起发布。[Elastic Agent] 附带的所有数据 (https://www.elastic.co/blog/introducing-elastic-agent-and-ingest-manager)都使用 Elastic 数据流命名方案。要将其用于任何其他数据采集器,只需遵循命名结构并添加 data_stream 字段即可使其正常工作。
结论
这是 Elastic 数据流命名方案的简短摘要。在后续的博客文章中,我们将深入探讨其幕后工作原理的技术细节,详细介绍 Elastic Agent 的使用方法,以及如何利用它为您带来益处。如需更多见解,请观看 Elastic Community YouTube 频道上的 深入了解新的 Elastic 索引策略。