作者:来自 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 查询的范围内。
`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,由此生成第二个请求。
例如,如果你运行:
``
1. TS metrics-*
2. | WHERE `cloud.provider` == "gcp" AND `cloud.region` == "us-central1"
``Lobster AI
Discover 会在后台生成第二个请求:
``
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 | 字段的类型,例如 double、long |
unit | 如何格式化值 |
dimension_fields | 哪些维度可用于筛选和拆分图表 |
呈现哪些指标图表:metric_name
METRICS_INFO 响应中的每个条目代表一个 Discover 可以进行 可视化 的指标。
Discover 会遍历解析后的响应,并为每个指标创建一个图表面板。因此,指标清单会直接反映响应中的内容。
每个图表从哪里获取数据:data_stream
每个图表都会独立查询自己的数据,即使所有指标元数据都来自同一个 METRICS_INFO 请求。
data_stream 值决定了用于构建图表 ES|QL 查询的数据源。
例如:
`
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 是每个面板背后的图表库,它负责应用格式化。
例如:
-
bytes:1,024显示为1 KB。 -
percent:0.75显示为75%。 -
没有单位:显示原始值,不进行特定于单位的格式化。
如何按照维度筛选和拆分图表:dimension_fields
dimension_fields 列标识与每个指标关联的维度,例如 host.name、cloud.region 或 service.name。
Discover 会将 METRICS_INFO 响应中的这些值合并起来,用于填充指标清单工具栏中的维度下拉菜单。
选择一个维度会通过两种方式影响指标清单:
-
它会筛选指标清单。 Discover 会使用类似
WHERE MV_CONTAINS(dimension_fields, "host.name")的条件重新运行METRICS_INFO,移除不支持所选维度的指标。 -
它会拆分每个图表。 Discover 会将所选维度添加到每个图表 ES|QL 查询的
BY子句中,为每个维度值生成一个序列。
例如:
`
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 查询
-
打开 Kibana -> Discover。
-
切换到 ES|QL 模式。
-
输入
TS metrics-*并运行查询。
步骤 3:探索你的指标图表
Discover 会自动构建指标清单。之后,你可以:
-
按指标名称搜索指标,以缩小指标清单范围。
-
从工具栏中选择一个维度,按照
host.name、cloud.region或你的数据所提供的任何维度拆分每个图表。 -
点击图表面板,打开其背后的完整 ES|QL 查询。
-
将单独的面板添加到仪表板。
你的指标可以立即进行探索,因此运行查询后,你就可以开始调查你的数据。
有关如何在 Kibana 中使用 Discover 探索指标数据,请参阅文档。
原文:How Kibana turns one ES|QL query into metrics charts | Elastic Observability Labs