From fc7087b16f79a3c0c04f8ea8c6fdc2cd74472f81 Mon Sep 17 00:00:00 2001 From: Arthur Petukhovsky Date: Tue, 27 Sep 2022 10:57:59 +0200 Subject: [PATCH] Add metric for loaded safekeeper timelines (#2509) --- safekeeper/src/metrics.rs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/safekeeper/src/metrics.rs b/safekeeper/src/metrics.rs index 51138df776..095d80623a 100644 --- a/safekeeper/src/metrics.rs +++ b/safekeeper/src/metrics.rs @@ -2,7 +2,7 @@ use std::time::{Instant, SystemTime}; -use ::metrics::{register_histogram, GaugeVec, Histogram, DISK_WRITE_SECONDS_BUCKETS}; +use ::metrics::{register_histogram, GaugeVec, Histogram, IntGauge, DISK_WRITE_SECONDS_BUCKETS}; use anyhow::Result; use metrics::{ core::{AtomicU64, Collector, Desc, GenericGaugeVec, Opts}, @@ -135,6 +135,7 @@ pub struct TimelineCollector { written_wal_seconds: GaugeVec, flushed_wal_seconds: GaugeVec, collect_timeline_metrics: Gauge, + timelines_count: IntGauge, } impl Default for TimelineCollector { @@ -311,6 +312,13 @@ impl TimelineCollector { .unwrap(); descs.extend(collect_timeline_metrics.desc().into_iter().cloned()); + let timelines_count = IntGauge::new( + "safekeeper_timelines", + "Total number of timelines loaded in-memory", + ) + .unwrap(); + descs.extend(timelines_count.desc().into_iter().cloned()); + TimelineCollector { descs, commit_lsn, @@ -330,6 +338,7 @@ impl TimelineCollector { written_wal_seconds, flushed_wal_seconds, collect_timeline_metrics, + timelines_count, } } } @@ -361,6 +370,7 @@ impl Collector for TimelineCollector { self.flushed_wal_seconds.reset(); let timelines = GlobalTimelines::get_all(); + let timelines_count = timelines.len(); for arc_tli in timelines { let tli = arc_tli.info_for_metrics(); @@ -474,6 +484,10 @@ impl Collector for TimelineCollector { self.collect_timeline_metrics.set(elapsed); mfs.extend(self.collect_timeline_metrics.collect()); + // report total number of timelines + self.timelines_count.set(timelines_count as i64); + mfs.extend(self.timelines_count.collect()); + mfs } }