在 Elastic Observability 中轻松探索和分析指标

44 阅读6分钟

作者:来自 Elastic Vinay Chandrasekhar

对 ES|QL 和基于 Discover 的指标探索的最新增强,为快速高效的指标分析释放了一套强大的工具。

指标在识别 “是什么” 方面至关重要

作为可观测性的核心支柱,指标提供了一个高度结构化、量化的系统性能与健康状况视图。它们提供了关键的症状性视角 —— 揭示正在发生的事情,例如应用程序延迟过高、服务错误增加或容器 CPU 使用率激增,这对于启动告警和分诊工作至关重要。这种有效监控、告警和分诊的能力,对于确保稳定的服务交付和实现成功的业务成果至关重要。

Elastic Observability 为指标数据提供了全面的端到端体验。Elastic 确保可以从众多来源收集指标数据,根据需要进行丰富化,并传输到 Elastic Stack。Elastic 通过 TSDS 索引模式(Time Series Data Stream)高效地存储这些时间序列数据,包括高基数指标,该模式在早期版本中引入,并广泛用于 Elastic 的时间序列集成中。这个基础通过开箱即用的仪表板、告警、SLO 和简化的数据管理,确保了全面的可观测性。

Elastic Observability 9.2 通过强大的查询语言扩展和扩展的 UI 功能,增强了指标探索与分析。这些增强旨在让基于 TSDS 数据的分析(通过计数器速率和常见的时间聚合)比以往更简单、更快速。

主要的指标增强围绕以下关键功能展开,并以技术预览(Tech Preview)的形式提供:

  • 使用 TSDS 和 ES|QL 的指标分析

  • 在 Discover 中的交互式指标探索

  • 用于指标的 OTLP 端点

使用 TSDS 和 ES|QL 进行指标分析

在 TSDS 指标上引入新的 ES|QL(Elasticsearch Query Language)中 TS 源命令,大大简化了时间序列分析。

TS 命令专为时间序列索引而设计,与通用的 FROM 命令不同。它的核心优势在于能在 STATS 命令中启用一套专用的时间序列聚合函数。

这种机制采用了标准的双层聚合范式,是时间序列查询的常见模式。这类查询涉及两个聚合函数:

  • 内部(时间序列)函数:隐式地对每个时间序列进行计算,通常基于分桶的时间间隔。

  • 外部(常规)函数:用于聚合内部函数的结果。例如:

    `STATS SUM(RATE(search_requests)) BY TBUCKET(1 hour), host` AI写代码
    

    这里 RATE() 是应用在每个时间序列的每小时桶上的内部函数,而 SUM() 是外部函数,用于对每个主机及每小时桶的速率进行求和。

如果一个使用 TS 命令的 ES|QL 查询没有显式指定内部(时间序列)聚合函数,系统会隐式地使用 LAST_OVER_TIME()
例如:

`TS metrics | STATS AVG(memory_usage)` AI写代码

等价于

`TS metrics | STATS AVG(LAST_OVER_TIME(memory_usage))` AI写代码

在 ES|QL 中通过 TS 命令可用的关键时间序列聚合函数

这些函数可对时间序列数据进行强大的分析:

函数描述示例用例
RATE() / IRATE()计算计数器每秒平均增长率(RATE),考虑计数器重置等非单调中断,或仅计算最后两个数据点间的每秒增长率(IRATE),以实现高响应性。计算每秒请求数(RPS)或吞吐量。
AVG_OVER_TIME()计算指定时间范围内数值字段的平均值。确定一小时内的平均资源使用量。
SUM_OVER_TIME()计算指定时间范围内字段的总和。统计特定时间窗口内的错误总数。
MAX_OVER_TIME() / MIN_OVER_TIME()计算字段在时间范围内的最大值或最小值。识别峰值资源消耗。
DELTA() / IDELTA()计算指标字段在时间窗口内的绝对变化(DELTA),或仅在最后两个数据点间的变化(IDELTA),IDELTA对最近变化更敏感。跟踪系统指标(如缓冲区大小)的变化。
INCREASE()计算计数器的绝对增长量。分析快速变化计数器的即时速率变化。
FIRST_OVER_TIME() / LAST_OVER_TIME()计算字段最早或最新记录的值(基于 @timestamp 字段)。查看桶内指标的初始和最终状态。
ABSENT_OVER_TIME() / PRESENT_OVER_TIME()计算字段在结果中在时间范围内的缺失或存在情况。识别监控覆盖的空白。
COUNT_OVER_TIME() / COUNT_DISTINCT_OVER_TIME()计算字段在时间范围内的总计数或不同值的计数。测量频率或基数变化。

这些函数通过 TS 命令提供,使 SRE 和运维团队能够轻松执行速率计算及其他常用聚合,从而将高效的指标分析作为可观察性工作流的日常操作。而且速度更快!内部性能测试显示,TS 命令在查询指标数据时的性能比其他方法高一个数量级或更多,而且表现稳定!

Discover 中的交互式指标探索

9.2 版本引入了在 Discover 界面中直接交互式探索和分析指标的能力。除了探索和分析日志及原始事件外,Discover 现在提供了专门的指标探索环境:

  • 轻松开始:只需查询通过 TS metrics-* 导入的指标即可开始探索。

  • 网格视图和预应用聚合:该命令以网格格式展示所有指标,并根据指标类型立即应用适当聚合,例如速率或平均值。

  • 搜索和分组:可快速按名称搜索特定指标,也可按维度(标签)或具体值分组分析指标,从而聚焦所选指标和维度进行目标分析。

  • 快速访问详细信息:界面提供关键详情访问,包括查询与响应详情、底层 ES|QL 命令、指标字段类型及适用维度等。

  • 轻松调整与仪表盘:系统会自动生成 ES|QL 查询,方便对数据进行调整和切片分析。分析完成后,指标及分析结果可以轻松添加到新的或现有的仪表盘中。

指标的 OTLP 端点

我们还推出了一个原生 OpenTelemetry Protocol (OTLP) 端点,用于将指标直接导入 Elasticsearch。该端点尤其对自建客户有利,并将集成到 Elastic Cloud 管理的 OTLP 端点中,用于 Elastic 托管产品。原生端点及相关更新提升了 OTel 指标的导入性能和可扩展性,通过 _otlp 方法吞吐量可提升至 60%,使用经典 _bulk 方法吞吐量可提升至 25%。

总结

通过将 ES|QL 新的时间序列聚合功能与熟悉的 Discover 交互体验结合,Elastic 9.2 提供了一套强大的指标分析工具。这些工具显著提升了任何可观察性工作流中的指标探索和分析阶段。而我们才刚刚开始释放 Elastic Observability 中指标的全部潜力!

欢迎今天就试用这些新功能

还可以在 Observability Labs 了解我们如何为 AWS、Azure、GCP、Kubernetes 和 LLM 提供指标分析。

原文:www.elastic.co/observabili…