fix(metrics): move ping metrics sending to baseliner
This commit is contained in:
4 files changed
+33
-3
No files matched your search
@@ -84,6 +84,7 @@ pub struct Baseliner {
|
||||
pub selection_tx: Option<Sender<ControlSnapshot>>,
|
||||
pub baseline_metrics: MetricsSender,
|
||||
pub event_metrics: MetricsSender,
|
||||
pub ping_metrics: MetricsSender,
|
||||
}
|
||||
|
||||
fn ewma_factor(tick: f64, dur: f64) -> f64 {
|
||||
@@ -201,6 +202,20 @@ impl Baseliner {
|
||||
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 {
|
||||
reflector,
|
||||
baseline_up_ewma: state.baseline.up,
|
||||
|
||||
+2
-1
@@ -266,7 +266,7 @@ fn run(settings: &Settings) -> anyhow::Result<()> {
|
||||
.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 event_metrics = make_sender(settings.observability.export_events);
|
||||
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,
|
||||
baseline_metrics,
|
||||
event_metrics: event_metrics.clone(),
|
||||
ping_metrics,
|
||||
};
|
||||
|
||||
let mut main_traffic_control = traffic_control_backend();
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
use std::fmt::{self, Display};
|
||||
use std::{
|
||||
net::IpAddr,
|
||||
time::{Duration, Instant},
|
||||
@@ -16,6 +17,18 @@ pub enum MeasurementSource {
|
||||
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)]
|
||||
pub struct MeasurementStream {
|
||||
pub id: MeasurementStreamId,
|
||||
|
||||
+3
-2
@@ -2,8 +2,9 @@
|
||||
//
|
||||
// SPDX-License-Identifier: MPL-2.0
|
||||
|
||||
use crate::measurement::model::MeasurementSource;
|
||||
use crate::settings::ObservabilityProtocol;
|
||||
use crate::settings::Settings;
|
||||
use crate::settings::{MeasurementType, ObservabilityProtocol};
|
||||
use crate::time::{ClockSample, Realtime};
|
||||
use flume::{Receiver, RecvTimeoutError, Sender};
|
||||
use log::{error, info, warn};
|
||||
@@ -93,7 +94,7 @@ impl Transport {
|
||||
pub enum Metric {
|
||||
Ping {
|
||||
reflector: IpAddr,
|
||||
measurement_type: MeasurementType,
|
||||
measurement_type: MeasurementSource,
|
||||
rtt: f64,
|
||||
up_time: f64,
|
||||
down_time: f64,
|
||||
|
||||
Reference in new issue
Block a user