subspace_farmer/farmer_cache/
metrics.rs

1//! Metrics for farmer cache
2
3use prometheus_client::metrics::counter::Counter;
4use prometheus_client::metrics::gauge::Gauge;
5use prometheus_client::registry::{Registry, Unit};
6use std::sync::atomic::{AtomicI64, AtomicU64};
7
8/// Metrics for farmer cache
9#[derive(Debug)]
10pub(super) struct FarmerCacheMetrics {
11    pub(super) cache_get_hit: Counter<u64, AtomicU64>,
12    pub(super) cache_get_miss: Counter<u64, AtomicU64>,
13    pub(super) cache_get_error: Counter<u64, AtomicU64>,
14    pub(super) cache_find_hit: Counter<u64, AtomicU64>,
15    pub(super) cache_find_miss: Counter<u64, AtomicU64>,
16    pub(super) piece_cache_capacity_total: Gauge<i64, AtomicI64>,
17    pub(super) piece_cache_capacity_used: Gauge<i64, AtomicI64>,
18}
19
20impl FarmerCacheMetrics {
21    /// Create new instance
22    pub(super) fn new(registry: &mut Registry) -> Self {
23        let registry = registry.sub_registry_with_prefix("farmer_cache");
24
25        let cache_get_hit = Counter::default();
26        registry.register_with_unit(
27            "cache_get_hit",
28            "Cache get hit",
29            Unit::Other("Requests".to_string()),
30            cache_get_hit.clone(),
31        );
32
33        let cache_get_miss = Counter::default();
34        registry.register_with_unit(
35            "cache_get_miss",
36            "Cache get miss",
37            Unit::Other("Requests".to_string()),
38            cache_get_miss.clone(),
39        );
40
41        let cache_get_error = Counter::default();
42        registry.register_with_unit(
43            "cache_error",
44            "Cache get error",
45            Unit::Other("Requests".to_string()),
46            cache_get_error.clone(),
47        );
48
49        let cache_find_hit = Counter::default();
50        registry.register_with_unit(
51            "cache_find_hit",
52            "Cache find hit",
53            Unit::Other("Requests".to_string()),
54            cache_find_hit.clone(),
55        );
56
57        let cache_find_miss = Counter::default();
58        registry.register_with_unit(
59            "cache_find_miss",
60            "Cache find miss",
61            Unit::Other("Requests".to_string()),
62            cache_find_miss.clone(),
63        );
64
65        let piece_cache_capacity_total = Gauge::default();
66        registry.register_with_unit(
67            "piece_cache_capacity_total",
68            "Piece cache capacity total",
69            Unit::Other("Pieces".to_string()),
70            piece_cache_capacity_total.clone(),
71        );
72
73        let piece_cache_capacity_used = Gauge::default();
74        registry.register_with_unit(
75            "piece_cache_capacity_used",
76            "Piece cache capacity used",
77            Unit::Other("Pieces".to_string()),
78            piece_cache_capacity_used.clone(),
79        );
80
81        Self {
82            cache_get_hit,
83            cache_get_miss,
84            cache_get_error,
85            cache_find_hit,
86            cache_find_miss,
87            piece_cache_capacity_total,
88            piece_cache_capacity_used,
89        }
90    }
91}