Elastic data stream 命名方案介绍

Posted 中国社区官方博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elastic data stream 命名方案介绍相关的知识,希望对你有一定的参考价值。

在 Elastic 7.9 中,发布了 Elastic Agent 和 Fleet,以及一种在 Elasticsearch 中为时间序列数据构建索引和数据流的新方法。 在这篇博文中,我们将概述 Elastic data stream 命名方案及其工作原理。 这是围绕 Elastic data stream 命名方案的一系列博客文章中的第一篇。

Elastic data stream 的命名方案

Elastic data stream 的命名方案是由时间序列数据,由数据集分割成不同的数据。它使用以下命名约定。

  • type(类型):通用类型描述数据,比如 logs, metrics, traces ... 
  • dataset(数据集):描述摄入的数据和它的结构,比如 nginx.access
  • namespace(命名空间):用户可配置的任意分组,比如 production, testing

各个部分由 “-” 结合在一起,这样就会导致像 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 data stream 命名方案的好处

与 Beats 和 Logstash 以前使用的索引策略相比,Elastic data stream 命名方案有一些优势。使用了许多更小但更密集的数据流,而不是很少的大索引。好处的简短摘要:

  • 减少每个索引的字段数:由于数据被拆分为跨多个数据流的单个数据集,因此每个数据流包含最少的字段集。这会带来更好的空间效率和更快的查询。
  • 对数据进行更精细的控制:通过数据集和命名空间拆分数据允许对翻转、保留和安全权限进行精细控制。
  • 灵活性:用户可以使用命名空间以任何他们想要的方式划分和组织数据。
  • 更好的策划体验:由于 Elastic 数据流命名方案的通用结构,可以在数据流之上构建更好的策划体验。
  • 需要更少的摄入权限:以前,模板和摄入管道的设置是由 Elastic Agent 执行的。由于这现在以集中方式发生,因此摄入工具只需要附加数据的权限。

我们以日志为例。日志的数据按照 app 及 env 来进行区分。每个数据流都可以有自己的单独的 Lifecycle,并且不同的数据集可以有不同的字段。假如我们的日志数据有如下的数据集:

我们可以通过如下的搜索来针对一个更小的数据集来进行有效地搜索:

GET  logs-*-*/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "data_stream.namespace": "prod"
          }
        }
      ]
    }
  }
}

在上面,我们只针对一个小的数据集 prod 来进行搜索。在很多的情况下,这个非常有效!

Elastic data stream 命名方案的使用

Elastic Stack 7.9 及更高版本支持 Elastic 数据流命名方案,因为它需要支持数据流、新的 Elasticsearch 组件模板和常量关键字。 logs-*-* 和 metrics-*-* 的索引模板随 Elasticsearch >=7.9 一起提供。 Elastic Agent 附带的所有数据都使用 Elastic data stream 命名方案。 要将它用于任何其他数据传送器,只需遵循命名结构并添加 data_stream 字段以使其工作。

概括

这是 Elastic data stream 命名方案的简短摘要。 在后续的博客文章中,我们将深入探讨它在幕后如何工作的技术细节,Elastic Agent 如何详细使用它,以及如何使用它来为自己谋取更多的好处。 如需更多见解,请观看 Elastic Community YouTube 频道上对新的 Elastic 索引策略的深入了解

跟多阅读:Observability:运用 Fleet 来轻松地导入 Nginx 日志

以上是关于Elastic data stream 命名方案介绍的主要内容,如果未能解决你的问题,请参考以下文章

.Spark Streaming(上)--实时流计算Spark Streaming原理介

用C#的编程,老是提示:命名空间“System”中不存在类型或命名空间名称“Stream”。请问哪里错了?

Elasticsearch:Data streams

Elasticsearch:Data streams

Elastic实战:彻底解决spring-data-elasticsearch日期时间类型数据读取报错问题

使用 Dockerrun.aws.json 和 Elastic Beanstalk 命名 Docker 容器