2 个版本

0.1.1 2023年6月22日
0.1.0 2023年6月19日

#1602解析器实现

MIT/Apache

75KB
2K SLoC

Rust 2K SLoC // 0.0% comments Pest 234 SLoC // 0.0% comments

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