1 个不稳定版本
0.3.1 | 2024 年 5 月 7 日 |
---|
#6 在 #promql
315KB
7.5K SLoC
promql 解析器和词法分析器
本项目目标是构建一个能够解析符合 Prometheus 查询 的 PromQL 词法分析器和解析器。
示例
要解析一个简单的即时向量选择表达式
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:?}"),
}
或者您可以直接运行此仓库下的示例
cargo run --example parser
这将输出
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 兼容性
此软件包声称为与 prometheus v2.45.0 兼容,该版本于 2023 年 6 月 23 日发布。此后对 PromQL 的任何修订均不可保证。
社区扩展
有许多社区项目扩展了 promql-parser 或与其他系统提供集成。
语言绑定
- py-promql-parser 此软件包的 Python 绑定。
已知用途
以下是一些已知使用 promql-parser 的项目
- GreptimeDB 开源和云原生分布式时序数据库
如果您正在使用 promql-parser 的项目,请随意提交 PR 以将其添加到此列表中。
贡献
鼓励贡献!
经审查后,可能会接受添加 PromQL 功能支持或修复功能中 bug 的 pull request。
许可
本仓库中所有代码均根据 Apache 许可证 2.0 许可。
除非您明确声明,否则您提交的任何有意包含在本作品中的贡献,根据 Apache-2.0 许可证定义,应按上述方式许可,不附加任何额外条款或条件。
依赖项
~5–14MB
~160K SLoC