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

news2024/12/22 19:52:57

作者:Nicolas Ruflin

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 开始就可以使用,并且会在集成升级时自动出现在我们越来越多的集成中。 你会注意到的是更低的存储使用量和更快的查询。 开心!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/494242.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ES6-Class类

ES6 提供了更接近传统语言的写法,引入了 Class (类)这个概念,作为对 象的模板。通过 class 关键字,可以定义类。基本上, ES6 的 class 可以看作只是 一个语法糖,它的绝大部分功能&…

低代码开发重要工具:jvs-logic逻辑引擎的循环处理配置

循环操作是我们常常所见的业务处理方式,那么我们需要如何配置循环操作呢,我们接下来先看个简单的例子, 如下图所示,在一个列表页上,有个表级按钮,这个按钮是将本列表页的所有 “数量” 都 1 配置的思路通…

PostgreSQL+repmgr高可用部署

REPMGR 是一套在PostgreSQL服务器集群中用于管理复制和故障转移的开源工具 。它支持并增强了PostgreSQL的 内置流式复制,提供单个读/写主服务器 以及一个或多个只读备用数据库,其中包含主数据库的近实时副本服务器的数据库。 它提供了两个主要工具&#…

配电室设备监测怎么办?管理高手都是这样做的!

随着智能电网的不断推进,供配电安全也逐渐进入人们的视野,传统人工巡检的方式与当前智能化配电室的建设显得格格不入。 配电室,作为分配多路低压负荷开关的重要节点,其安全系数不言而喻,在管理和监控方面需要慎之又慎。…

数据结构初阶--链表OJ

目录 前言移除链表元素思路分析代码实现 链表的中间节点思路分析代码实现 反转链表思路分析代码实现 链表分割思路分析代码实现 合并两个有序链表思路分析代码实现 前言 本篇文章将对部分单链表的OJ题进行讲解 移除链表元素 我们先来看题 思路分析 我们可以采用双指针的方…

测试常见概念

文章目录 需求测试用例BUG软件生命周期开发模型scrum测试模型 需求 需求的概念:满足用户期望或正式规定文档(合同、标准、规范)所具有的条件和权能,包含用户需求和软件需求 用户需求:可以简单理解为甲方提出的需求,如果没有甲方&…

java错题总结(19-21页)

链接:关于Java中的ClassLoader下面的哪些描述是错误的_用友笔试题_牛客网 来源:牛客网 B:先讲一下双亲委派机制,简单来说,就是加载一个类的时候,会往上找他的父类加载器,父类加载器找它的父类加…

Netty(1)

Netty 文章目录 Netty1 Netty 基本介绍2 why Netty2.1 原生 NIO 问题2.2 Netty 优点 3 I/O 线程模型3.1 传统阻塞 I/O 模型3.2 Reactor 模式3.2.1 Reactor 模式解决传统 I/O 方案3.2.2 Reactor 模式原理图3.2.3 Reactor 的核心组件3.2.4 单 Readcot 单线程(NIO模型)3.2.5 单 Re…

非科班转码,春招总结!

作者:阿秀 校招八股文学习网站:https://interviewguide.cn 这是阿秀的第「263」篇原创 小伙伴们大家好,我是阿秀。 欢迎今年参加秋招的小伙伴加入阿秀的学习圈,目前已经超过 2300 小伙伴加入!去年认真准备和走下来的基…

Twitter 推荐算法底有多牛? 已斩获11.7K star

点击上方“Github中文社区”,关注 看Github,每天提升第070期分享 ,作者:Huber | Github中文社区 大家好,我是Huber。 在美国当地时间 3 月 31 日,马斯克履行当初的诺言,他宣布了 Twitter 算法的…

《编程思维与实践》1048.解密字符串

《编程思维与实践》1048.解密字符串 题目 思路 主要到密码是升序的,所以先将每个数字对应的个数求出,之后升序排列输出即可得到结果. 求每个数字(0-9)对应的个数可以考虑每个英文单词中特有的字符(出现单次), zero,one,two,three,four,five,six,seven,eight,nine; 下面提供其中…

系统性能压力测试

系统性能压力测试 一、压力测试 压力测试是给软件不断加压,强制其在极限的情况下运行,观察它可以运行到何种程度,从而发现性能缺陷,是通过搭建与实际环境相似的测试环境,通过测试程序在同一时间内或某一段时间内&…

深度学习—卷积神经网络

卷积神经网络 传统意义上的多层神经网络只有输入层、隐藏层和输出层。其中隐藏层的层数根据需要而定,没有明确的理论推导来说明到底多少层合适。 卷积神经网络CNN,在原来多层神经网络的基础上,加入了更加有效的特征学习部分,具…

人生四维度

人生四维度 不是有钱了就成功,你知道;人生的成功不止一种,你也知道。但成功还有哪种?你知道吗? 如果把人生的体验展开,我们可以得到四个维度,高度、深度、宽度和温度。 财富、权力、影响力 构…

2023年3月股份行GX评测盘点:招商银行稳居榜首,各项指标均居前列

易观:2023 年3月GX评测数据显示,招商银行、平安口袋银行、中信银行位居行业Top 10,浦发银行、兴业银行、光大银行紧跟其后。 股份行APP 用户体验:招商银行以绝对优势稳居第一 2023年3月股份行GX评测结果数据显示,在操作…

VScode代码编辑器官网下载慢问题解决方法-亲测有效

VScode官网下载慢的问题如何解决? 问题描述: VisualStudioCode(简称VSCode)是Microsoft开发的一款功能强大的代码编辑器,它支持Windows,Linux和macOS等操作系统以及开源代码,因此被很多开发人…

maven从入门到精通 第四章 Maven中依赖的传递、排除、继承、聚合

这里写自定义目录标题 一 maven中依赖的传递1 依赖的传递性2 使用complie范围依赖spring-core3 测试依赖是否被传递4 依赖传递性的意义 二 maven中依赖的排除1 依赖排除概述2 具体操作依赖排除 三 maven中依赖的继承四 maven中依赖的聚合 一 maven中依赖的传递 1 依赖的传递性…

thinkphp+vue+html超市零食品美食推荐系统零食购物商城网站7v281

本系统的开发使获取食品推荐系统信息能够更加方便快捷,同时也使食品推荐系统管理信息变的更加系统化、有序化。系统界面较友好,易于操作 运行环境:phpstudy/wamp/xammp等 开发语言:php 后端框架:Thinkphp5 前端框架:vu…

Linux入门2(常用命令)

Linux入门2 Linux常用命令快捷键基础命令文件查看命令文件编辑命令进程管理命令用户管理命令 Linux常用命令 快捷键 Ctrl Alt T打开终端 Ctrl shift 加号 终端字体放大 ctrl 减号 终端字体缩小 基础命令 sudo su 进入管理员目录 exit 返回到用户目录 ls 当前目录下的文…

数据导向下制造业的生产效率、交易效率提升办法

在智能制造和工业4.0成为趋势的今天,大部分制造业企业,均已在企业内部通过实施PLM系统(Product Lifecycle Management,产品生命周期管理系统),实现了对组织内产品研发过程和产品研发数据的管理,…