Skip to content

Commit

Permalink
chore: change cache metrics exporting (#55)
Browse files Browse the repository at this point in the history
  • Loading branch information
Revolution1 authored Jul 25, 2024
1 parent 13aeb84 commit 3fbb4e4
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 49 deletions.
70 changes: 24 additions & 46 deletions src/extensions/prometheus/rpc_metrics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ impl RpcMetrics {
inner.finalized_cache_query(method);
}
}
pub fn finalized_cache_miss(&self, method: &str) {
pub fn finalized_cache_hit(&self, method: &str) {
if let Self::Prometheus(inner) = self {
inner.finalized_cache_miss(method);
inner.finalized_cache_hit(method);
}
}

Expand All @@ -43,9 +43,9 @@ impl RpcMetrics {
inner.recent_cache_query(method);
}
}
pub fn recent_cache_miss(&self, method: &str) {
pub fn recent_cache_hit(&self, method: &str) {
if let Self::Prometheus(inner) = self {
inner.recent_cache_miss(method);
inner.recent_cache_hit(method);
}
}

Expand All @@ -66,10 +66,8 @@ impl RpcMetrics {
pub struct InnerMetrics {
open_session_count: Counter<U64>,
closed_session_count: Counter<U64>,
finalized_cache_query_counter: CounterVec<U64>,
finalized_cache_miss_counter: CounterVec<U64>,
recent_cache_query_counter: CounterVec<U64>,
recent_cache_miss_counter: CounterVec<U64>,
cache_query_counter: CounterVec<U64>,
cache_hit_counter: CounterVec<U64>,
call_times: HistogramVec,
calls_started: CounterVec<U64>,
calls_finished: CounterVec<U64>,
Expand All @@ -80,36 +78,20 @@ impl InnerMetrics {
let open_counter = Counter::new("open_ws_counter", "Total number of opened websocket connections").unwrap();
let closed_counter = Counter::new("closed_ws_counter", "Total number of closed websocket connections").unwrap();

let finalized_cache_query_counter = CounterVec::new(
let cache_query_counter = CounterVec::new(
Opts::new(
"finalized_cache_query_counter",
"Total number of cache queries of RPC requests about finalized blocks",
"cache_query_counter",
"Total number of cache queries of RPC requests about finalized or recent blocks",
),
&["method"],
&["block", "method"],
)
.unwrap();
let finalized_cache_miss_counter = CounterVec::new(
let cache_hit_counter = CounterVec::new(
Opts::new(
"finalized_cache_miss_counter",
"Total number of cache misses of RPC requests about finalized blocks",
"cache_hit_counter",
"Total number of cache misses of RPC requests about finalized or recent blocks",
),
&["method"],
)
.unwrap();
let recent_cache_query_counter = CounterVec::new(
Opts::new(
"recent_cache_query_counter",
"Total number of cache queries of RPC requests about recent blocks",
),
&["method"],
)
.unwrap();
let recent_cache_miss_counter = CounterVec::new(
Opts::new(
"recent_cache_miss_counter",
"Total number of cache misses of RPC requests about recent blocks",
),
&["method"],
&["block", "method"],
)
.unwrap();

Expand All @@ -135,10 +117,8 @@ impl InnerMetrics {
let open_session_count = register(open_counter, registry).unwrap();
let closed_session_count = register(closed_counter, registry).unwrap();

let finalized_cache_query_counter = register(finalized_cache_query_counter, registry).unwrap();
let finalized_cache_miss_counter = register(finalized_cache_miss_counter, registry).unwrap();
let recent_cache_query_counter = register(recent_cache_query_counter, registry).unwrap();
let recent_cache_miss_counter = register(recent_cache_miss_counter, registry).unwrap();
let cache_query_counter = register(cache_query_counter, registry).unwrap();
let cache_hit_counter = register(cache_hit_counter, registry).unwrap();

let call_times = register(call_times, registry).unwrap();
let calls_started = register(calls_started_counter, registry).unwrap();
Expand All @@ -148,10 +128,8 @@ impl InnerMetrics {
open_session_count,
closed_session_count,

finalized_cache_query_counter,
finalized_cache_miss_counter,
recent_cache_query_counter,
recent_cache_miss_counter,
cache_query_counter,
cache_hit_counter,

calls_started,
calls_finished,
Expand All @@ -167,18 +145,18 @@ impl InnerMetrics {
}

fn finalized_cache_query(&self, method: &str) {
self.finalized_cache_query_counter.with_label_values(&[method]).inc();
self.cache_query_counter.with_label_values(&["finalized", method]).inc();
}

fn finalized_cache_miss(&self, method: &str) {
self.finalized_cache_miss_counter.with_label_values(&[method]).inc();
fn finalized_cache_hit(&self, method: &str) {
self.cache_hit_counter.with_label_values(&["finalized", method]).inc();
}

fn recent_cache_query(&self, method: &str) {
self.recent_cache_query_counter.with_label_values(&[method]).inc();
self.cache_query_counter.with_label_values(&["recent", method]).inc();
}

fn recent_cache_miss(&self, method: &str) {
self.recent_cache_miss_counter.with_label_values(&[method]).inc();
fn recent_cache_hit(&self, method: &str) {
self.cache_hit_counter.with_label_values(&["recent", method]).inc();
}
}
14 changes: 12 additions & 2 deletions src/middlewares/methods/block_cache.rs
Original file line number Diff line number Diff line change
Expand Up @@ -283,15 +283,20 @@ impl BlockCacheMiddlewareImpl {
let mut hit = true;
metrics.recent_cache_query(&request.method);

let method = request.method.clone();

let result = self
.recent_cache
.get_or_insert_with(key.clone(), || {
hit = false;
metrics.recent_cache_miss(&request.method);
next(request, context).boxed()
})
.await;

if hit {
metrics.recent_cache_hit(&method);
}

get_active_span(|span| {
span.set_attributes([KeyValue::new("bypass", false), KeyValue::new("hit", hit)])
});
Expand All @@ -311,15 +316,20 @@ impl BlockCacheMiddlewareImpl {
let mut hit = true;
metrics.finalized_cache_query(&request.method);

let method = request.method.clone();

let result = self
.finalized_cache
.get_or_insert_with(key.clone(), || {
hit = false;
metrics.finalized_cache_miss(&request.method);
next(request, context).boxed()
})
.await;

if hit {
metrics.finalized_cache_hit(&method);
}

get_active_span(|span| {
span.set_attributes([KeyValue::new("bypass", false), KeyValue::new("hit", hit)])
});
Expand Down
6 changes: 5 additions & 1 deletion src/middlewares/methods/cache.rs
Original file line number Diff line number Diff line change
Expand Up @@ -100,16 +100,20 @@ impl Middleware<CallRequest, CallResult> for CacheMiddleware {

let metrics = self.metrics.clone();
metrics.finalized_cache_query(&request.method);
let method = request.method.clone();

let result = self
.cache
.get_or_insert_with(key.clone(), || {
hit = false;
metrics.finalized_cache_miss(&request.method);
next(request, context).boxed()
})
.await;

if hit {
metrics.finalized_cache_hit(&method);
}

get_active_span(|span| span.set_attribute(KeyValue::new("hit", hit)));

if let Ok(ref value) = result {
Expand Down

0 comments on commit 3fbb4e4

Please sign in to comment.