Module selector

Module selector 

Source
Expand description

Vector and matrix selector parsing for PromQL.

Selectors are the fundamental way to query time series data in PromQL.

§Vector Selectors (Instant Vectors)

A vector selector selects a set of time series with a single sample value for each at the current timestamp.

metric_name
metric_name{label_matchers}
{label_matchers}

§Matrix Selectors (Range Vectors)

A matrix selector extends a vector selector with a time range, selecting multiple samples per time series.

metric_name[5m]
metric_name{label="value"}[1h]

§Label Matchers

OperatorDescriptionExample
=Exact equalityjob="prometheus"
!=Not equalenv!="prod"
=~Regex matchpath=~"/api/.*"
!~Regex not matchstatus!~"5.."

§Modifiers

Selectors can have optional modifiers:

  • offset: Shift the time range back: metric offset 5m
  • @: Pin to a specific timestamp: metric @ 1609459200

§Examples

use rusty_promql_parser::parser::selector::{vector_selector, matrix_selector};

// Simple vector selector
let (_, sel) = vector_selector("http_requests_total").unwrap();
assert_eq!(sel.name, Some("http_requests_total".to_string()));

// With label matchers
let (_, sel) = vector_selector(r#"http_requests{job="api"}"#).unwrap();
assert_eq!(sel.matchers.len(), 1);

// Matrix selector with range
let (_, sel) = matrix_selector("http_requests[5m]").unwrap();
assert_eq!(sel.range_millis(), 5 * 60 * 1000);

Structs§

LabelMatcher
A single label matcher.
MatrixSelector
A matrix selector expression (range vector).
VectorSelector
A vector selector expression (instant vector).

Enums§

AtModifier
The @ modifier for timestamp pinning.
LabelMatchOp
Label matching operator.

Functions§

at_modifier
Parse the @ modifier: @ <timestamp>, @ start(), @ end()
base_vector_selector
Parse a vector selector without offset modifier. This is used internally by matrix_selector which handles offset after the range.
label_matchers
Parse label matchers inside braces: {label="value", ...}
matrix_selector
Parse a matrix selector (range vector)
offset_modifier
Parse an offset modifier: offset 5m, offset -1h
vector_selector
Parse a vector selector