9 个版本
0.4.0 | 2024 年 5 月 20 日 |
---|---|
0.3.1 | 2023 年 11 月 10 日 |
0.3.0 | 2023 年 8 月 12 日 |
0.2.0 | 2023 年 7 月 21 日 |
0.1.0 | 2023 年 2 月 14 日 |
#166 在 解析器实现 中
每月 6,407 次下载
320KB
8K 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 特性支持或修复 PromQL 中错误的 pull requests。
许可
此仓库中的所有代码均根据 Apache License 2.0 许可。
除非您明确声明,否则您有意提交并包含在作品中的任何贡献,根据 Apache-2.0 许可,应按照上述条款和条件许可,不附加任何额外条款或条件。
依赖项
~5–14MB
~156K SLoC