2 个版本
0.1.1 | 2023年6月22日 |
---|---|
0.1.0 | 2023年6月19日 |
#1602 在 解析器实现
75KB
2K SLoC
promql-rs
使用 Rust 编写的 PromQL 解析器。
示例
最小使用示例
use promql_rs::parser;
fn main() {
let ast = parser::parse(r#"sum(rate(http_request_total{app="prometheus"}[5m])) by (host)"#);
println!("{:#?}", ast.unwrap());
}
这将产生以下输出
AggregateExpr(
AggregateExpr {
op: Sum,
expr: FunctionCall(
FunctionCall {
func: Function {
name: "rate",
arg_types: [
Matrix,
],
return_type: Vector,
},
args: [
MatrixSelector(
MatrixSelector {
vector_selector: VectorSelector(
VectorSelector {
metric: "http_request_total",
label_matchers: [
LabelMatcher {
op: Equal,
name: "app",
value: "prometheus",
},
],
original_offset: 0ns,
offset: 0ns,
at: None,
},
),
range: 300s,
},
),
],
},
),
param: None,
modifier: By(
[
"host",
],
),
},
)
待办事项
- 文档。
- 支持 VictoriaMetrics 扩展。
依赖项
~2.2–3MB
~58K SLoC