From 979ec41f91bb43ee2da214530f26df96244ce503 Mon Sep 17 00:00:00 2001 From: Zeying Zhu <50204836+zzylol@users.noreply.github.com> Date: Mon, 12 Oct 2026 19:29:20 +0000 Subject: [PATCH] Detect distribution drift against each series' recent windows The detector keeps each quantile series' last N KLL windows, merges them as the baseline and computes the Kolmogorov-Smirnov distance of the current window from it (CDF = rank/count over both windows' percentiles). Above the threshold (0.1) the series has drifted; start and end are logged as events. exact_detector runs the same test on the exact values. Adds the drift scenario (one route's median triples at minute 10) and dashboard. --- asap-precompute-rs/src/answers.rs | 141 ++++ asap-precompute-rs/src/otap/answer_nodes.rs | 72 +- asap-precompute-rs/src/otap/baseline_nodes.rs | 54 +- deploy/telemetry-functions/drift/branch.yaml | 40 + .../telemetry-functions/drift/detector.yaml | 38 + .../drift/exact-branch.yaml | 34 + .../drift/exact-detector.yaml | 38 + .../drift/generator-a.yaml | 37 + .../drift/generator-b.yaml | 37 + deploy/telemetry-functions/drift/merge.yaml | 33 + .../grafana/dashboards/drift.json | 710 ++++++++++++++++++ deploy/telemetry-functions/run.sh | 2 +- docs/images/drift-grafana.png | Bin 0 -> 113797 bytes 13 files changed, 1227 insertions(+), 9 deletions(-) create mode 100644 deploy/telemetry-functions/drift/branch.yaml create mode 100644 deploy/telemetry-functions/drift/detector.yaml create mode 100644 deploy/telemetry-functions/drift/exact-branch.yaml create mode 100644 deploy/telemetry-functions/drift/exact-detector.yaml create mode 100644 deploy/telemetry-functions/drift/generator-a.yaml create mode 100644 deploy/telemetry-functions/drift/generator-b.yaml create mode 100644 deploy/telemetry-functions/drift/merge.yaml create mode 100644 deploy/telemetry-functions/grafana/dashboards/drift.json create mode 100644 docs/images/drift-grafana.png diff --git a/asap-precompute-rs/src/answers.rs b/asap-precompute-rs/src/answers.rs index 7d70f13..91f7fcf 100644 --- a/asap-precompute-rs/src/answers.rs +++ b/asap-precompute-rs/src/answers.rs @@ -257,10 +257,151 @@ pub fn exact_answers( out } +/// Thresholds for [`DriftTracker`]. +#[derive(Clone, Debug, serde::Deserialize)] +#[serde(deny_unknown_fields)] +pub struct DriftRules { + /// Windows merged into the baseline. + #[serde(default = "default_drift_baseline")] + pub baseline_windows: usize, + /// Kolmogorov-Smirnov distance above which a series has drifted. + #[serde(default = "default_ks")] + pub ks_threshold: f64, + /// Points needed in the current window before testing. + #[serde(default = "default_drift_points")] + pub min_points: u64, +} + +fn default_drift_baseline() -> usize { + 5 +} +fn default_ks() -> f64 { + 0.1 +} +fn default_drift_points() -> u64 { + 1000 +} + +impl Default for DriftRules { + fn default() -> Self { + Self { + baseline_windows: default_drift_baseline(), + ks_threshold: default_ks(), + min_points: default_drift_points(), + } + } +} + +/// Largest gap between two CDFs over the points `xs` (Kolmogorov-Smirnov). +pub fn ks_distance(current: impl Fn(f64) -> f64, baseline: impl Fn(f64) -> f64, xs: &[f64]) -> f64 { + xs.iter() + .map(|&x| (current(x) - baseline(x)).abs()) + .fold(0.0, f64::max) +} + +/// Turns each window's KS distance into a drift gauge and an event when a +/// series starts or stops drifting. Sketch and exact use the same rules. +#[derive(Default)] +pub struct DriftTracker { + /// Thresholds. + pub rules: DriftRules, + drifting: HashMap, +} + +impl DriftTracker { + /// Tracker with the given thresholds. + pub fn new(rules: DriftRules) -> Self { + Self { + rules, + drifting: HashMap::new(), + } + } + + /// Records one window's distance from its baseline. + pub fn observe( + &mut self, + template: &SketchEnvelope, + method: &str, + ks: f64, + baseline_p50: f64, + current_p50: f64, + ) -> (Vec, Option) { + let drift = ks > self.rules.ks_threshold; + let out = vec![ + gauge(template, "asap.drift.ks", method, &[], ks), + gauge( + template, + "asap.drift", + method, + &[], + if drift { 1.0 } else { 0.0 }, + ), + ]; + let key = format!("{}|{:?}", template.metric_name, template.labels); + let previous = self.drifting.insert(key, drift); + let series = template + .labels + .iter() + .map(|kv| format!("{}={}", kv.key, kv.value)) + .collect::>() + .join(","); + let event = (previous.unwrap_or(false) != drift).then(|| Event { + window_end_ms: template.window_end_ms, + method: method.into(), + kind: "drift".into(), + attributes: template + .labels + .iter() + .cloned() + .chain([ + KeyValue::new("drift", drift.to_string()), + KeyValue::new("ks", format!("{ks:.3}")), + ]) + .collect(), + body: if drift { + format!( + "{} {{{series}}} drifted from its baseline: KS distance {ks:.3}, median {baseline_p50:.1} -> {current_p50:.1}", + template.metric_name + ) + } else { + format!( + "{} {{{series}}} is back within its baseline: KS distance {ks:.3}", + template.metric_name + ) + }, + }); + (out, event) + } +} + #[cfg(test)] mod classifier_tests { use super::*; + #[test] + fn ks_and_drift_events() { + let uniform = |x: f64| x.clamp(0.0, 1.0); + let shifted = |x: f64| (x - 0.3).clamp(0.0, 1.0); + let xs: Vec = (0..=100).map(|i| i as f64 / 100.0).collect(); + let ks = ks_distance(shifted, uniform, &xs); + assert!((ks - 0.3).abs() < 1e-9, "{ks}"); + let mut t = DriftTracker::default(); + let s = SketchEnvelope { + metric_name: "m".into(), + ..Default::default() + }; + assert!(t.observe(&s, "sketch", 0.02, 1.0, 1.0).1.is_none()); + let (out, event) = t.observe(&s, "sketch", 0.3, 1.0, 2.0); + assert_eq!(out[1].value, 1.0); + assert!(event.unwrap().body.contains("drifted")); + assert!(t + .observe(&s, "sketch", 0.03, 1.0, 1.0) + .1 + .unwrap() + .body + .contains("back")); + } + fn attr(key: &str) -> SketchEnvelope { SketchEnvelope { metric_name: "m".into(), diff --git a/asap-precompute-rs/src/otap/answer_nodes.rs b/asap-precompute-rs/src/otap/answer_nodes.rs index dde6f56..741e969 100644 --- a/asap-precompute-rs/src/otap/answer_nodes.rs +++ b/asap-precompute-rs/src/otap/answer_nodes.rs @@ -43,9 +43,16 @@ use otel_arrow_dfe_pdata::proto::OtlpProtoMessage; use otel_arrow_dfe_pdata::OtapPayload; use super::codec::decode_pdata_to_observations; -use crate::answers::{sketch_answers, CardinalityClassifier, CardinalityRules, Event}; +use crate::answers::{ + ks_distance, sketch_answers, CardinalityClassifier, CardinalityRules, DriftRules, DriftTracker, + Event, +}; use crate::envelope::SketchEnvelope; +use crate::envelope::SketchType; use crate::observation::{KeyValue, Observation}; +use crate::precompute::QuantileSketch; +use crate::sketches::KLLWrapper; +use std::collections::{HashMap, VecDeque}; /// Registered URN of the sketch detector. pub const SKETCH_DETECTOR_URN: &str = "urn:asap:processor:sketch_detector"; @@ -76,6 +83,9 @@ pub struct DetectorConfig { /// Thresholds for classifying per-attribute cardinality. #[serde(default)] pub cardinality: CardinalityRules, + /// Thresholds for distribution drift of quantile series. + #[serde(default)] + pub drift: DriftRules, } pub(super) fn now_ms() -> u64 { @@ -218,11 +228,6 @@ pub(super) async fn emit( Ok(()) } -/// Identity of a series across windows: metric and labels. -pub(super) fn series_key(env: &SketchEnvelope) -> String { - format!("{}|{:?}", env.metric_name, env.labels) -} - pub(super) async fn observations( pdata: OtapPdata, effects: &mut local::EffectHandler, @@ -241,6 +246,54 @@ pub(super) async fn observations( struct SketchDetector { config: DetectorConfig, cardinality: CardinalityClassifier, + drift: DriftTracker, + /// Recent KLL windows per series, the drift baseline. + baselines: HashMap>, +} + +pub(super) fn series_key(env: &SketchEnvelope) -> String { + format!("{}|{:?}", env.metric_name, env.labels) +} + +/// Percentile grid of both distributions: where their CDFs are compared. +fn grid(a: &dyn QuantileSketch, b: &dyn QuantileSketch) -> Vec { + (1..100) + .flat_map(|i| [a.quantile(i as f64 / 100.0), b.quantile(i as f64 / 100.0)]) + .collect() +} + +impl SketchDetector { + /// KS distance of this KLL window from the merge of the previous ones. + fn drift(&mut self, env: &SketchEnvelope) -> (Vec, Option) { + let Ok(current) = KLLWrapper::from_snapshot(&env.payload) else { + return (Vec::new(), None); + }; + let window = self.baselines.entry(series_key(env)).or_default(); + let mut result = (Vec::new(), None); + if window.len() >= 3 && env.count >= self.drift.rules.min_points { + let mut baseline = KLLWrapper::new(current.inner().k() as i32, None); + for w in window.iter() { + let _ = crate::precompute::Sketch::merge(&mut baseline, w); + } + fn cdf(s: &KLLWrapper) -> impl Fn(f64) -> f64 + '_ { + let n = s.inner().count().max(1) as f64; + move |x| s.inner().rank(x) as f64 / n + } + let ks = ks_distance(cdf(¤t), cdf(&baseline), &grid(¤t, &baseline)); + result = self.drift.observe( + env, + "sketch", + ks, + baseline.quantile(0.5), + current.quantile(0.5), + ); + } + window.push_back(current); + if window.len() > self.drift.rules.baseline_windows { + window.pop_front(); + } + result + } } /// The `bound="estimate"` value of `metric` among `answers`. @@ -275,6 +328,11 @@ impl local::Processor for SketchDetector { }; match sketch_answers(&env, &self.config.quantiles, self.config.k) { Ok(answers) => { + if env.sketch_type == SketchType::KLLSketch { + let (gauges, event) = self.drift(&env); + out.extend(gauges); + events.extend(event); + } if let Some(d) = estimate_of(&answers, "asap.distinct") { let (gauges, event) = self.cardinality.observe(&env, "sketch", d, env.count); @@ -310,6 +368,8 @@ static SKETCH_DETECTOR: ProcessorFactory = ProcessorFactory { Ok(ProcessorWrapper::local( SketchDetector { cardinality: CardinalityClassifier::new(config.cardinality.clone()), + drift: DriftTracker::new(config.drift.clone()), + baselines: HashMap::new(), config, }, node, diff --git a/asap-precompute-rs/src/otap/baseline_nodes.rs b/asap-precompute-rs/src/otap/baseline_nodes.rs index 625a399..3b8525a 100644 --- a/asap-precompute-rs/src/otap/baseline_nodes.rs +++ b/asap-precompute-rs/src/otap/baseline_nodes.rs @@ -32,7 +32,7 @@ //! outputs: [logs, latency] //! config: {window: 60s, grace: 5s} //! ``` -use std::collections::{BTreeMap, HashMap}; +use std::collections::{BTreeMap, HashMap, VecDeque}; use std::sync::Arc; use std::time::Duration; @@ -70,7 +70,8 @@ use super::answer_nodes::{ }; use super::codec::OtapSketchEncoder; use crate::answers::{ - exact_answers, gauge, CardinalityClassifier, CardinalityRules, Event, ExactWindow, + exact_answers, gauge, ks_distance, CardinalityClassifier, CardinalityRules, DriftRules, + DriftTracker, Event, ExactWindow, }; use crate::envelope::{SketchEnvelope, SketchType}; use crate::matchers::ATTRIBUTE_KEY_LABEL; @@ -131,6 +132,9 @@ pub struct ExactDetectorConfig { /// Thresholds for classifying per-attribute cardinality. #[serde(default)] pub cardinality: CardinalityRules, + /// Thresholds for distribution drift of quantile series. + #[serde(default)] + pub drift: DriftRules, } /// `raw_sink` configuration. @@ -358,6 +362,9 @@ impl local::Processor for ExactMerge { struct ExactDetector { config: ExactDetectorConfig, cardinality: CardinalityClassifier, + drift: DriftTracker, + /// Recent windows' sorted values per quantile series. + baselines: HashMap>>, } impl ExactDetector { @@ -384,8 +391,47 @@ impl ExactDetector { &self.config.quantiles, self.config.k, )); + if !w.values.is_empty() { + // exact_answers left the values sorted. + let (gauges, event) = self.drift(&template, std::mem::take(&mut w.values)); + out.extend(gauges); + events.extend(event); + } (out, events) } + + /// Exact KS distance of a window's sorted values from the previous windows. + fn drift( + &mut self, + template: &SketchEnvelope, + sorted: Vec, + ) -> (Vec, Option) { + let window = self.baselines.entry(series_key(template)).or_default(); + let mut result = (Vec::new(), None); + if window.len() >= 3 && sorted.len() as u64 >= self.drift.rules.min_points { + let mut baseline: Vec = window.iter().flatten().copied().collect(); + baseline.sort_unstable_by(f64::total_cmp); + let cdf = |v: &[f64], x: f64| v.partition_point(|&y| y <= x) as f64 / v.len() as f64; + let at = |v: &[f64], q: f64| v[((v.len() - 1) as f64 * q).round() as usize]; + let xs: Vec = (1..100) + .flat_map(|i| { + [ + at(&sorted, i as f64 / 100.0), + at(&baseline, i as f64 / 100.0), + ] + }) + .collect(); + let ks = ks_distance(|x| cdf(&sorted, x), |x| cdf(&baseline, x), &xs); + result = + self.drift + .observe(template, "exact", ks, at(&baseline, 0.5), at(&sorted, 0.5)); + } + window.push_back(sorted); + if window.len() > self.drift.rules.baseline_windows { + window.pop_front(); + } + result + } } #[async_trait(?Send)] @@ -714,6 +760,8 @@ static EXACT_DETECTOR: ProcessorFactory = ProcessorFactory { Ok(ProcessorWrapper::local( ExactDetector { cardinality: CardinalityClassifier::new(config.cardinality.clone()), + drift: DriftTracker::new(config.drift.clone()), + baselines: HashMap::new(), config, }, node, @@ -846,6 +894,8 @@ mod tests { serde_json::from_value(serde_json::json!({"k": 2})).unwrap(); let mut detector = ExactDetector { cardinality: CardinalityClassifier::new(config.cardinality.clone()), + drift: DriftTracker::new(config.drift.clone()), + baselines: HashMap::new(), config, }; let out: Vec<_> = merged diff --git a/deploy/telemetry-functions/drift/branch.yaml b/deploy/telemetry-functions/drift/branch.yaml new file mode 100644 index 0000000..8d2d148 --- /dev/null +++ b/deploy/telemetry-functions/drift/branch.yaml @@ -0,0 +1,40 @@ +# Sketch pipeline, stage 1 at each source: one KLL per route per 1-minute +# window goes to merge. +version: otel_dataflow/v1 +engine: + http_admin: + bind_address: 0.0.0.0:8085 +policies: + resources: + core_allocation: + type: core_count + count: 1 +groups: + default: + pipelines: + main: + nodes: + receiver: + type: receiver:otlp + config: + protocols: + http: {listening_addr: "0.0.0.0:4318", wait_for_result: false} + sketch: + type: urn:asap:processor:asap_sketches + config: + sketch_type: kll + window_size: 60s + output_metric_name: http.server.request.duration + aggregate_by: [http.route] + omit_resource_attrs: true + sketch_params: {k: 200} + to_merge: + type: exporter:otlp_http + config: + endpoint: http://merge:4318 + client_pool_size: 1 + max_in_flight: 1 + http: {timeout: 30s, compression: none} + connections: + - {from: receiver, to: sketch} + - {from: sketch, to: to_merge} diff --git a/deploy/telemetry-functions/drift/detector.yaml b/deploy/telemetry-functions/drift/detector.yaml new file mode 100644 index 0000000..0ebd8fe --- /dev/null +++ b/deploy/telemetry-functions/drift/detector.yaml @@ -0,0 +1,38 @@ +# Quantiles with bounds, and each route's KS distance from its last 5 windows, +# to Prometheus; drift start/end as events to Loki. +version: otel_dataflow/v1 +engine: + http_admin: + bind_address: 0.0.0.0:8085 +policies: + resources: + core_allocation: + type: core_count + count: 1 +groups: + default: + pipelines: + main: + nodes: + receiver: + type: receiver:otlp + config: + protocols: + http: {listening_addr: "0.0.0.0:4318", wait_for_result: false} + detector: + type: urn:asap:processor:sketch_detector + config: + quantiles: [0.5, 0.99] + drift: {baseline_windows: 5, ks_threshold: 0.1} + to_prometheus: + type: exporter:otlp_http + config: + endpoint: http://prometheus:9090 + metrics_endpoint: http://prometheus:9090/api/v1/otlp/v1/metrics + logs_endpoint: http://loki:3100/otlp/v1/logs + client_pool_size: 1 + max_in_flight: 1 + http: {timeout: 30s, compression: none} + connections: + - {from: receiver, to: detector} + - {from: detector, to: to_prometheus} diff --git a/deploy/telemetry-functions/drift/exact-branch.yaml b/deploy/telemetry-functions/drift/exact-branch.yaml new file mode 100644 index 0000000..a061d73 --- /dev/null +++ b/deploy/telemetry-functions/drift/exact-branch.yaml @@ -0,0 +1,34 @@ +# Exact pipeline, stage 1 at each source: every value per route per 1-minute window +# goes to exact-merge. +version: otel_dataflow/v1 +engine: + http_admin: + bind_address: 0.0.0.0:8085 +policies: + resources: + core_allocation: + type: core_count + count: 1 +groups: + default: + pipelines: + main: + nodes: + receiver: + type: receiver:otlp + config: + protocols: + http: {listening_addr: "0.0.0.0:4318", wait_for_result: false} + branch: + type: urn:asap:processor:exact_branch + config: {window: 60s, group_by: [http.route]} + to_merge: + type: exporter:otlp_http + config: + endpoint: http://exact-merge:4318 + client_pool_size: 1 + max_in_flight: 1 + http: {timeout: 30s, compression: none} + connections: + - {from: receiver, to: branch} + - {from: branch, to: to_merge} diff --git a/deploy/telemetry-functions/drift/exact-detector.yaml b/deploy/telemetry-functions/drift/exact-detector.yaml new file mode 100644 index 0000000..f66ebcd --- /dev/null +++ b/deploy/telemetry-functions/drift/exact-detector.yaml @@ -0,0 +1,38 @@ +# Exact pipeline, end: exact answers and events of each merged window, the +# ground truth (method="exact"). +version: otel_dataflow/v1 +engine: + http_admin: + bind_address: 0.0.0.0:8085 +policies: + resources: + core_allocation: + type: core_count + count: 1 +groups: + default: + pipelines: + main: + nodes: + receiver: + type: receiver:otlp + config: + protocols: + http: {listening_addr: "0.0.0.0:4318", wait_for_result: false, max_request_body_size: 1GiB} + detector: + type: urn:asap:processor:exact_detector + config: + quantiles: [0.5, 0.99] + drift: {baseline_windows: 5, ks_threshold: 0.1} + to_prometheus: + type: exporter:otlp_http + config: + endpoint: http://prometheus:9090 + metrics_endpoint: http://prometheus:9090/api/v1/otlp/v1/metrics + logs_endpoint: http://loki:3100/otlp/v1/logs + client_pool_size: 1 + max_in_flight: 1 + http: {timeout: 30s, compression: none} + connections: + - {from: receiver, to: detector} + - {from: detector, to: to_prometheus} diff --git a/deploy/telemetry-functions/drift/generator-a.yaml b/deploy/telemetry-functions/drift/generator-a.yaml new file mode 100644 index 0000000..c6895c1 --- /dev/null +++ b/deploy/telemetry-functions/drift/generator-a.yaml @@ -0,0 +1,37 @@ +# Source a: latency over 20 routes; route-3's median triples after 10 minutes. +version: otel_dataflow/v1 +engine: + http_admin: + bind_address: 0.0.0.0:8085 +policies: + resources: + core_allocation: + type: core_count + count: 1 +groups: + default: + pipelines: + main: + nodes: + generator: + type: urn:asap:receiver:scenario_generator + config: + seed: 1 + signals_per_second: 20000 + metric_name: http.server.request.duration + resource_attributes: {service.name: checkout, source: "a"} + attributes: + - {key: http.route, cardinality: 20, zipf: 1.1} + value: {lognormal: {median: 50.0, sigma: 0.6}} + changes: + - {after_seconds: 600, attribute: http.route, equals: http.route-3, + value: {lognormal: {median: 150.0, sigma: 0.6}}} + export: + type: exporter:otlp_http + config: + endpoint: http://downstream:4318 + client_pool_size: 1 + max_in_flight: 1 + http: {timeout: 30s, compression: none} + connections: + - {from: generator, to: export} diff --git a/deploy/telemetry-functions/drift/generator-b.yaml b/deploy/telemetry-functions/drift/generator-b.yaml new file mode 100644 index 0000000..0d50d01 --- /dev/null +++ b/deploy/telemetry-functions/drift/generator-b.yaml @@ -0,0 +1,37 @@ +# Source b: latency over 20 routes; route-3's median triples after 10 minutes. +version: otel_dataflow/v1 +engine: + http_admin: + bind_address: 0.0.0.0:8085 +policies: + resources: + core_allocation: + type: core_count + count: 1 +groups: + default: + pipelines: + main: + nodes: + generator: + type: urn:asap:receiver:scenario_generator + config: + seed: 2 + signals_per_second: 20000 + metric_name: http.server.request.duration + resource_attributes: {service.name: checkout, source: "b"} + attributes: + - {key: http.route, cardinality: 20, zipf: 1.1} + value: {lognormal: {median: 50.0, sigma: 0.6}} + changes: + - {after_seconds: 600, attribute: http.route, equals: http.route-3, + value: {lognormal: {median: 150.0, sigma: 0.6}}} + export: + type: exporter:otlp_http + config: + endpoint: http://downstream:4318 + client_pool_size: 1 + max_in_flight: 1 + http: {timeout: 30s, compression: none} + connections: + - {from: generator, to: export} diff --git a/deploy/telemetry-functions/drift/merge.yaml b/deploy/telemetry-functions/drift/merge.yaml new file mode 100644 index 0000000..cb392f2 --- /dev/null +++ b/deploy/telemetry-functions/drift/merge.yaml @@ -0,0 +1,33 @@ +# Stage 2: merge every source's sketch for a window, 5 s after it ends. +version: otel_dataflow/v1 +engine: + http_admin: + bind_address: 0.0.0.0:8085 +policies: + resources: + core_allocation: + type: core_count + count: 1 +groups: + default: + pipelines: + main: + nodes: + receiver: + type: receiver:otlp + config: + protocols: + http: {listening_addr: "0.0.0.0:4318", wait_for_result: false} + merge: + type: urn:asap:processor:window_merge + config: {grace: 5s} + to_detector: + type: exporter:otlp_http + config: + endpoint: http://detector:4318 + client_pool_size: 1 + max_in_flight: 1 + http: {timeout: 30s, compression: none} + connections: + - {from: receiver, to: merge} + - {from: merge, to: to_detector} diff --git a/deploy/telemetry-functions/grafana/dashboards/drift.json b/deploy/telemetry-functions/grafana/dashboards/drift.json new file mode 100644 index 0000000..d561c44 --- /dev/null +++ b/deploy/telemetry-functions/grafana/dashboards/drift.json @@ -0,0 +1,710 @@ +{ + "uid": "asap-drift", + "title": "Latency drift: sketch vs exact (real collector containers)", + "schemaVersion": 39, + "version": 1, + "refresh": "10s", + "time": { + "from": "now-30m", + "to": "now" + }, + "templating": { + "list": [ + { + "name": "route", + "type": "query", + "datasource": { + "type": "prometheus", + "uid": "asap-prometheus" + }, + "query": { + "query": "label_values(asap_quantile, http_route)", + "refId": "route" + }, + "refresh": 2, + "current": { + "text": "http.route-3", + "value": "http.route-3" + } + } + ] + }, + "panels": [ + { + "type": "text", + "title": "Pipeline", + "description": "Three pipelines that share no processor, fed identical points by their own generators (same seed and scenario start). Each box is one collector container pinned to its own CPU; arrows are OTLP/HTTP between containers.", + "gridPos": { + "h": 10, + "w": 24, + "x": 0, + "y": 0 + }, + "options": { + "mode": "html", + "content": "
generator-a/b
sources A and B
→
branch-a/b
Stage 1 per source: KLL (k = 200) per route per 1-min window
→
merge
Stage 2: merges both sources' sketches per window
→
detector
KS distance vs last 5 windows; drift events
→
Prometheus + Loki
method="sketch"
exact-generator-a/b
same points
→
exact-branch-a/b
Stage 1 per source: every value per route per 1-min window
→
exact-merge
Stage 2: adds both sources' exact windows
→
exact-detector
exact KS distance; drift events
→
Prometheus + Loki
method="exact" (ground truth)
raw-generator-a/b
same points
→
raw-branch-a/b
Stage 1 per source: forwards every raw point
→
raw-merge
Stage 2: forwards both sources' raw points
→
raw-sink
writes every raw point; measures when the window's last point is stored
→
loki-raw
one log record per raw point
" + }, + "id": 1 + }, + { + "type": "timeseries", + "title": "KS distance from the baseline (last 5 windows), every route: sketch solid, exact dashed", + "datasource": { + "type": "prometheus", + "uid": "asap-prometheus" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 10 + }, + "targets": [ + { + "refId": "A", + "expr": "asap_drift_ks{method=\"sketch\"}", + "legendFormat": "{{http_route}} sketch" + }, + { + "refId": "B", + "expr": "asap_drift_ks{method=\"exact\"}", + "legendFormat": "{{http_route}} exact" + } + ], + "fieldConfig": { + "defaults": { + "custom": { + "spanNulls": true + }, + "min": 0 + }, + "overrides": [ + { + "matcher": { + "id": "byRegexp", + "options": ".* exact" + }, + "properties": [ + { + "id": "custom.lineStyle", + "value": { + "fill": "dash", + "dash": [ + 6, + 4 + ] + } + } + ] + } + ] + }, + "id": 2 + }, + { + "type": "logs", + "title": "Drift events (Loki)", + "datasource": { + "type": "loki", + "uid": "asap-loki" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 10 + }, + "targets": [ + { + "refId": "A", + "expr": "{service_name=\"asap-detector\"} | event_kind=\"drift\"" + } + ], + "options": { + "showTime": true, + "wrapLogMessage": true, + "sortOrder": "Descending" + }, + "id": 3 + }, + { + "id": 4, + "type": "timeseries", + "title": "p99 latency for $route: sketch with bound vs exact", + "datasource": { + "type": "prometheus", + "uid": "asap-prometheus" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 18 + }, + "targets": [ + { + "refId": "A", + "expr": "asap_quantile{quantile=\"0.99\",http_route=\"$route\",method=\"sketch\",bound=\"estimate\"}", + "legendFormat": "sketch" + }, + { + "refId": "B", + "expr": "asap_quantile{quantile=\"0.99\",http_route=\"$route\",method=\"sketch\",bound=\"lower\"}", + "legendFormat": "sketch lower" + }, + { + "refId": "C", + "expr": "asap_quantile{quantile=\"0.99\",http_route=\"$route\",method=\"sketch\",bound=\"upper\"}", + "legendFormat": "sketch upper" + }, + { + "refId": "D", + "expr": "asap_quantile{quantile=\"0.99\",http_route=\"$route\",method=\"exact\"}", + "legendFormat": "exact" + } + ], + "fieldConfig": { + "defaults": { + "custom": { + "spanNulls": true + }, + "unit": "ms" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "sketch upper" + }, + "properties": [ + { + "id": "custom.fillBelowTo", + "value": "sketch lower" + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.fillOpacity", + "value": 20 + }, + { + "id": "color", + "value": { + "mode": "fixed", + "fixedColor": "blue" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "sketch lower" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "color", + "value": { + "mode": "fixed", + "fixedColor": "blue" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "sketch" + }, + "properties": [ + { + "id": "color", + "value": { + "mode": "fixed", + "fixedColor": "blue" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "exact" + }, + "properties": [ + { + "id": "color", + "value": { + "mode": "fixed", + "fixedColor": "orange" + } + }, + { + "id": "custom.lineStyle", + "value": { + "fill": "dash", + "dash": [ + 6, + 4 + ] + } + } + ] + } + ] + } + }, + { + "id": 5, + "type": "timeseries", + "title": "p50 latency for $route: sketch with bound vs exact", + "datasource": { + "type": "prometheus", + "uid": "asap-prometheus" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 18 + }, + "targets": [ + { + "refId": "A", + "expr": "asap_quantile{quantile=\"0.5\",http_route=\"$route\",method=\"sketch\",bound=\"estimate\"}", + "legendFormat": "sketch" + }, + { + "refId": "B", + "expr": "asap_quantile{quantile=\"0.5\",http_route=\"$route\",method=\"sketch\",bound=\"lower\"}", + "legendFormat": "sketch lower" + }, + { + "refId": "C", + "expr": "asap_quantile{quantile=\"0.5\",http_route=\"$route\",method=\"sketch\",bound=\"upper\"}", + "legendFormat": "sketch upper" + }, + { + "refId": "D", + "expr": "asap_quantile{quantile=\"0.5\",http_route=\"$route\",method=\"exact\"}", + "legendFormat": "exact" + } + ], + "fieldConfig": { + "defaults": { + "custom": { + "spanNulls": true + }, + "unit": "ms" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "sketch upper" + }, + "properties": [ + { + "id": "custom.fillBelowTo", + "value": "sketch lower" + }, + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "custom.fillOpacity", + "value": 20 + }, + { + "id": "color", + "value": { + "mode": "fixed", + "fixedColor": "blue" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "sketch lower" + }, + "properties": [ + { + "id": "custom.lineWidth", + "value": 0 + }, + { + "id": "color", + "value": { + "mode": "fixed", + "fixedColor": "blue" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "sketch" + }, + "properties": [ + { + "id": "color", + "value": { + "mode": "fixed", + "fixedColor": "blue" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "exact" + }, + "properties": [ + { + "id": "color", + "value": { + "mode": "fixed", + "fixedColor": "orange" + } + }, + { + "id": "custom.lineStyle", + "value": { + "fill": "dash", + "dash": [ + 6, + 4 + ] + } + } + ] + } + ] + } + }, + { + "type": "timeseries", + "title": "Window completion delay: seconds from a window's end until its result is complete", + "datasource": { + "type": "prometheus", + "uid": "asap-prometheus" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 26 + }, + "targets": [ + { + "refId": "A", + "expr": "avg by (method) (asap_answer_delay)", + "legendFormat": "{{method}}" + } + ], + "fieldConfig": { + "defaults": { + "custom": { + "spanNulls": true + }, + "unit": "s" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "sketch" + }, + "properties": [ + { + "id": "color", + "value": { + "mode": "fixed", + "fixedColor": "#5794f2" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "exact" + }, + "properties": [ + { + "id": "color", + "value": { + "mode": "fixed", + "fixedColor": "#ff9830" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "raw" + }, + "properties": [ + { + "id": "color", + "value": { + "mode": "fixed", + "fixedColor": "#8e8e8e" + } + } + ] + } + ] + }, + "description": "sketch and exact: the detector has emitted the window's answers. raw: loki-raw has acknowledged the window's last raw point.", + "id": 6 + }, + { + "type": "timeseries", + "title": "CPU cores per pipeline (all stages but the generators)", + "datasource": { + "type": "prometheus", + "uid": "asap-prometheus" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 26 + }, + "targets": [ + { + "refId": "A", + "expr": "sum by (pipeline) (label_replace(label_replace(rate(cpu_time_total{job=\"collectors\",stage!~\".*generator.*\",otel_scope_pipeline_id=\"main\"}[1m]), \"pipeline\", \"sketch\", \"stage\", \".*\"), \"pipeline\", \"$1\", \"stage\", \"(exact|raw)-.*\"))", + "legendFormat": "{{pipeline}}" + } + ], + "fieldConfig": { + "defaults": { + "custom": { + "spanNulls": true + }, + "unit": "short" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "sketch" + }, + "properties": [ + { + "id": "color", + "value": { + "mode": "fixed", + "fixedColor": "#5794f2" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "exact" + }, + "properties": [ + { + "id": "color", + "value": { + "mode": "fixed", + "fixedColor": "#ff9830" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "raw" + }, + "properties": [ + { + "id": "color", + "value": { + "mode": "fixed", + "fixedColor": "#8e8e8e" + } + } + ] + } + ] + }, + "id": 7 + }, + { + "type": "timeseries", + "title": "Bytes received per pipeline (all stages but the generators), log scale", + "datasource": { + "type": "prometheus", + "uid": "asap-prometheus" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 34 + }, + "targets": [ + { + "refId": "A", + "expr": "sum by (pipeline) (label_replace(label_replace(rate(payload_size_bytes_total{job=\"collectors\",stage!~\".*generator.*\",otel_scope_node_type=\"receiver\"}[1m]), \"pipeline\", \"sketch\", \"stage\", \".*\"), \"pipeline\", \"$1\", \"stage\", \"(exact|raw)-.*\")) * 8", + "legendFormat": "{{pipeline}}" + } + ], + "fieldConfig": { + "defaults": { + "custom": { + "spanNulls": true, + "scaleDistribution": { + "type": "log", + "log": 10 + } + }, + "unit": "bps" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "sketch" + }, + "properties": [ + { + "id": "color", + "value": { + "mode": "fixed", + "fixedColor": "#5794f2" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "exact" + }, + "properties": [ + { + "id": "color", + "value": { + "mode": "fixed", + "fixedColor": "#ff9830" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "raw" + }, + "properties": [ + { + "id": "color", + "value": { + "mode": "fixed", + "fixedColor": "#8e8e8e" + } + } + ] + } + ] + }, + "id": 8 + }, + { + "type": "timeseries", + "title": "Resident memory per pipeline (all stages but the generators)", + "datasource": { + "type": "prometheus", + "uid": "asap-prometheus" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 34 + }, + "targets": [ + { + "refId": "A", + "expr": "sum by (pipeline) (label_replace(label_replace(max by (stage) (memory_rss{job=\"collectors\",stage!~\".*generator.*\"}), \"pipeline\", \"sketch\", \"stage\", \".*\"), \"pipeline\", \"$1\", \"stage\", \"(exact|raw)-.*\"))", + "legendFormat": "{{pipeline}}" + } + ], + "fieldConfig": { + "defaults": { + "custom": { + "spanNulls": true + }, + "unit": "bytes" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "sketch" + }, + "properties": [ + { + "id": "color", + "value": { + "mode": "fixed", + "fixedColor": "#5794f2" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "exact" + }, + "properties": [ + { + "id": "color", + "value": { + "mode": "fixed", + "fixedColor": "#ff9830" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "raw" + }, + "properties": [ + { + "id": "color", + "value": { + "mode": "fixed", + "fixedColor": "#8e8e8e" + } + } + ] + } + ] + }, + "id": 9 + } + ] +} diff --git a/deploy/telemetry-functions/run.sh b/deploy/telemetry-functions/run.sh index 1323597..59bd0d4 100755 --- a/deploy/telemetry-functions/run.sh +++ b/deploy/telemetry-functions/run.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # Build asap-collector, package it, and start every stage plus the observers. -# USE_CASE=latency (default) or cardinality picks the scenario. +# USE_CASE=latency (default), cardinality, drift or topk picks the scenario. # DOCKER_COMMAND="sudo -n docker" when Docker needs sudo. Stop with: # $DOCKER_COMMAND compose -f deploy/telemetry-functions/compose.yaml down set -euo pipefail diff --git a/docs/images/drift-grafana.png b/docs/images/drift-grafana.png new file mode 100644 index 0000000000000000000000000000000000000000..d403f140c62d7b2c751373c98dd08c4c23ee46aa GIT binary patch literal 113797 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\RN2ED8;(Y-~`i6 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