Merge pull request #1109 from AppFlowy-IO/measure-redis-stream-read-latency
chore: add prometheus histogram metrics for collab redis update read latency
This commit is contained in:
commit
21d5325235
|
|
@ -186,7 +186,8 @@ impl CollabGroup {
|
||||||
}
|
}
|
||||||
res = updates.next() => {
|
res = updates.next() => {
|
||||||
match res {
|
match res {
|
||||||
Some(Ok((_message_id, update))) => {
|
Some(Ok((message_id, update))) => {
|
||||||
|
state.metrics.observe_collab_stream_latency(message_id.timestamp_ms);
|
||||||
Self::handle_inbound_update(&state, update).await;
|
Self::handle_inbound_update(&state, update).await;
|
||||||
},
|
},
|
||||||
Some(Err(err)) => {
|
Some(Err(err)) => {
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
use chrono::Utc;
|
||||||
use prometheus_client::metrics::counter::Counter;
|
use prometheus_client::metrics::counter::Counter;
|
||||||
use prometheus_client::metrics::gauge::Gauge;
|
use prometheus_client::metrics::gauge::Gauge;
|
||||||
use prometheus_client::metrics::histogram::Histogram;
|
use prometheus_client::metrics::histogram::Histogram;
|
||||||
|
|
@ -22,6 +23,8 @@ pub struct CollabRealtimeMetrics {
|
||||||
pub(crate) collab_size: Histogram,
|
pub(crate) collab_size: Histogram,
|
||||||
/// How big is the collab (with history, after applying all updates).
|
/// How big is the collab (with history, after applying all updates).
|
||||||
pub(crate) full_collab_size: Histogram,
|
pub(crate) full_collab_size: Histogram,
|
||||||
|
/// How long does it take since collab update is send to a stream to be read from it.
|
||||||
|
pub(crate) collab_stream_latency: Histogram,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl CollabRealtimeMetrics {
|
impl CollabRealtimeMetrics {
|
||||||
|
|
@ -54,6 +57,13 @@ impl CollabRealtimeMetrics {
|
||||||
]
|
]
|
||||||
.into_iter(),
|
.into_iter(),
|
||||||
),
|
),
|
||||||
|
// collab update xadd-to-xread latency: 5ms, 50ms, 100ms, 500ms, 1s, 5s, 10s, 30s, 60s
|
||||||
|
collab_stream_latency: Histogram::new(
|
||||||
|
[
|
||||||
|
5.0, 50.0, 100.0, 500.0, 1000.0, 5000.0, 10000.0, 30000.0, 60000.0,
|
||||||
|
]
|
||||||
|
.into_iter(),
|
||||||
|
),
|
||||||
load_collab_count: Default::default(),
|
load_collab_count: Default::default(),
|
||||||
load_full_collab_count: Default::default(),
|
load_full_collab_count: Default::default(),
|
||||||
}
|
}
|
||||||
|
|
@ -112,8 +122,22 @@ impl CollabRealtimeMetrics {
|
||||||
"number of collab loads (with history)",
|
"number of collab loads (with history)",
|
||||||
metrics.load_full_collab_count.clone(),
|
metrics.load_full_collab_count.clone(),
|
||||||
);
|
);
|
||||||
|
realtime_registry.register(
|
||||||
|
"collab_stream_latency",
|
||||||
|
"latency since collab update is send to a stream to be read from it",
|
||||||
|
metrics.collab_stream_latency.clone(),
|
||||||
|
);
|
||||||
metrics
|
metrics
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn observe_collab_stream_latency(&self, message_id_timestamp: u64) {
|
||||||
|
let now = Utc::now().timestamp_millis() as u64;
|
||||||
|
if now > message_id_timestamp {
|
||||||
|
self
|
||||||
|
.collab_stream_latency
|
||||||
|
.observe((now - message_id_timestamp) as f64);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue