如何通过一条 ES|QL 查询为 Elasticsearch 中的每个指标构建指标图表

作者:来自 Elastic Katerina Patticha

METRICS_INFO 会报告你的数据中有哪些指标,以及如何聚合每个指标,因此 Kibana Discover 可以正确地为计数器、仪表和直方图绘制图表,无需任何配置,也无需查找字段名称。

在 Kibana Discover 中输入 TS metrics-*,你就会获得数据中每个指标的图表,并且已经使用正确的聚合方式和单位。无需字段名称,也无需针对每个指标进行单独设置。

METRICS_INFO 是一个 ES|QL 命令,用于报告当前查询范围内存在哪些指标和时间序列,每个指标占一行。Discover 会在后台将它附加到你的查询中,根据这一次返回的结果构建每个指标的图表,并且可以按照你的数据所提供的任意维度拆分这些图表。仪表会计算平均值,计数器使用 SUM(RATE()),直方图则使用百分位数。你永远不需要知道某个指标需要使用哪种聚合方式。

有关设计和内部实现,包括按序列返回的兄弟命令 TS_INFO,请参阅 METRICS_INFO 和 TS_INFO 深入解析

METRICS_INFO 返回什么

METRICS_INFO 会检索你的时间序列数据流中可用指标的信息,以及适用的维度和其他元数据,所有这些信息都限定在当前 TS 查询的范围内。

go 复制代码
`TS metrics-* | METRICS_INFO`Lobster AI

你会得到一行,用于描述查询范围内的每个指标:

metric_name data_stream unit metric_type field_type dimension_fields
system.cpu.user.pct metrics-system.cpu-default percent gauge double [host.name, cloud.region]
activemq.broker.connections.count metrics-activemq.broker-default null counter long [activemq.broker.mbean,agent.id]

有关语法,请参阅 METRICS_INFO 命令。有关设计和内部实现,包括按序列返回的兄弟命令 TS_INFO,请参阅 METRICS_INFO 和 TS_INFO 深入解析

Discover 如何将 TS 查询转换为指标图表

Discover 提供了专门用于探索 指标数据 的体验。当它检测到 TS 查询时,会自动为你的数据中可用的指标构建图表清单。

你的原始查询保持不变,并继续按照通常的方式运行。在后台,Discover 会在原始查询后追加 | METRICS_INFO,由此生成第二个请求。

例如,如果你运行:

go 复制代码
``

1.  TS metrics-*
2.  | WHERE `cloud.provider` == "gcp" AND `cloud.region` == "us-central1"

``Lobster AI

Discover 会在后台生成第二个请求:

go 复制代码
``

1.  TS metrics-*
2.  | WHERE `cloud.provider` == "gcp" AND `cloud.region` == "us-central1"
3.  | METRICS_INFO

``Lobster AI

METRICS_INFO 的响应只会被解析一次,并成为 Discover 中专用指标体验的 数据源 。基于这个指标清单,Discover 可以生成图表,并提供搜索和筛选指标、按照维度拆分指标、查看每个图表背后的 ES|QL 查询,以及将指标添加到仪表板等功能。

每个 METRICS_INFO 列控制什么

Discover 使用一次 METRICS_INFO 响应来生成指标清单中的每个图表。该响应会告诉 Discover 要呈现哪些指标、在哪里找到这些指标的数据、如何聚合它们的值,以及如何显示这些值。

响应中的每一列都发挥着特定作用:

列名称 它在指标清单中控制的内容
metric_name 呈现哪些指标面板
data_stream 每个面板从哪里获取数据
metric_type 如何聚合每个指标
field_type 字段的类型,例如 doublelong
unit 如何格式化值
dimension_fields 哪些维度可用于筛选和拆分图表

呈现哪些指标图表:metric_name

METRICS_INFO 响应中的每个条目代表一个 Discover 可以进行 可视化 的指标。

Discover 会遍历解析后的响应,并为每个指标创建一个图表面板。因此,指标清单会直接反映响应中的内容。

每个图表从哪里获取数据:data_stream

每个图表都会独立查询自己的数据,即使所有指标元数据都来自同一个 METRICS_INFO 请求。

data_stream 值决定了用于构建图表 ES|QL 查询的数据源。

例如:

scss 复制代码
`

1.  TS metrics-system.cpu-default
2.  | STATS AVG(system.cpu.user.pct) BY TBUCKET(100)

`Lobster AI

对于跨越多个 项目 的搜索,分别查询每个数据流尤其重要。

当相同的 metric_name 出现在多个 data_stream 值中时,Discover 会为每个数据流创建一个单独的面板。例如,在支持跨项目搜索的无服务器环境中,每个面板都会查询自己的底层数据,并标识它所代表的数据流。

此指标存在于多个数据流中。此图表仅显示来自 metrics-system.cpu-default 的数据。

Discover 会有意将这些面板分开。将不同数据流中的结果 合并 可能会掩盖它们之间的差异,而这些差异在跨项目或跨环境调查指标时可能非常重要。

如何聚合计数器、仪表和直方图指标:metric_type、field_type

metric_type 告诉Lens 图表如何聚合指标,而 field_type 描述字段的类型。

目前支持三种指标类型:

metric_type 图表计算的内容 示例
gauge AVG(field),表示某个时间点的水平 CPU 使用率
counter SUM(RATE(field)),表示变化速率 每秒发送的字节数
histogram PERCENTILE(field, p),概括一个分布 p99 延迟

如何显示值:unit

unit 列控制 Y 轴上的值如何进行格式化。Lens 是每个面板背后的图表库,它负责应用格式化。

例如:

  • bytes1,024 显示为 1 KB

  • percent0.75 显示为 75%

  • 没有单位:显示原始值,不进行特定于单位的格式化。

如何按照维度筛选和拆分图表:dimension_fields

dimension_fields 列标识与每个指标关联的维度,例如 host.namecloud.regionservice.name

Discover 会将 METRICS_INFO 响应中的这些值合并起来,用于填充指标清单工具栏中的维度下拉菜单。

选择一个维度会通过两种方式影响指标清单:

  1. 它会筛选指标清单。 Discover 会使用类似 WHERE MV_CONTAINS(dimension_fields, "host.name") 的条件重新运行 METRICS_INFO,移除不支持所选维度的指标。

  2. 它会拆分每个图表。 Discover 会将所选维度添加到每个图表 ES|QL 查询的 BY 子句中,为每个维度值生成一个序列。

例如:

scss 复制代码
`

1.  TS metrics-system.cpu-default
2.  | STATS AVG(system.cpu.user.pct)
3.    BY TBUCKET(100), host.name

`Lobster AI

结果是一个图表,其中每个 host.name 都对应一个单独的序列,同时指标清单会确保只包含支持该维度的指标。

当你查询不同的数据流时,如果之前选择的某些维度并未由新的数据流提供,这些维度会被自动清除,因此每个图表的查询都不会引用在那里不存在的字段。

在 Kibana Discover 中试用

可视化你的指标无需任何配置、无需设置仪表板,也无需为每个指标编写查询。只需要一条 TS 查询即可。

步骤 1:摄取指标数据

如果你是从头开始,可以使用Prometheus Remote Write将 Prometheus 指标发送到 Elasticsearch。任何用于收集系统或应用程序指标的 Elastic 集成 都可以采用相同的方式。一旦数据进入由 TSDB 支持的 metrics-* 数据流,Discover 就会自动获取这些数据,无需进行任何额外设置。

步骤 2:打开 Discover 并运行 TS 查询

  1. 打开 Kibana -> Discover

  2. 切换到 ES|QL 模式。

  3. 输入 TS metrics-* 并运行查询。

步骤 3:探索你的指标图表

Discover 会自动构建指标清单。之后,你可以:

  • 按指标名称搜索指标,以缩小指标清单范围。

  • 从工具栏中选择一个维度,按照 host.namecloud.region 或你的数据所提供的任何维度拆分每个图表。

  • 点击图表面板,打开其背后的完整 ES|QL 查询。

  • 将单独的面板添加到仪表板。

你的指标可以立即进行探索,因此运行查询后,你就可以开始调查你的数据。

有关如何在 Kibana 中使用 Discover 探索指标数据,请参阅文档。

原文:How Kibana turns one ES|QL query into metrics charts | Elastic Observability Labs

相关推荐
Han.miracle1 天前
Elasticsearch深度分页问题完整解析
大数据·elasticsearch·搜索引擎
深海鱼肝油ya1 天前
向量数据库Elasticsearch(一)
人工智能·elasticsearch·向量数据库·es数据库增加索引·es数据库相似度查询·knn查询
大模型丫丫1 天前
工业级 RAG 为什么需要 Elasticsearch?
elasticsearch·django·jenkins
Sayai1 天前
Elasticsearch 9 安装验证实战:start-local 一键部署 + Docker 手动安装踩坑指南
大数据·elasticsearch·docker
瑞码空间2 天前
git知识点黄金笔记
笔记·git·elasticsearch
切糕师学AI2 天前
如何查看已合并到 master 分支的所有分支?Git 分支清理指南
大数据·git·elasticsearch
suaizai_2 天前
从1210条报错到全自动修复:AI闭环运维实战
大数据·elasticsearch·搜索引擎
Elastic 中国社区官方博客2 天前
不再有分配延迟:在无状态 Elasticsearch 中将快照与分片迁移解耦
大数据·运维·人工智能·elasticsearch·搜索引擎·全文检索
Elasticsearch2 天前
在 ES|QL 中引入 SPARKLINE:一眼看清趋势
elasticsearch