@Greptime: 我们刚刚发布了 promql-parser v0.9.0,这是一个用 Rust 编写的 PromQL 解析器。亮点:• 函数的声明式重构 • fill*…

X AI KOLs Following 工具

摘要

Greptime 发布了 promql-parser 0.9.0 版本,这是一款基于 Rust 的 PromQL 解析器,具有声明式函数重构功能,并支持 limit 函数。

我们刚刚发布了 promql-parser v0.9.0,这是一个用 Rust 编写的 PromQL 解析器。主要亮点:• 函数的声明式重构 • fill*() 二元运算符修饰符 • 用于 AST 遍历的可变访问者 trait • 支持 limitk 和 limit_ratio 详情:https://github.com/GreptimeTeam/promql-parser/releases/tag/v0.9.0… #PromQL #Rust
查看原文 导出为 Word 导出为 PDF
查看缓存全文

缓存时间: 2026/05/12 08:48

我们刚刚发布了 promql-parser v0.9.0,这是一个用 Rust 编写的 PromQL 解析器。亮点包括:• 函数的声明式重构 • fill*() 二元操作符修饰符 • 用于 AST 遍历的可变访问者 trait • 支持 limitk 和 limit_ratio 详情:https://github.com/GreptimeTeam/promql-parser/releases/tag/v0.9.0… #PromQL #Rust


GreptimeTeam/promql-parser

Source: https://github.com/GreptimeTeam/promql-parser

License (https://github.com/GreptimeTeam/promql-parser/blob/main/LICENSE) Build Status (https://github.com/GreptimeTeam/promql-parser/blob/main/.github/workflows/ci.yml) Version (https://crates.io/crates/promql-parser) codecov (https://app.codecov.io/gh/GreptimeTeam/promql-parser/tree/main)

PromQL 词法分析器和解析器

本项目的目标是构建一个 PromQL 词法分析器和解析器,能够解析符合 Prometheus 查询 规范的 PromQL。

示例

解析一个简单的瞬时向量选择器表达式:

`` rust use promql_parser::parser;

let promql = r#“ http_requests_total{ environment=~“staging|testing|development”, method!=“GET” } offset 5m “#;

match parser::parse(promql) { Ok(expr) => { println!(“Prettify:\n{}\n”, expr.prettify()); println!(“AST:\n{expr:?}”); } Err(info) => println!(“Err: {info:?}”), } ``

或者你可以直接运行本仓库下的示例:

shell cargo run --example parser

输出如下:

``rust Prettify: http_requests_total{environment=~“staging|testing|development”,method!=“GET”} offset 5m

AST: VectorSelector(VectorSelector { name: Some(“http_requests_total”), matchers: Matchers { matchers: [Matcher { op: Re(staging|testing|development), name: “environment”, value: “staging|testing|development” }, Matcher { op: NotEqual, name: “method”, value: “GET” }] }, offset: Some(Pos(300s)), at: None }) ``

PromQL 兼容性

本 crate 声明与 prometheus v3.8 兼容,该版本发布于 2025-11-28。此后对 PromQL 的任何修订均不保证兼容。

社区扩展

有许多社区项目扩展了 promql-parser 或提供了与其他系统的集成。

语言绑定

  • py-promql-parser (https://github.com/messense/py-promql-parser) Python。
  • lua-promql-parser (https://github.com/mtrbpr/lua-promql-parser) Lua。

已知使用情况

以下是一些已知使用 promql-parser 的项目:

  • GreptimeDB (https://github.com/GreptimeTeam/greptimedb) 开源云原生分布式时序数据库
  • OpenObserve (https://github.com/openobserve/openobserve) 高性能、PB 级 Elasticsearch/Splunk/Datadog 替代品,支持(日志、指标、链路追踪、RUM、错误追踪、会话回放)

如果你的项目正在使用 promql-parser,欢迎提交 PR 将其添加到列表中。

贡献

我们非常鼓励贡献!

针对 PromQL 功能增加支持或修复 bug 的 Pull Request 在审核后将很可能被接受。

许可

本仓库中的所有代码均遵循 Apache License 2.0

除非你明确声明其他内容,否则任何有意提交以包含在本作品中的贡献(如 Apache-2.0 许可中定义),均以上述许可提供,无任何附加条款或条件。

相似文章

Pyrefly v1.0 正式发布

Lobsters Hottest

Pyrefly,一款开源 Python 类型检查器和语言服务器,现已发布 v1.0,标志着其达到生产就绪状态,同时带来了显著的性能提升,并被 PyTorch 和 NumPy 等主要代码库所采用。