fix(metrics): move ping metrics sending to baseliner

This commit is contained in:
Nils Andreas Svee committed 2026-10-08 11:21:26 +07:00
1 parent 4acce614fe
commit fcb2b12d6f
4 files changed
+33 -3

No files matched your search

+15
View File
@@ -84,6 +84,7 @@ pub struct Baseliner {
pub selection_tx: Option<Sender<ControlSnapshot>>, pub selection_tx: Option<Sender<ControlSnapshot>>,
pub baseline_metrics: MetricsSender, pub baseline_metrics: MetricsSender,
pub event_metrics: MetricsSender, pub event_metrics: MetricsSender,
pub ping_metrics: MetricsSender,
} }
fn ewma_factor(tick: f64, dur: f64) -> f64 { fn ewma_factor(tick: f64, dur: f64) -> f64 {
@@ -201,6 +202,20 @@ impl Baseliner {
let _ = self.reselect_trigger.try_send(true); let _ = self.reselect_trigger.try_send(true);
} }
self.ping_metrics.send(Metric::Ping {
reflector,
measurement_type: reply.stream.source,
rtt: reply.rtt_ms(),
up_time: reply
.one_way
.map(|o| o.uplink.as_nanos() as f64 / 1000000.0)
.unwrap_or(reply.rtt_ms() / 2.0),
down_time: reply
.one_way
.map(|o| o.downlink.as_nanos() as f64 / 1000000.0)
.unwrap_or(reply.rtt_ms() / 2.0),
});
self.baseline_metrics.send(Metric::Baseline { self.baseline_metrics.send(Metric::Baseline {
reflector, reflector,
baseline_up_ewma: state.baseline.up, baseline_up_ewma: state.baseline.up,
+2 -1
View File
@@ -266,7 +266,7 @@ fn run(settings: &Settings) -> anyhow::Result<()> {
.unwrap_or_else(MetricsSender::disabled) .unwrap_or_else(MetricsSender::disabled)
}; };
let _ping_metrics = make_sender(settings.observability.export_ping_metrics); let ping_metrics = make_sender(settings.observability.export_ping_metrics);
let baseline_metrics = make_sender(settings.observability.export_baseline_metrics); let baseline_metrics = make_sender(settings.observability.export_baseline_metrics);
let event_metrics = make_sender(settings.observability.export_events); let event_metrics = make_sender(settings.observability.export_events);
let rate_metrics = make_sender(settings.observability.export_rate_metrics); let rate_metrics = make_sender(settings.observability.export_rate_metrics);
@@ -291,6 +291,7 @@ fn run(settings: &Settings) -> anyhow::Result<()> {
selection_tx: selection_snapshot_tx, selection_tx: selection_snapshot_tx,
baseline_metrics, baseline_metrics,
event_metrics: event_metrics.clone(), event_metrics: event_metrics.clone(),
ping_metrics,
}; };
let mut main_traffic_control = traffic_control_backend(); let mut main_traffic_control = traffic_control_backend();
+13
View File
@@ -1,3 +1,4 @@
use std::fmt::{self, Display};
use std::{ use std::{
net::IpAddr, net::IpAddr,
time::{Duration, Instant}, time::{Duration, Instant},
@@ -16,6 +17,18 @@ pub enum MeasurementSource {
TcpTimestamp, TcpTimestamp,
} }
impl Display for MeasurementSource {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
MeasurementSource::IcmpEcho => write!(f, "icmp"),
MeasurementSource::IcmpTimestamp => write!(f, "icmp-timestamps"),
MeasurementSource::Irtt => write!(f, "irtt"),
MeasurementSource::TcpSeqAck => write!(f, "tcp-seqack"),
MeasurementSource::TcpTimestamp => write!(f, "tcp-timestamp"),
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct MeasurementStream { pub struct MeasurementStream {
pub id: MeasurementStreamId, pub id: MeasurementStreamId,
+3 -2
View File
@@ -2,8 +2,9 @@
// //
// SPDX-License-Identifier: MPL-2.0 // SPDX-License-Identifier: MPL-2.0
use crate::measurement::model::MeasurementSource;
use crate::settings::ObservabilityProtocol;
use crate::settings::Settings; use crate::settings::Settings;
use crate::settings::{MeasurementType, ObservabilityProtocol};
use crate::time::{ClockSample, Realtime}; use crate::time::{ClockSample, Realtime};
use flume::{Receiver, RecvTimeoutError, Sender}; use flume::{Receiver, RecvTimeoutError, Sender};
use log::{error, info, warn}; use log::{error, info, warn};
@@ -93,7 +94,7 @@ impl Transport {
pub enum Metric { pub enum Metric {
Ping { Ping {
reflector: IpAddr, reflector: IpAddr,
measurement_type: MeasurementType, measurement_type: MeasurementSource,
rtt: f64, rtt: f64,
up_time: f64, up_time: f64,
down_time: f64, down_time: f64,