Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 10 additions & 11 deletions packages/http-tracker-core/src/statistics/event/handler.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
use std::net::IpAddr;

use torrust_tracker_metrics::label::LabelSet;
use torrust_tracker_metrics::label::{LabelName, LabelSet, LabelValue};
use torrust_tracker_metrics::metric::MetricName;
use torrust_tracker_primitives::DurationSinceUnixEpoch;

use crate::event::Event;
use crate::statistics::repository::Repository;
use crate::statistics::HTTP_TRACKER_CORE_REQUESTS_RECEIVED_TOTAL;

/// # Panics
///
Expand All @@ -27,12 +28,11 @@ pub async fn handle_event(event: Event, stats_repository: &Repository, now: Dura

// Extendable metrics

let mut label_set = LabelSet::from(connection);
label_set.upsert(LabelName::new("request_kind"), LabelValue::new("announce"));

stats_repository
.increase_counter(
&MetricName::new("http_tracker_core_announce_requests_received_total"),
&LabelSet::from(connection),
now,
)
.increase_counter(&MetricName::new(HTTP_TRACKER_CORE_REQUESTS_RECEIVED_TOTAL), &label_set, now)
.await;
}
Event::TcpScrape { connection } => {
Expand All @@ -49,12 +49,11 @@ pub async fn handle_event(event: Event, stats_repository: &Repository, now: Dura

// Extendable metrics

let mut label_set = LabelSet::from(connection);
label_set.upsert(LabelName::new("request_kind"), LabelValue::new("scrape"));

stats_repository
.increase_counter(
&MetricName::new("http_tracker_core_scrape_requests_received_total"),
&LabelSet::from(connection),
now,
)
.increase_counter(&MetricName::new(HTTP_TRACKER_CORE_REQUESTS_RECEIVED_TOTAL), &label_set, now)
.await;
}
}
Expand Down
12 changes: 4 additions & 8 deletions packages/http-tracker-core/src/statistics/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,16 @@ use torrust_tracker_metrics::metric::description::MetricDescription;
use torrust_tracker_metrics::metric::MetricName;
use torrust_tracker_metrics::unit::Unit;

const HTTP_TRACKER_CORE_REQUESTS_RECEIVED_TOTAL: &str = "http_tracker_core_requests_received_total";

#[must_use]
pub fn describe_metrics() -> Metrics {
let mut metrics = Metrics::default();

metrics.metric_collection.describe_counter(
&MetricName::new("http_tracker_core_announce_requests_received_total"),
Some(Unit::Count),
Some(MetricDescription::new("Total number of HTTP announce requests received")),
);

metrics.metric_collection.describe_counter(
&MetricName::new("http_tracker_core_scrape_requests_received_total"),
&MetricName::new(HTTP_TRACKER_CORE_REQUESTS_RECEIVED_TOTAL),
Some(Unit::Count),
Some(MetricDescription::new("Total number of HTTP scrape requests received")),
Some(MetricDescription::new("Total number of HTTP requests received")),
);

metrics
Expand Down
30 changes: 14 additions & 16 deletions packages/udp-tracker-core/src/statistics/event/handler.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
use torrust_tracker_metrics::label::LabelSet;
use torrust_tracker_metrics::label::{LabelName, LabelSet, LabelValue};
use torrust_tracker_metrics::metric::MetricName;
use torrust_tracker_primitives::DurationSinceUnixEpoch;

use crate::event::Event;
use crate::statistics::repository::Repository;
use crate::statistics::UDP_TRACKER_CORE_REQUESTS_RECEIVED_TOTAL;

/// # Panics
///
Expand All @@ -24,12 +25,11 @@ pub async fn handle_event(event: Event, stats_repository: &Repository, now: Dura

// Extendable metrics

let mut label_set = LabelSet::from(context);
label_set.upsert(LabelName::new("request_kind"), LabelValue::new("connect"));

stats_repository
.increase_counter(
&MetricName::new("udp_tracker_core_connect_requests_received_total"),
&LabelSet::from(context),
now,
)
.increase_counter(&MetricName::new(UDP_TRACKER_CORE_REQUESTS_RECEIVED_TOTAL), &label_set, now)
.await;
}
Event::UdpAnnounce { context } => {
Expand All @@ -46,12 +46,11 @@ pub async fn handle_event(event: Event, stats_repository: &Repository, now: Dura

// Extendable metrics

let mut label_set = LabelSet::from(context);
label_set.upsert(LabelName::new("request_kind"), LabelValue::new("announce"));

stats_repository
.increase_counter(
&MetricName::new("udp_tracker_core_announce_requests_received_total"),
&LabelSet::from(context),
now,
)
.increase_counter(&MetricName::new(UDP_TRACKER_CORE_REQUESTS_RECEIVED_TOTAL), &label_set, now)
.await;
}
Event::UdpScrape { context } => {
Expand All @@ -68,12 +67,11 @@ pub async fn handle_event(event: Event, stats_repository: &Repository, now: Dura

// Extendable metrics

let mut label_set = LabelSet::from(context);
label_set.upsert(LabelName::new("request_kind"), LabelValue::new("scrape"));

stats_repository
.increase_counter(
&MetricName::new("udp_tracker_core_scrape_requests_received_total"),
&LabelSet::from(context),
now,
)
.increase_counter(&MetricName::new(UDP_TRACKER_CORE_REQUESTS_RECEIVED_TOTAL), &label_set, now)
.await;
}
}
Expand Down
18 changes: 4 additions & 14 deletions packages/udp-tracker-core/src/statistics/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,26 +10,16 @@ use torrust_tracker_metrics::metric::description::MetricDescription;
use torrust_tracker_metrics::metric::MetricName;
use torrust_tracker_metrics::unit::Unit;

const UDP_TRACKER_CORE_REQUESTS_RECEIVED_TOTAL: &str = "udp_tracker_core_requests_received_total";

#[must_use]
pub fn describe_metrics() -> Metrics {
let mut metrics = Metrics::default();

metrics.metric_collection.describe_counter(
&MetricName::new("udp_tracker_core_connect_requests_received_total"),
Some(Unit::Count),
Some(MetricDescription::new("Total number of UDP connect requests received")),
);

metrics.metric_collection.describe_counter(
&MetricName::new("udp_tracker_core_announce_requests_received_total"),
Some(Unit::Count),
Some(MetricDescription::new("Total number of UDP announce requests received")),
);

metrics.metric_collection.describe_counter(
&MetricName::new("udp_tracker_core_scrape_requests_received_total"),
&MetricName::new(UDP_TRACKER_CORE_REQUESTS_RECEIVED_TOTAL),
Some(Unit::Count),
Some(MetricDescription::new("Total number of UDP scrape requests received")),
Some(MetricDescription::new("Total number of UDP requests received")),
);

metrics
Expand Down
56 changes: 36 additions & 20 deletions packages/udp-tracker-server/src/statistics/event/handler.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@ use torrust_tracker_primitives::DurationSinceUnixEpoch;

use crate::event::{Event, UdpRequestKind, UdpResponseKind};
use crate::statistics::repository::Repository;
use crate::statistics::{
UDP_TRACKER_SERVER_ERRORS_TOTAL, UDP_TRACKER_SERVER_PERFORMANCE_AVG_PROCESSING_TIME_NS,
UDP_TRACKER_SERVER_REQUESTS_ABORTED_TOTAL, UDP_TRACKER_SERVER_REQUESTS_ACCEPTED_TOTAL,
UDP_TRACKER_SERVER_REQUESTS_BANNED_TOTAL, UDP_TRACKER_SERVER_REQUESTS_RECEIVED_TOTAL,
UDP_TRACKER_SERVER_RESPONSES_SENT_TOTAL,
};

/// # Panics
///
Expand All @@ -19,7 +25,7 @@ pub async fn handle_event(event: Event, stats_repository: &Repository, now: Dura
// Extendable metrics
stats_repository
.increase_counter(
&MetricName::new("udp_tracker_server_requests_aborted_total"),
&MetricName::new(UDP_TRACKER_SERVER_REQUESTS_ABORTED_TOTAL),
&LabelSet::from(context),
now,
)
Expand All @@ -32,7 +38,7 @@ pub async fn handle_event(event: Event, stats_repository: &Repository, now: Dura
// Extendable metrics
stats_repository
.increase_counter(
&MetricName::new("udp_tracker_server_requests_banned_total"),
&MetricName::new(UDP_TRACKER_SERVER_REQUESTS_BANNED_TOTAL),
&LabelSet::from(context),
now,
)
Expand All @@ -52,7 +58,7 @@ pub async fn handle_event(event: Event, stats_repository: &Repository, now: Dura
// Extendable metrics
stats_repository
.increase_counter(
&MetricName::new("udp_tracker_server_requests_received_total"),
&MetricName::new(UDP_TRACKER_SERVER_REQUESTS_RECEIVED_TOTAL),
&LabelSet::from(context),
now,
)
Expand Down Expand Up @@ -94,11 +100,7 @@ pub async fn handle_event(event: Event, stats_repository: &Repository, now: Dura
label_set.upsert(LabelName::new("kind"), LabelValue::new(&kind.to_string()));

stats_repository
.increase_counter(
&MetricName::new("udp_tracker_server_requests_accepted_total"),
&label_set,
now,
)
.increase_counter(&MetricName::new(UDP_TRACKER_SERVER_REQUESTS_ACCEPTED_TOTAL), &label_set, now)
.await;
}
Event::UdpResponseSent {
Expand All @@ -124,10 +126,14 @@ pub async fn handle_event(event: Event, stats_repository: &Repository, now: Dura
.await;

// Extendable metrics

let mut label_set = LabelSet::from(context.clone());
label_set.upsert(LabelName::new("request_kind"), LabelValue::new(&req_kind.to_string()));

stats_repository
.set_gauge(
&MetricName::new("udp_tracker_server_performance_avg_connect_processing_time_ns"),
&LabelSet::from(context.clone()),
&MetricName::new(UDP_TRACKER_SERVER_PERFORMANCE_AVG_PROCESSING_TIME_NS),
&label_set,
new_avg,
now,
)
Expand All @@ -141,47 +147,57 @@ pub async fn handle_event(event: Event, stats_repository: &Repository, now: Dura
.await;

// Extendable metrics

let mut label_set = LabelSet::from(context.clone());
label_set.upsert(LabelName::new("request_kind"), LabelValue::new(&req_kind.to_string()));

stats_repository
.set_gauge(
&MetricName::new("udp_tracker_server_performance_avg_announce_processing_time_ns"),
&LabelSet::from(context.clone()),
&MetricName::new(UDP_TRACKER_SERVER_PERFORMANCE_AVG_PROCESSING_TIME_NS),
&label_set,
new_avg,
now,
)
.await;

(LabelValue::new("ok"), LabelValue::new(&UdpRequestKind::Connect.to_string()))
(LabelValue::new("ok"), LabelValue::new(&UdpRequestKind::Announce.to_string()))
}
UdpRequestKind::Scrape => {
let new_avg = stats_repository
.recalculate_udp_avg_scrape_processing_time_ns(req_processing_time)
.await;

// Extendable metrics

let mut label_set = LabelSet::from(context.clone());
label_set.upsert(LabelName::new("request_kind"), LabelValue::new(&req_kind.to_string()));

stats_repository
.set_gauge(
&MetricName::new("udp_tracker_server_performance_avg_scrape_processing_time_ns"),
&LabelSet::from(context.clone()),
&MetricName::new(UDP_TRACKER_SERVER_PERFORMANCE_AVG_PROCESSING_TIME_NS),
&label_set,
new_avg,
now,
)
.await;

(LabelValue::new("ok"), LabelValue::new(&UdpRequestKind::Connect.to_string()))
(LabelValue::new("ok"), LabelValue::new(&UdpRequestKind::Scrape.to_string()))
}
},
UdpResponseKind::Error { opt_req_kind: _ } => (LabelValue::new("ok"), LabelValue::ignore()),
UdpResponseKind::Error { opt_req_kind: _ } => (LabelValue::new("error"), LabelValue::ignore()),
};

// Extendable metrics

let mut label_set = LabelSet::from(context);

if result_label_value == LabelValue::new("ok") {
label_set.upsert(LabelName::new("request_kind"), kind_label_value);
}
label_set.upsert(LabelName::new("result"), result_label_value);
label_set.upsert(LabelName::new("kind"), kind_label_value);

stats_repository
.increase_counter(&MetricName::new("udp_tracker_server_responses_sent_total"), &label_set, now)
.increase_counter(&MetricName::new(UDP_TRACKER_SERVER_RESPONSES_SENT_TOTAL), &label_set, now)
.await;
}
Event::UdpError { context } => {
Expand All @@ -198,7 +214,7 @@ pub async fn handle_event(event: Event, stats_repository: &Repository, now: Dura
// Extendable metrics
stats_repository
.increase_counter(
&MetricName::new("udp_tracker_server_errors_total"),
&MetricName::new(UDP_TRACKER_SERVER_ERRORS_TOTAL),
&LabelSet::from(context),
now,
)
Expand Down
38 changes: 15 additions & 23 deletions packages/udp-tracker-server/src/statistics/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,69 +10,61 @@ use torrust_tracker_metrics::metric::description::MetricDescription;
use torrust_tracker_metrics::metric::MetricName;
use torrust_tracker_metrics::unit::Unit;

const UDP_TRACKER_SERVER_REQUESTS_ABORTED_TOTAL: &str = "udp_tracker_server_requests_aborted_total";
const UDP_TRACKER_SERVER_REQUESTS_BANNED_TOTAL: &str = "udp_tracker_server_requests_banned_total";
const UDP_TRACKER_SERVER_REQUESTS_RECEIVED_TOTAL: &str = "udp_tracker_server_requests_received_total";
const UDP_TRACKER_SERVER_REQUESTS_ACCEPTED_TOTAL: &str = "udp_tracker_server_requests_accepted_total";
const UDP_TRACKER_SERVER_RESPONSES_SENT_TOTAL: &str = "udp_tracker_server_responses_sent_total";
const UDP_TRACKER_SERVER_ERRORS_TOTAL: &str = "udp_tracker_server_errors_total";
const UDP_TRACKER_SERVER_PERFORMANCE_AVG_PROCESSING_TIME_NS: &str = "udp_tracker_server_performance_avg_processing_time_ns";

#[must_use]
pub fn describe_metrics() -> Metrics {
let mut metrics = Metrics::default();

metrics.metric_collection.describe_counter(
&MetricName::new("udp_tracker_server_requests_aborted_total"),
&MetricName::new(UDP_TRACKER_SERVER_REQUESTS_ABORTED_TOTAL),
Some(Unit::Count),
Some(MetricDescription::new("Total number of UDP requests aborted")),
);

metrics.metric_collection.describe_counter(
&MetricName::new("udp_tracker_server_requests_banned_total"),
&MetricName::new(UDP_TRACKER_SERVER_REQUESTS_BANNED_TOTAL),
Some(Unit::Count),
Some(MetricDescription::new("Total number of UDP requests banned")),
);

metrics.metric_collection.describe_counter(
&MetricName::new("udp_tracker_server_requests_received_total"),
&MetricName::new(UDP_TRACKER_SERVER_REQUESTS_RECEIVED_TOTAL),
Some(Unit::Count),
Some(MetricDescription::new("Total number of UDP requests received")),
);

metrics.metric_collection.describe_counter(
&MetricName::new("udp_tracker_server_requests_accepted_total"),
&MetricName::new(UDP_TRACKER_SERVER_REQUESTS_ACCEPTED_TOTAL),
Some(Unit::Count),
Some(MetricDescription::new("Total number of UDP requests accepted")),
);

metrics.metric_collection.describe_counter(
&MetricName::new("udp_tracker_server_responses_sent_total"),
&MetricName::new(UDP_TRACKER_SERVER_RESPONSES_SENT_TOTAL),
Some(Unit::Count),
Some(MetricDescription::new("Total number of UDP responses sent")),
);

metrics.metric_collection.describe_counter(
&MetricName::new("udp_tracker_server_errors_total"),
&MetricName::new(UDP_TRACKER_SERVER_ERRORS_TOTAL),
Some(Unit::Count),
Some(MetricDescription::new("Total number of errors processing UDP requests")),
);

metrics.metric_collection.describe_gauge(
&MetricName::new("udp_tracker_server_performance_avg_connect_processing_time_ns"),
&MetricName::new(UDP_TRACKER_SERVER_PERFORMANCE_AVG_PROCESSING_TIME_NS),
Some(Unit::Nanoseconds),
Some(MetricDescription::new(
"Average time to process a UDP connect request in nanoseconds",
)),
);

metrics.metric_collection.describe_gauge(
&MetricName::new("udp_tracker_server_performance_avg_announce_processing_time_ns"),
Some(Unit::Nanoseconds),
Some(MetricDescription::new(
"Average time to process a UDP announce request in nanoseconds",
)),
);

metrics.metric_collection.describe_gauge(
&MetricName::new("udp_tracker_server_performance_avg_scrape_processing_time_ns"),
Some(Unit::Nanoseconds),
Some(MetricDescription::new(
"Average time to process a UDP scrape request in nanoseconds",
)),
);

metrics
}