A PromQL parser written in Rust.
The minimal usage example:
use promql_rs::parser;
fn main() {
let ast = parser::parse(r#"sum(rate(http_request_total{app="prometheus"}[5m])) by (host)"#);
println!("{:#?}", ast.unwrap());
}
This will produce the following output:
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",
],
),
},
)
- Documentations.
- Support VictoriaMetrics extensions.