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 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
@@ -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();
|
||||||
|
|||||||
@@ -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
@@ -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,
|
||||||
|
|||||||
Reference in new issue
Block a user