I've realized there are a couple of improvements:
http_tracker_core
Extract request_kind label. Putting the request type in the metric name does not make sense. The purpose of the refactor to build the new extendable-labeled metrics was to start using labels to group metrics instead of changes in metric's names.
From this:
http_tracker_core_announce_requests_received_total{server_binding_ip="0.0.0.0",server_binding_port="7070",server_binding_protocol="http"} 1
http_tracker_core_scrape_requests_received_total{server_binding_ip="0.0.0.0",server_binding_port="7070",server_binding_protocol="http"} 1
To this:
http_tracker_core_requests_received_total{request_kind="announce",server_binding_ip="0.0.0.0",server_binding_port="7070",server_binding_protocol="http"} 1
http_tracker_core_requests_received_total{request_kind="scrape", server_binding_ip="0.0.0.0",server_binding_port="7070",server_binding_protocol="http"} 1
udp_tracker_core
Same as in HTTP Tracker core.
From this:
udp_tracker_core_announce_requests_received_total{server_binding_ip="0.0.0.0",server_binding_port="6969",server_binding_protocol="udp"} 619656
udp_tracker_core_connect_requests_received_total{server_binding_ip="0.0.0.0",server_binding_port="6969",server_binding_protocol="udp"} 308493
udp_tracker_core_scrape_requests_received_total{server_binding_ip="0.0.0.0",server_binding_port="6969",server_binding_protocol="udp"} 32487
To this:
udp_tracker_core_requests_received_total{request_kind="announce",server_binding_ip="0.0.0.0",server_binding_port="6969",server_binding_protocol="udp"} 619656
udp_tracker_core_requests_received_total{request_kind="connect",server_binding_ip="0.0.0.0",server_binding_port="6969",server_binding_protocol="udp"} 308493
udp_tracker_core_requests_received_total{request_kind="scrape",server_binding_ip="0.0.0.0",server_binding_port="6969",server_binding_protocol="udp"} 32487
udp_tracker_server
udp_tracker_server_responses_sent_total{kind="",result="ok",server_binding_ip="0.0.0.0",server_binding_port="6969",server_binding_protocol="udp"} 32
udp_tracker_server_responses_sent_total{kind="connect",result="ok",server_binding_ip="0.0.0.0",server_binding_port="6969",server_binding_protocol="udp"} 19
- Rename label
kind to request_kind. It's more explicit. There could be other "kind" of things in the future.
- Remove the empty label
kind="" and fis the result. It should be "error".
- Fix copy/paste error in:
let (result_label_value, kind_label_value) = match kind {
UdpResponseKind::Ok { req_kind } => match req_kind {
UdpRequestKind::Connect => {
let new_avg = stats_repository
.recalculate_udp_avg_connect_processing_time_ns(req_processing_time)
.await;
// Extendable metrics
stats_repository
.set_gauge(
&MetricName::new("udp_tracker_server_performance_avg_connect_processing_time_ns"),
&LabelSet::from(context.clone()),
new_avg,
now,
)
.await;
(LabelValue::new("ok"), LabelValue::new(&UdpRequestKind::Connect.to_string()))
}
UdpRequestKind::Announce => {
let new_avg = stats_repository
.recalculate_udp_avg_announce_processing_time_ns(req_processing_time)
.await;
// Extendable metrics
stats_repository
.set_gauge(
&MetricName::new("udp_tracker_server_performance_avg_announce_processing_time_ns"),
&LabelSet::from(context.clone()),
new_avg,
now,
)
.await;
(LabelValue::new("ok"), LabelValue::new(&UdpRequestKind::Connect.to_string()))
}
UdpRequestKind::Scrape => {
let new_avg = stats_repository
.recalculate_udp_avg_scrape_processing_time_ns(req_processing_time)
.await;
// Extendable metrics
stats_repository
.set_gauge(
&MetricName::new("udp_tracker_server_performance_avg_scrape_processing_time_ns"),
&LabelSet::from(context.clone()),
new_avg,
now,
)
.await;
(LabelValue::new("ok"), LabelValue::new(&UdpRequestKind::Connect.to_string()))
}
},
UdpResponseKind::Error { opt_req_kind: _ } => (LabelValue::new("ok"), LabelValue::ignore()),
};
The label is wrong for announce and scrape.
UPDATE: Instead of fixing the copy/paste, we have to rename the metric:
From:
udp_tracker_server_performance_avg_connect_processing_time_ns
udp_tracker_server_performance_avg_announce_processing_time_ns
udp_tracker_server_performance_avg_scrape_processing_time_ns
To:
udp_tracker_server_performance_avg_connect_processing_time_ns{request_kind="connect"}
udp_tracker_server_performance_avg_connect_processing_time_ns{request_kind="announce"}
udp_tracker_server_performance_avg_connect_processing_time_ns{request_kind="scrape"}
I've realized there are a couple of improvements:
http_tracker_core
Extract
request_kindlabel. Putting the request type in the metric name does not make sense. The purpose of the refactor to build the new extendable-labeled metrics was to start using labels to group metrics instead of changes in metric's names.From this:
To this:
udp_tracker_core
Same as in HTTP Tracker core.
From this:
To this:
udp_tracker_server
kindtorequest_kind. It's more explicit. There could be other "kind" of things in the future.kind=""and fis the result. It should be "error".The label is wrong for
announceandscrape.UPDATE: Instead of fixing the copy/paste, we have to rename the metric:
From:
To: