如何将 Elasticsearch 和时间序列数据流用于可观察性指标 - 8.7

这篇具有很好参考价值的文章主要介绍了如何将 Elasticsearch 和时间序列数据流用于可观察性指标 - 8.7。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者:Nicolas Ruflin

如何将 Elasticsearch 和时间序列数据流用于可观察性指标 - 8.7

Elasticsearch 用于多种数据类型 —— 其中之一就是指标。 随着多年前 Metricbeat 的推出以及后来我们的 APM 代理的推出,指标用例变得更加流行。 多年来,Elasticsearch 在如何处理指标聚合和稀疏文档等方面做出了许多改进。 同时,引入了 TSVB 可视化,使指标可视化变得更加容易。 大多数其他指标解决方案都存在一个缺失的概念,即带维度的时间序列的概念。

2021 年年中,Elasticsearch 团队着手让 Elasticsearch 更适合指标。 该团队创建了时间序列数据流 (TSDS),它在 8.7 中作为正式发布 (GA) 发布。

这篇博文深入探讨了 TSDS 的工作原理以及我们如何在 Elastic 可观察性中使用它,以及吧如何将它用于你自己的指标。

TSDS 快速介绍

时间序列数据流 (TSDS) 构建在 Elasticsearch 中针对时间序列优化的数据流之上。 要为指标创建数据流,需要对数据流进行额外设置。 当我们使用数据流时,首先必须创建一个索引模板:

PUT _index_template/metrics-laptop
{
  "index_patterns": [
    "metrics-laptop-*"
  ],
  "data_stream": {},
  "priority": 200,
  "template": {
    "settings": {
      "index.mode": "time_series"
    },
    "mappings": {
      "properties": {
        "host.name": {
          "type": "keyword",
          "time_series_dimension": true
        },
        "packages.sent": {
          "type": "integer",
          "time_series_metric": "counter"
        },
        "memory.usage": {
          "type": "double",
          "time_series_metric": "gauge"
        }
      }
    }
  }
}

让我们仔细看看这个模板。 在顶部,我们用 metrics-laptop-* 标记索引模式。 可以选择任何模式,但建议对所有指标使用数据流命名方案。 下一节设置 "index.mode": "time_series" 并确保它是一个 data_stream: "data_stream": {}。

维度

每个时间序列数据流至少需要一个维度。 在上面的示例中,host.name 被设置为维度字段,其中包含 "time_series_dimension": true。 默认情况下最多可以有 16 个维度。 并非每个维度都必须出现在每个文档中。 维度定义了时间序列。 一般规则是选择字段作为唯一标识你的时间序列的维度。 通常这是对主机/容器的唯一描述,但对于磁盘指标等某些指标,还需要磁盘 ID。 如果你对默认推荐的维度感到好奇,请查看此 ECS 贡献的维度属性。

减少存储并提高查询速度

此时,你已经拥有一个正常运行的时间序列数据流。 将索引模式设置为时间序列会自动打开合成源。 默认情况下,Elasticsearch 通常会复制数据三次:

  • 面向行的存储(_source 字段)
  • 面向列的存储(对于聚合 doc_values: true)
  • 索引(对于过滤和搜索 index: true )

对于合成(synthetic)源,_source 字段不会持久化; 相反,它是根据 doc values 重建的。 特别是在指标用例中,保留源代码几乎没有什么好处。

不存储它意味着存储量的显着减少。 时间序列数据流根据维度和时间戳对数据进行排序。 这意味着通常一起查询的数据存储在一起,从而加快了查询时间。 这也意味着单个时间序列的数据点并排存储在磁盘上。 由于计数器增加的速率通常相对恒定,因此可以进一步压缩数据。

指标类型

但要受益于 TSDS 的所有优势,指标字段的字段属性必须使用 time_series_metric: {type} 进行扩展。 支持多种类型 —— 例如,上面使用了 gauge 和 counter。 为 Elasticsearch 提供有关指标类型的知识允许 Elasticsearch 为不同类型提供更优化的查询并进一步减少存储使用。

当你在数据流命名方案下为数据流创建自己的模板时,设置 "priority": 200 或更高是很重要的,否则将应用内置的默认模板。

摄取文档

将文档提取到 TSDS 与将文档提取到 Elasticsearch 没有任何不同。 你可以在 Dev Tools 中使用以下命令添加文档,然后搜索它并检查映射。 注意:你必须将@timestamp 字段调整为接近你当前的日期和时间。

# Add a document with `host.name` as the dimension
POST metrics-laptop-default/_doc
{
  # This timestamp neesd to be adjusted to be current
  "@timestamp": "2023-03-30T12:26:23+00:00",
  "host.name": "ruflin.com",
  "packages.sent": 1000,
  "memory.usage": 0.8 
}

# Search for the added doc, _source will show up but is reconstructed
GET metrics-laptop-default/_search

# Check out the mappings
GET metrics-laptop-default

如果你想为自己的文档添加一个当前机器运行的日期,你可以参考文章 “Elasticsearch:如何在写入文档时加上 now 时间标戳”。

如果你进行搜索,它仍会显示 _source 但这是根据 doc values 重建的。 上面添加的附加字段是 @timestamp。 这很重要,因为它是任何数据流的必填字段。

为什么这对可观察性很重要?

Elastic 可观察性解决方案的优势之一是在单个存储引擎中,所有信号都集中在一个地方。 用户可以一起查询日志、指标和跟踪,而无需从一个系统跳转到另一个系统。 正因为如此,拥有一个强大的存储和查询引擎不仅适用于日志而且适用于指标对我们来说很关键。

TSDS 在集成中的使用

通过集成(integrations),我们为用户提供了与他们的基础设施和服务集成的开箱即用体验。 如果你正在使用我们的集成,假设你使用的是 8.7 或更高版本,最终你将自动获得 TSDS 的所有指标优势。

目前我们正在处理我们的集成包列表,添加维度、指标类型字段,然后为指标数据流打开 TSDS。 这意味着一旦包启用了所有属性,你唯一要做的就是升级集成,其他一切都会在后台自动发生。

了解更多

如果你想详细了解 TSDS 的幕后工作原理和所有可用的配置选项,请查看 TSDS 文档。 Elasticsearch 在 8.7 中支持的只是 Elasticsearch 中指标时间序列的第一次迭代。 如果你切换到使用 TSDS,你将自动受益于 Elasticsearch 对指标时间序列所做的所有未来改进,无论是更高效的存储、查询性能还是新的聚合功能。

TSDS 从 8.7 开始就可以使用,并且会在集成升级时自动出现在我们越来越多的集成中。 你会注意到的是更低的存储使用量和更快的查询。 开心!文章来源地址https://www.toymoban.com/news/detail-441012.html

到了这里,关于如何将 Elasticsearch 和时间序列数据流用于可观察性指标 - 8.7的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 时间序列预测 | Matlab鲸鱼算法(WOA)优化极限梯度提升树XGBoost时间序列预测,WOA-XGBoost时间序列预测模型,单列数据输入模型

    效果一览 文章概述 鲸鱼算法(WOA)优化极限梯度提升树XGBoost时间序列预测,WOA-XGBoost时间序列预测模型,单列数据输入模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码

    2024年02月13日
    浏览(80)
  • 时间序列预测 | Matlab灰狼算法(GWO)优化极限梯度提升树XGBoost时间序列预测,GWO-XGBoost时间序列预测模型,单列数据输入模型

    效果一览 文章概述 时间序列预测 | Matlab灰狼算法(GWO)优化极限梯度提升树XGBoost时间序列预测,GWO-XGBoost时间序列预测模型,单列数据输入模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码

    2024年02月13日
    浏览(54)
  • 【数据挖掘】时间序列教程【一】

            对于时间序列的研究,可以追溯到19世纪末和20世纪初。当时,许多学者开始对时间相关的经济和社会现象进行研究,尝试发现其规律和趋势。其中最早的时间序列研究可以追溯到法国经济学家易贝尔(Maurice Allais)和英国经济学家詹姆斯·克拉克(James Clark)的研

    2024年02月12日
    浏览(50)
  • 【数据挖掘】时间序列教程【五】

    (说明:本文接上回: 【数据挖掘】时间序列教程【四】_无水先生的博客-CSDN博客 )                 上面介绍的傅里叶变换的问题在于,无论是正弦/余弦回归模型形式还是复指数形式,它都需要 操作以计算所有傅里叶系数。有n 数据点和有n/2 可以计算傅里叶系数的

    2024年02月11日
    浏览(52)
  • 【数据挖掘】时间序列教程【四】

            我们可以对上述  的主模型采用方差分析方法,并将中的总变异分解为 为残差平方和和可归因于各种频率的变化。                 第二行是可能的,因为平方的所有交叉项都等于零,即对于所有 ,                                 

    2024年02月12日
    浏览(50)
  • 时间序列数据库 (TSDB)

    参考文档:时间序列数据库 TSDB_时间序列数据库 TSDB-阿里云帮助中心 时序数据是随时间不断产生的一系列数据,简单来说,就是带时间戳的数据。数据可能来自服务器和应用程序的指标、物联网传感器的读数、网站或应用程序上的用户交互或金融市场上的交易活动等。 时序

    2024年02月13日
    浏览(49)
  • 数据分析实战│时间序列预测

    时间序列预测问题是一类常见的数据分析问题。数据中往往包含时间标签,这类问题往往根据过去一段时间的数据,建立能够比较精确地反映序列中所包含的动态依存关系的数学模型,并对未来的数据进行预测。 本案例给出二战时期的某气象站温度记录值,通过分析之前的天

    2024年02月11日
    浏览(49)
  • 【数据挖掘】时间序列教程【九】

            状态空间模型通常试图描述具有两个特征的现象 有一个底层系统具有时变的动态关系,因此系统在时间上的“状态”t 与系统在时间的状态t−1有关 .如果我们知道系统在时间上的状态t−1 ,那么我们就有了 我们需要知道的一切 ,以便对当时的状态进行推断或预测

    2024年02月13日
    浏览(44)
  • 【数据挖掘】时间序列教程【十】

    上一节中描述的状态空间模型作为观测方程的更一般的公式            和状态方程                    这里是一个p×1 向量是一个k×1 向量,  是一个p×k 矩阵,  是k×k 矩阵。我们可以想到的和          给定初始状态 和 ,预测方程为(类似于上面)      

    2024年02月15日
    浏览(52)
  • 【数据挖掘】时间序列教程【八】

    我们先考虑一个简单的线性回归模型,                                          哪里 和是具有平均值的高斯过程 00 和自协方差 .现在,在不失去一般性的情况下,让我们假设 而那 瓦尔

    2024年02月12日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包