1use iroh_metrics::{
4 core::{Counter, Metric},
5 struct_iterable::Iterable,
6};
7
8#[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}