5 个稳定版本
1.0.5 | 2024年5月22日 |
---|---|
1.0.3 | 2024年5月14日 |
1.0.2 | 2024年5月11日 |
1.0.0 | 2024年5月7日 |
#882 in 解析器实现
320KB
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 兼容性
此 crate 声明与 prometheus v2.45.0 兼容,该版本于 2023-06-23 发布。此提交之后的任何 PromQL 修订版都不保证兼容。
社区扩展
有多个社区项目扩展了 promql-parser 或提供了与其他系统的集成。
语言绑定
- py-promql-parser 此 crate 的 Python 绑定。
已知用途
以下是一些已知使用 promql-parser 的项目
- GreptimeDB 开源 & 云原生分布式时序数据库
如果您的项目正在使用 promql-parser,请随时提交 PR 将其添加到此列表。
贡献
非常欢迎贡献!
经过审查后,可能接受添加对 PromQL 功能支持或修复其错误的 pull request。
许可
本仓库中的所有代码均根据 Apache License 2.0 许可。
除非您明确表示,否则您有意提交以包含在本工作中的任何贡献,根据 Apache-2.0 许可,应按上述方式许可,不附加任何其他条款或条件。
依赖关系
~5–14MB
~160K SLoC