From 4e854e6044d19e5e0fdd6f0e13e5060e87fe5b96 Mon Sep 17 00:00:00 2001 From: Zeying Zhu <50204836+zzylol@users.noreply.github.com> Date: Mon, 12 Oct 2026 19:29:43 +0000 Subject: [PATCH] Flag new heavy hitters: keys that enter the top-k The detector and exact_detector remember each series' top-k keys over the last N windows; a key in the current top-k that none of them held is new, emitted as asap.topk.new and as an OTLP log event. Adds the top-k scenario (100,000 Zipf routes, Count-Min 4 x 512; a new route takes 15% of traffic at minute 10) and its dashboard. --- asap-precompute-rs/src/answers.rs | 113 +++- asap-precompute-rs/src/otap/answer_nodes.rs | 19 +- asap-precompute-rs/src/otap/baseline_nodes.rs | 28 +- .../grafana/dashboards/topk.json | 556 ++++++++++++++++++ deploy/telemetry-functions/topk/branch.yaml | 40 ++ deploy/telemetry-functions/topk/detector.yaml | 36 ++ .../topk/exact-branch.yaml | 34 ++ .../topk/exact-detector.yaml | 36 ++ .../telemetry-functions/topk/generator-a.yaml | 36 ++ .../telemetry-functions/topk/generator-b.yaml | 36 ++ deploy/telemetry-functions/topk/merge.yaml | 33 ++ docs/images/topk-novelty-grafana.png | Bin 0 -> 106230 bytes 12 files changed, 954 insertions(+), 13 deletions(-) create mode 100644 deploy/telemetry-functions/grafana/dashboards/topk.json create mode 100644 deploy/telemetry-functions/topk/branch.yaml create mode 100644 deploy/telemetry-functions/topk/detector.yaml create mode 100644 deploy/telemetry-functions/topk/exact-branch.yaml create mode 100644 deploy/telemetry-functions/topk/exact-detector.yaml create mode 100644 deploy/telemetry-functions/topk/generator-a.yaml create mode 100644 deploy/telemetry-functions/topk/generator-b.yaml create mode 100644 deploy/telemetry-functions/topk/merge.yaml create mode 100644 docs/images/topk-novelty-grafana.png diff --git a/asap-precompute-rs/src/answers.rs b/asap-precompute-rs/src/answers.rs index 91f7fcf..e8a6300 100644 --- a/asap-precompute-rs/src/answers.rs +++ b/asap-precompute-rs/src/answers.rs @@ -20,7 +20,7 @@ //! q ± error. //! * Count-Min: counts never underestimate; with width w and N points the //! overestimate is at most e/w * N with probability 1 - e^-depth. -use std::collections::HashMap; +use std::collections::{HashMap, HashSet}; use crate::envelope::{SketchEnvelope, SketchType}; use crate::observation::KeyValue; @@ -374,10 +374,121 @@ impl DriftTracker { } } +/// The `(key, count)` of every `asap.topk` estimate in `answers`, by rank. +pub fn topk_of(answers: &[SketchEnvelope]) -> Vec<(String, f64)> { + let label = |e: &SketchEnvelope, k: &str| { + e.labels + .iter() + .find(|kv| kv.key == k) + .map(|kv| kv.value.clone()) + }; + let mut top: Vec<(u32, String, f64)> = answers + .iter() + .filter(|e| { + e.metric_name == "asap.topk" && label(e, "bound").as_deref() == Some("estimate") + }) + .filter_map(|e| Some((label(e, "rank")?.parse().ok()?, label(e, "key")?, e.value))) + .collect(); + top.sort_by_key(|t| t.0); + top.into_iter().map(|(_, k, v)| (k, v)).collect() +} + +/// Flags heavy hitters that were not among the top keys of the previous +/// windows. Sketch and exact use the same rule. +#[derive(Default)] +pub struct NoveltyTracker { + /// Windows whose top keys form the baseline. + pub baseline_windows: usize, + history: HashMap>>, +} + +impl NoveltyTracker { + /// Tracker remembering `baseline_windows` windows. + pub fn new(baseline_windows: usize) -> Self { + Self { + baseline_windows, + history: HashMap::new(), + } + } + + /// New heavy hitters in this window's `top` (key, count), as gauges and events. + pub fn observe( + &mut self, + template: &SketchEnvelope, + method: &str, + top: &[(String, f64)], + ) -> (Vec, Vec) { + let key = format!("{}|{:?}", template.metric_name, template.labels); + let window = self.history.entry(key).or_default(); + let (mut out, mut events) = (Vec::new(), Vec::new()); + if window.len() >= 3 { + let attribute = template + .labels + .iter() + .find(|kv| kv.key == crate::matchers::ATTRIBUTE_KEY_LABEL) + .map(|kv| kv.value.clone()) + .unwrap_or_default(); + for (rank, (k, count)) in top.iter().enumerate() { + if window.iter().any(|seen| seen.contains(k)) { + continue; + } + out.push(gauge( + template, + "asap.topk.new", + method, + &[("key", k.clone())], + *count, + )); + events.push(Event { + window_end_ms: template.window_end_ms, + method: method.into(), + kind: "novelty".into(), + attributes: vec![ + KeyValue::new("attribute.key", attribute.clone()), + KeyValue::new("key", k.clone()), + KeyValue::new("rank", (rank + 1).to_string()), + KeyValue::new("count", format!("{count:.0}")), + ], + body: format!( + "new heavy hitter {attribute}={k}: rank {} with {count:.0} points, absent from the top {} of the previous {} windows", + rank + 1, + top.len(), + window.len() + ), + }); + } + } + window.push_back(top.iter().map(|(k, _)| k.clone()).collect()); + if window.len() > self.baseline_windows { + window.pop_front(); + } + (out, events) + } +} + #[cfg(test)] mod classifier_tests { use super::*; + #[test] + fn novelty_after_three_windows() { + let mut t = NoveltyTracker::new(5); + let s = SketchEnvelope { + metric_name: "m".into(), + ..Default::default() + }; + let usual = vec![("a".to_string(), 10.0), ("b".to_string(), 5.0)]; + for _ in 0..3 { + assert!(t.observe(&s, "sketch", &usual).1.is_empty()); + } + let now = vec![("new".to_string(), 20.0), ("a".to_string(), 10.0)]; + let (out, events) = t.observe(&s, "sketch", &now); + assert_eq!(out.len(), 1); + assert!(events[0].body.contains("new heavy hitter =new: rank 1")); + // The next window, the key is part of the baseline. + assert!(t.observe(&s, "sketch", &now).1.is_empty()); + } + #[test] fn ks_and_drift_events() { let uniform = |x: f64| x.clamp(0.0, 1.0); diff --git a/asap-precompute-rs/src/otap/answer_nodes.rs b/asap-precompute-rs/src/otap/answer_nodes.rs index 741e969..5056c6b 100644 --- a/asap-precompute-rs/src/otap/answer_nodes.rs +++ b/asap-precompute-rs/src/otap/answer_nodes.rs @@ -44,8 +44,8 @@ use otel_arrow_dfe_pdata::OtapPayload; use super::codec::decode_pdata_to_observations; use crate::answers::{ - ks_distance, sketch_answers, CardinalityClassifier, CardinalityRules, DriftRules, DriftTracker, - Event, + ks_distance, sketch_answers, topk_of, CardinalityClassifier, CardinalityRules, DriftRules, + DriftTracker, Event, NoveltyTracker, }; use crate::envelope::SketchEnvelope; use crate::envelope::SketchType; @@ -86,6 +86,13 @@ pub struct DetectorConfig { /// Thresholds for distribution drift of quantile series. #[serde(default)] pub drift: DriftRules, + /// Windows whose top keys form the novelty baseline. + #[serde(default = "default_novelty_windows")] + pub novelty_windows: usize, +} + +pub(super) fn default_novelty_windows() -> usize { + 10 } pub(super) fn now_ms() -> u64 { @@ -246,6 +253,7 @@ pub(super) async fn observations( struct SketchDetector { config: DetectorConfig, cardinality: CardinalityClassifier, + novelty: NoveltyTracker, drift: DriftTracker, /// Recent KLL windows per series, the drift baseline. baselines: HashMap>, @@ -333,6 +341,12 @@ impl local::Processor for SketchDetector { out.extend(gauges); events.extend(event); } + let top = topk_of(&answers); + if !top.is_empty() { + let (gauges, new) = self.novelty.observe(&env, "sketch", &top); + out.extend(gauges); + events.extend(new); + } if let Some(d) = estimate_of(&answers, "asap.distinct") { let (gauges, event) = self.cardinality.observe(&env, "sketch", d, env.count); @@ -368,6 +382,7 @@ static SKETCH_DETECTOR: ProcessorFactory = ProcessorFactory { Ok(ProcessorWrapper::local( SketchDetector { cardinality: CardinalityClassifier::new(config.cardinality.clone()), + novelty: NoveltyTracker::new(config.novelty_windows), drift: DriftTracker::new(config.drift.clone()), baselines: HashMap::new(), config, diff --git a/asap-precompute-rs/src/otap/baseline_nodes.rs b/asap-precompute-rs/src/otap/baseline_nodes.rs index 3b8525a..3013f92 100644 --- a/asap-precompute-rs/src/otap/baseline_nodes.rs +++ b/asap-precompute-rs/src/otap/baseline_nodes.rs @@ -65,13 +65,13 @@ use otel_arrow_dfe_pdata::OtapPayload; use serde::Deserialize; use super::answer_nodes::{ - default_grace, default_k, default_quantiles, default_window, emit, gauges_pdata, invalid, - now_ms, observations, series_key, + default_grace, default_k, default_novelty_windows, default_quantiles, default_window, emit, + gauges_pdata, invalid, now_ms, observations, series_key, }; use super::codec::OtapSketchEncoder; use crate::answers::{ - exact_answers, gauge, ks_distance, CardinalityClassifier, CardinalityRules, DriftRules, - DriftTracker, Event, ExactWindow, + exact_answers, gauge, ks_distance, topk_of, CardinalityClassifier, CardinalityRules, + DriftRules, DriftTracker, Event, ExactWindow, NoveltyTracker, }; use crate::envelope::{SketchEnvelope, SketchType}; use crate::matchers::ATTRIBUTE_KEY_LABEL; @@ -135,6 +135,9 @@ pub struct ExactDetectorConfig { /// Thresholds for distribution drift of quantile series. #[serde(default)] pub drift: DriftRules, + /// Windows whose top keys form the novelty baseline. + #[serde(default = "default_novelty_windows")] + pub novelty_windows: usize, } /// `raw_sink` configuration. @@ -362,6 +365,7 @@ impl local::Processor for ExactMerge { struct ExactDetector { config: ExactDetectorConfig, cardinality: CardinalityClassifier, + novelty: NoveltyTracker, drift: DriftTracker, /// Recent windows' sorted values per quantile series. baselines: HashMap>>, @@ -385,12 +389,14 @@ impl ExactDetector { out.extend(gauges); events.extend(event); } - out.extend(exact_answers( - &template, - &mut w, - &self.config.quantiles, - self.config.k, - )); + let answers = exact_answers(&template, &mut w, &self.config.quantiles, self.config.k); + let top = topk_of(&answers); + if !top.is_empty() { + let (gauges, new) = self.novelty.observe(&template, "exact", &top); + out.extend(gauges); + events.extend(new); + } + out.extend(answers); if !w.values.is_empty() { // exact_answers left the values sorted. let (gauges, event) = self.drift(&template, std::mem::take(&mut w.values)); @@ -760,6 +766,7 @@ static EXACT_DETECTOR: ProcessorFactory = ProcessorFactory { Ok(ProcessorWrapper::local( ExactDetector { cardinality: CardinalityClassifier::new(config.cardinality.clone()), + novelty: NoveltyTracker::new(config.novelty_windows), drift: DriftTracker::new(config.drift.clone()), baselines: HashMap::new(), config, @@ -894,6 +901,7 @@ mod tests { serde_json::from_value(serde_json::json!({"k": 2})).unwrap(); let mut detector = ExactDetector { cardinality: CardinalityClassifier::new(config.cardinality.clone()), + novelty: NoveltyTracker::new(config.novelty_windows), drift: DriftTracker::new(config.drift.clone()), baselines: HashMap::new(), config, diff --git a/deploy/telemetry-functions/grafana/dashboards/topk.json b/deploy/telemetry-functions/grafana/dashboards/topk.json new file mode 100644 index 0000000..0bef626 --- /dev/null +++ b/deploy/telemetry-functions/grafana/dashboards/topk.json @@ -0,0 +1,556 @@ +{ + "uid": "asap-topk", + "title": "Heavy hitters and new keys: sketch vs exact (real collector containers)", + "schemaVersion": 39, + "version": 1, + "refresh": "10s", + "time": { + "from": "now-30m", + "to": "now" + }, + "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: Count-Min 4×512 + top-10 heap per 1-min window
→
merge
Stage 2: merges both sources' sketches per window
→
detector
top-10 with bounds; new heavy hitters
→
Prometheus + Loki
method="sketch"
exact-generator-a/b
same points
→
exact-branch-a/b
Stage 1 per source: route → count map per 1-min window
→
exact-merge
Stage 2: adds both sources' exact windows
→
exact-detector
exact top-10; new heavy hitters
→
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": "bargauge", + "title": "Top-10 routes, latest window: CMS + heap (lower bound to estimate)", + "datasource": { + "type": "prometheus", + "uid": "asap-prometheus" + }, + "gridPos": { + "h": 10, + "w": 12, + "x": 0, + "y": 10 + }, + "targets": [ + { + "refId": "A", + "expr": "sort_desc(asap_topk{method=\"sketch\",bound=\"estimate\"})", + "legendFormat": "#{{rank}} {{key}}", + "instant": true + } + ], + "options": { + "orientation": "horizontal", + "displayMode": "basic", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + } + }, + "fieldConfig": { + "defaults": { + "decimals": 0 + }, + "overrides": [] + }, + "id": 2 + }, + { + "type": "bargauge", + "title": "Top-10 routes, latest window: exact counts", + "datasource": { + "type": "prometheus", + "uid": "asap-prometheus" + }, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 10 + }, + "targets": [ + { + "refId": "A", + "expr": "sort_desc(asap_topk{method=\"exact\",bound=\"estimate\"})", + "legendFormat": "#{{rank}} {{key}}", + "instant": true + } + ], + "options": { + "orientation": "horizontal", + "displayMode": "basic", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + } + }, + "fieldConfig": { + "defaults": { + "decimals": 0 + }, + "overrides": [] + }, + "id": 3 + }, + { + "type": "timeseries", + "title": "Count of /new/hot-route per minute: sketch with Count-Min bound vs exact", + "datasource": { + "type": "prometheus", + "uid": "asap-prometheus" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 20 + }, + "targets": [ + { + "refId": "A", + "expr": "asap_topk{key=\"/new/hot-route\",method=\"sketch\",bound=\"estimate\"}", + "legendFormat": "sketch" + }, + { + "refId": "B", + "expr": "asap_topk{key=\"/new/hot-route\",method=\"sketch\",bound=\"lower\"}", + "legendFormat": "sketch lower" + }, + { + "refId": "C", + "expr": "asap_topk{key=\"/new/hot-route\",method=\"exact\"}", + "legendFormat": "exact" + } + ], + "fieldConfig": { + "defaults": { + "custom": { + "spanNulls": true + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "sketch" + }, + "properties": [ + { + "id": "custom.fillBelowTo", + "value": "sketch lower" + }, + { + "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": "exact" + }, + "properties": [ + { + "id": "color", + "value": { + "mode": "fixed", + "fixedColor": "orange" + } + }, + { + "id": "custom.lineStyle", + "value": { + "fill": "dash", + "dash": [ + 6, + 4 + ] + } + } + ] + } + ] + }, + "id": 4 + }, + { + "type": "logs", + "title": "New heavy hitters (Loki)", + "datasource": { + "type": "loki", + "uid": "asap-loki" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 20 + }, + "targets": [ + { + "refId": "A", + "expr": "{service_name=\"asap-detector\"} | event_kind=\"novelty\"" + } + ], + "options": { + "showTime": true, + "wrapLogMessage": true, + "sortOrder": "Descending" + }, + "id": 5 + }, + { + "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": 28 + }, + "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": 28 + }, + "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": 36 + }, + "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": 36 + }, + "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/topk/branch.yaml b/deploy/telemetry-functions/topk/branch.yaml new file mode 100644 index 0000000..c7301e0 --- /dev/null +++ b/deploy/telemetry-functions/topk/branch.yaml @@ -0,0 +1,40 @@ +# Sketch pipeline, stage 1 at each source: one Count-Min sketch (4 x 512) + +# top-10 heap of routes 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: countminsketch_heap + window_size: 60s + output_metric_name: http.server.request.duration + per_attribute: [http.route] + omit_resource_attrs: true + sketch_params: {rows: 4, columns: 512, k: 10} + 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/topk/detector.yaml b/deploy/telemetry-functions/topk/detector.yaml new file mode 100644 index 0000000..6465f03 --- /dev/null +++ b/deploy/telemetry-functions/topk/detector.yaml @@ -0,0 +1,36 @@ +# Top-10 routes with Count-Min bounds to Prometheus; routes new to the top 10 +# (vs the last 10 windows) 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: {k: 10, novelty_windows: 10} + 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/topk/exact-branch.yaml b/deploy/telemetry-functions/topk/exact-branch.yaml new file mode 100644 index 0000000..33579bb --- /dev/null +++ b/deploy/telemetry-functions/topk/exact-branch.yaml @@ -0,0 +1,34 @@ +# Exact pipeline, stage 1 at each source: a route -> count map 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, per_attribute: [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/topk/exact-detector.yaml b/deploy/telemetry-functions/topk/exact-detector.yaml new file mode 100644 index 0000000..61e560a --- /dev/null +++ b/deploy/telemetry-functions/topk/exact-detector.yaml @@ -0,0 +1,36 @@ +# 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: {k: 10, novelty_windows: 10} + 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/topk/generator-a.yaml b/deploy/telemetry-functions/topk/generator-a.yaml new file mode 100644 index 0000000..4e50035 --- /dev/null +++ b/deploy/telemetry-functions/topk/generator-a.yaml @@ -0,0 +1,36 @@ +# Source a: 100,000 routes (Zipf 1.1); a new route takes 15% of traffic 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: 100000, zipf: 1.1} + value: {lognormal: {median: 50.0, sigma: 0.6}} + changes: + - {after_seconds: 600, attribute: http.route, inject: /new/hot-route, share: 0.15} + 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/topk/generator-b.yaml b/deploy/telemetry-functions/topk/generator-b.yaml new file mode 100644 index 0000000..4804d35 --- /dev/null +++ b/deploy/telemetry-functions/topk/generator-b.yaml @@ -0,0 +1,36 @@ +# Source b: 100,000 routes (Zipf 1.1); a new route takes 15% of traffic 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: 100000, zipf: 1.1} + value: {lognormal: {median: 50.0, sigma: 0.6}} + changes: + - {after_seconds: 600, attribute: http.route, inject: /new/hot-route, share: 0.15} + 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/topk/merge.yaml b/deploy/telemetry-functions/topk/merge.yaml new file mode 100644 index 0000000..cb392f2 --- /dev/null +++ b/deploy/telemetry-functions/topk/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/docs/images/topk-novelty-grafana.png b/docs/images/topk-novelty-grafana.png new file mode 100644 index 0000000000000000000000000000000000000000..8d8d1344515ea80945d0f13f63b8c6b1a343e1f4 GIT binary patch literal 106230 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 z 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
*N%-UJUR3YUcA^wD1#`ZH@U(T37K*-NrXB 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 literal 0 HcmV?d00001