首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >一条 ES|QL 查询如何为 Elasticsearch 中的每个指标构建图表

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

原创
作者头像
点火三周
发布2026-09-04 11:17:45
发布2026-09-04 11:17:45
420
举报
文章被收录于专栏:Elastic Stack专栏Elastic Stack专栏

在 Kibana Discover 中输入 TS metrics-*,即可获得数据中每个指标的图表,且已使用正确的聚合和单位。无需字段名称,无需逐个指标设置。

METRICS_INFO 是一个 ES|QL 命令,它报告查询范围内存在哪些指标和时间序列,每行一个。Discover 在后台将其附加到你的查询中,根据该单次响应构建每个指标图表,并可按数据暴露的任何维度拆分这些图表。仪表取平均值,计数器使用 SUM(RATE()),直方图取百分位数。你无需知道某个指标需要哪种聚合。

有关设计及内部实现,包括逐序列的兄弟命令 TS_INFO,请参阅 METRICS_INFO 和 TS_INFO 深度解析

METRICS_INFO 返回什么

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

代码语言:sql
复制
TS metrics-* | METRICS_INFO

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

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 从中派生第二个请求。

例如,如果你运行:

代码语言:sql
复制
TS metrics-*| WHERE `cloud.provider` == "gcp" AND `cloud.region` == "us-central1"

Discover 在后台派生第二个请求:

代码语言:sql
复制
TS metrics-*| WHERE `cloud.provider` == "gcp" AND `cloud.region` == "us-central1"| METRICS_INFO

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

Kibana Discover 指标清单,每个指标由 ES|QL METRICS_INFO 返回一个图表面板
Kibana Discover 指标清单,每个指标由 ES|QL METRICS_INFO 返回一个图表面板

每个 METRICS_INFO 列控制什么

Discover 使用一个 METRICS_INFO 响应来生成清单中的所有图表。该响应告诉 Discover 要渲染哪些指标、在哪里找到其数据、如何聚合其值以及如何显示它们。

响应中的每个列都扮演特定角色:

列名

在清单中控制的内容

metric_name

渲染哪些指标面板

data_stream

每个面板从何处获取数据

metric_type

每个指标如何聚合

field_type

字段类型,例如 double、long

unit

如何格式化值

dimension_fields

哪些维度可用于过滤和拆分图表

哪些指标图表被渲染:metric_name

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

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

每个图表从何处获取数据:data_stream

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

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

例如:

代码语言:sql
复制
TS metrics-system.cpu-default| STATS AVG(system.cpu.user.pct) BY TBUCKET(100)

对于跨多个项目的搜索,独立查询每个数据流尤为重要。

当同一个 metric_name 出现在多个 data_stream 值时,Discover 会为每个流创建一个单独的面板。例如,在具有跨项目搜索的无服务器环境中,每个面板查询其自己的后端数据,并标识其代表的流。

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

Discover 有意区分面板。跨流合并结果可能掩盖它们之间的差异,而在跨项目或环境调查指标时,这些差异可能很重要。

Kibana Discover 指标显示同一指标的两个面板,每个数据流一个,并带有重复警告副标题
Kibana 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 重新运行 METRICS_INFO 并添加条件,例如 WHERE MV_CONTAINS(dimension_fields, "host.name"),移除不支持所选维度的指标。
  2. 拆分每个图表。Discover 将所选维度添加到每个图表 ES|QL 查询的 BY 子句中,为每个维度值生成一个序列。

例如:

代码语言:sql
复制
TS metrics-system.cpu-default| STATS AVG(system.cpu.user.pct)  BY TBUCKET(100), host.name

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

当你查询不同的数据流时,之前选择的、新流不暴露的任何维度将自动清除,因此每个图表的查询永远不会引用其中不存在的字段。

Kibana Discover 指标体验中的维度下拉菜单,按 host.name 过滤清单并拆分图表
Kibana Discover 指标体验中的维度下拉菜单,按 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 查询。
  • 将单个面板添加到仪表板。

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

请参阅文档,了解如何使用 Discover 探索指标数据(Kibana 中的 Discover 指标探索)。

报告问题

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • METRICS_INFO 返回什么
  • Discover 如何将 TS 查询转化为指标图表
  • 每个 METRICS_INFO 列控制什么
    • 哪些指标图表被渲染:metric_name
    • 每个图表从何处获取数据:data_stream
    • 计数器、仪表和直方图指标如何聚合:metric_type, field_type
    • 值如何显示:unit
    • 图表如何按维度过滤和拆分:dimension_fields
  • 在 Kibana Discover 中尝试
    • 步骤 1:摄入指标数据
    • 步骤 2:打开 Discover 并运行 TS 查询
    • 步骤 3:探索你的指标图表
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档