iroh_blobs/
metrics.rs

1//! Metrics for iroh-blobs
2
3use iroh_metrics::{
4    core::{Counter, Metric},
5    struct_iterable::Iterable,
6};
7
8/// Enum of metrics for the module
9#[allow(missing_docs)]
10#[derive(Debug, Clone, Iterable)]
11pub struct Metrics {
12    pub download_bytes_total: Counter,
13    pub download_time_total: Counter,
14    pub downloads_success: Counter,
15    pub downloads_error: Counter,
16    pub downloads_notfound: Counter,
17
18    pub downloader_tick_main: Counter,
19    pub downloader_tick_connection_ready: Counter,
20    pub downloader_tick_message_received: Counter,
21    pub downloader_tick_transfer_completed: Counter,
22    pub downloader_tick_transfer_failed: Counter,
23    pub downloader_tick_retry_node: Counter,
24    pub downloader_tick_goodbye_node: Counter,
25}
26
27impl Default for Metrics {
28    fn default() -> Self {
29        Self {
30            download_bytes_total: Counter::new("Total number of content bytes downloaded"),
31            download_time_total: Counter::new("Total time in ms spent downloading content bytes"),
32            downloads_success: Counter::new("Total number of successful downloads"),
33            downloads_error: Counter::new("Total number of downloads failed with error"),
34            downloads_notfound: Counter::new("Total number of downloads failed with not found"),
35
36            downloader_tick_main: Counter::new(
37                "Number of times the main downloader actor loop ticked",
38            ),
39            downloader_tick_connection_ready: Counter::new(
40                "Number of times the downloader actor ticked for a connection ready",
41            ),
42            downloader_tick_message_received: Counter::new(
43                "Number of times the downloader actor ticked for a message received",
44            ),
45            downloader_tick_transfer_completed: Counter::new(
46                "Number of times the downloader actor ticked for a transfer completed",
47            ),
48            downloader_tick_transfer_failed: Counter::new(
49                "Number of times the downloader actor ticked for a transfer failed",
50            ),
51            downloader_tick_retry_node: Counter::new(
52                "Number of times the downloader actor ticked for a retry node",
53            ),
54            downloader_tick_goodbye_node: Counter::new(
55                "Number of times the downloader actor ticked for a goodbye node",
56            ),
57        }
58    }
59}
60
61impl Metric for Metrics {
62    fn name() -> &'static str {
63        "iroh-blobs"
64    }
65}