你的 PromQL 查询现在可以在 Kibana 中运行了

作者:来自 Elastic Miguel Sánchez,Vinay Chandrasekhar 及 Felix Barnsteiner

随着 PromQL 现在在 Kibana 中得到原生支持,你可以在 Discover 中编写并执行 PromQL,用于分析指标,也可以在 Dashboards 可视化、告警规则以及任何支持 ES|QL 的地方使用。PromQL 目前以技术预览(Tech Preview)形式提供,适用于常见的指标分析场景。

自 2012 年与 Prometheus 一起最初开发以来,PromQL 在过去十多年中一直是时序监控的基石。虽然 Kibana 已经通过 ES|QL TS 命令全面支持时序分析,但我们很高兴为常见的指标分析用例引入原生 PromQL 支持。对于已经熟悉 PromQL 的团队来说,这一支持意味着几乎零学习成本,并能显著降低直接接入 Elastic 生态的上手难度。

在 Kibana 中运行 PromQL 查询

在 Kibana 的 ES|QL 编辑器中,输入 PROMQL 命令,并在该代码块中编写你的 PromQL。PROMQL 会标记该片段,使 Elasticsearch 在 Kibana 发送的完整 ES|QL 请求中将其解析为 PromQL。

你可以查询的内容

以下是一些入门模式。

原始指标

go 复制代码
`PROMQL container.cpu.usage` AI写代码

所有容器的平均值

scss 复制代码
`PROMQL avg(container.cpu.usage)` AI写代码

对 counter 使用 rate()

scss 复制代码
`PROMQL rate(docker.network.inbound.bytes)` AI写代码

聚合速率(Aggregated rate)

python 复制代码
`PROMQL sum(rate(docker.network.inbound.bytes))` AI写代码

按 label 分组(Group by a label)

python 复制代码
`PROMQL sum by (agent.id) (rate(docker.network.inbound.bytes))` AI写代码

你可能会注意到,上述示例中没有在每个 rate() 中包含 start、end、step 或 lookback window。这些参数都是可选的:时间选择器和 Kibana 的默认设置会帮你处理大部分情况。

你也可以选择在 index= 参数中包含数据流名称。例如:PROMQL index=metrics-docker.cpu-default container.cpu.usage。添加该参数可以帮助缩小查询扫描的数据范围。

当前 PromQL 技术预览版本在覆盖率上已超过 80%,该指标基于对主流 Grafana dashboards 的基准测试。更高级的修饰符和特定函数正在考虑在未来版本中支持。

查找你的数据流和指标名称

如果你已有 PromQL 查询,可以直接在 PROMQL 命令中使用,无需修改。如果你是从头编写查询并需要查找准确的字段名称,可以在 Discover 中运行 TS metrics-* 来查看所有 metrics 数据流。每个 metric 会以小图表形式展示,方便你快速识别哪些是活跃的。将鼠标悬停在某个 metric 上,并点击 "View details" 操作,即可查看字段名称以及它所属的数据流。

更深入的讲解可以参考 Kibana 中使用 Discover 探索指标数据(在 Kibana 中使用 Discover 探索指标数据)。

时间选择器与查询时间处理

Kibana 中的时间选择器会设置查询的时间范围。Dashboard 面板和告警规则的处理方式相同,它们各自使用自己的时间范围,因此你不需要在查询中写 start= 或 end=。

step 是图表中两个连续数据点之间的间隔。step 越小,在相同时间跨度内数据点越多。如果不设置 step= 或 buckets=,默认值为 buckets=100。你可以将 step= 设置为固定宽度,例如 1m,或者使用 buckets= 来指定期望的最大数据点数量。

Discover 和 Dashboards

在 Discover 中,切换到 ES|QL 模式并运行你的 PROMQL 查询,这样你可以以时间序列图的形式查看指标在所选时间范围内的行为。当你想保存该可视化时,可以选择 "Save visualization to dashboard",并将其添加到新的或已有的 dashboard。

或者直接进入 Dashboards:添加一个 panel,选择 ES|QL,然后编写你的 PROMQL 查询。

告警(Alerting)

你可以使用 PromQL 创建告警规则。进入 Alerts,打开 Manage rules,然后创建一个规则。搜索 Elasticsearch query 并选择它,将查询类型设为 ES|QL。

编写你的 PromQL 查询,但需要将指标赋值给一个变量,这样你就可以在 WHERE 子句中用于告警条件:

python 复制代码
`

1.  PROMQL metric_value=(sum by (agent.id) (rate(docker.network.inbound.bytes)))
2.  | WHERE metric_value >= 500

`AI写代码

选择 @timestamp 作为时间字段,然后继续完成规则配置的其余部分。

试试看

  1. 在 Elastic Cloud Serverless 中打开一个 Observability 项目,或者使用 Elastic Stack 9.4。
  2. 编写你的查询:在 Kibana 的 ES|QL 编辑器中,通过 PROMQL 运行你的 PromQL。你也可以进入 Dashboards,添加一个 panel,选择 ES|QL,并在那里编写查询。
  3. 如果你是从头开始编写并需要查找 metric 名称,可以在 Discover 中运行 TS metrics-*(见上文 "查找你的数据流和指标名称")。
  4. 检查结果并根据需要调整查询。

Elasticsearch 和 Kibana 中的 PromQL 支持将持续演进。请关注 Observability Labs feed,以获取后续文章,了解覆盖范围和易用性改进。

原文:www.elastic.co/observabili...

相关推荐
Elasticsearch3 小时前
使用 Elastic Stack 丰富邮政地址信息 —— 第一部分
elasticsearch
ofoxcoding1 天前
借助 CLAUDE.md 约束 Sonnet 5.5 多文件重构行为的提示词实践
大数据·elasticsearch·ai·重构
Elasticsearch1 天前
隆重推出 AlertZero:让你的告警队列实现 “收件箱清零” 式管理
elasticsearch
ly76891 天前
从 TF-IDF 到 BM25:Elasticsearch 相关性评分的字段长度归一化与 boost 调参边界
java·elasticsearch·query dsl·bm25·相关性评分
SL-staff1 天前
技术实践:将Excel自动升级为可搜索的知识节点(JVS平台实现)
mongodb·elasticsearch·知识图谱·jvs平台·语义解析·企业文档管理·excel结构化
Elasticsearch1 天前
2026 年唯一获得端点预防与响应(EPR)满分的厂商是 Elastic
elasticsearch
vx_Biye_Design1 天前
springboot旅游管理系统18006-计算机课程设计、毕业设计
java·spring boot·后端·python·elasticsearch·django·课程设计
ly76892 天前
倒排索引与 FST 在 Lucene 中的内存布局:segment、docValues 与词典压缩的工程取舍
elasticsearch·lucene·倒排索引·doc values·fst
Elasticsearch2 天前
利用预计算上下文,更快速、更低成本地开展支持问题调查
elasticsearch
小小小米粒2 天前
重置本地git
大数据·git·elasticsearch