Skip to main content

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