From daffe8bee3e9207a9022778f7399f43b62d1c863 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcel=20M=C3=A4rtens?= Date: Tue, 18 Aug 2020 19:03:43 +0200 Subject: [PATCH] enable `veloren_network` metrics --- server/src/lib.rs | 13 ++++++++----- server/src/metrics.rs | 23 +++++++++++++---------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/server/src/lib.rs b/server/src/lib.rs index aef6fe1dbb..d93851401c 100644 --- a/server/src/lib.rs +++ b/server/src/lib.rs @@ -274,16 +274,19 @@ impl Server { let mut metrics = ServerMetrics::new(); // register all metrics submodules here - let tick_metrics = TickMetrics::new(metrics.registry(), metrics.tick_clone()) + let tick_metrics = TickMetrics::new(metrics.tick_clone()) .expect("Failed to initialize server tick metrics submodule."); - metrics - .run(settings.metrics_address) - .expect("Failed to initialize server metrics submodule."); + tick_metrics + .register(&metrics.registry()) + .expect("failed to register tick metrics"); let thread_pool = ThreadPoolBuilder::new() .name("veloren-worker".to_string()) .build(); - let (network, f) = Network::new(Pid::new()); + let (network, f) = Network::new_with_registry(Pid::new(), &metrics.registry()); + metrics + .run(settings.metrics_address) + .expect("Failed to initialize server metrics submodule."); thread_pool.execute(f); block_on(network.listen(ProtocolAddr::Tcp(settings.gameserver_address)))?; diff --git a/server/src/metrics.rs b/server/src/metrics.rs index 11913abd7a..a23a77db79 100644 --- a/server/src/metrics.rs +++ b/server/src/metrics.rs @@ -33,7 +33,7 @@ pub struct ServerMetrics { } impl TickMetrics { - pub fn new(registry: &Registry, tick: Arc) -> Result> { + pub fn new(tick: Arc) -> Result> { let player_online = IntGauge::with_opts(Opts::new( "player_online", "shows the number of clients connected to the server", @@ -74,15 +74,6 @@ impl TickMetrics { .expect("Time went backwards"); start_time.set(since_the_epoch.as_secs().try_into()?); - registry.register(Box::new(player_online.clone()))?; - registry.register(Box::new(entity_count.clone()))?; - registry.register(Box::new(build_info.clone()))?; - registry.register(Box::new(start_time.clone()))?; - registry.register(Box::new(time_of_day.clone()))?; - registry.register(Box::new(chonks_count.clone()))?; - registry.register(Box::new(chunks_count.clone()))?; - registry.register(Box::new(tick_time.clone()))?; - Ok(Self { chonks_count, chunks_count, @@ -97,6 +88,18 @@ impl TickMetrics { }) } + pub fn register(&self, registry: &Registry) -> Result<(), Box> { + registry.register(Box::new(self.player_online.clone()))?; + registry.register(Box::new(self.entity_count.clone()))?; + registry.register(Box::new(self.build_info.clone()))?; + registry.register(Box::new(self.start_time.clone()))?; + registry.register(Box::new(self.time_of_day.clone()))?; + registry.register(Box::new(self.chonks_count.clone()))?; + registry.register(Box::new(self.chunks_count.clone()))?; + registry.register(Box::new(self.tick_time.clone()))?; + Ok(()) + } + pub fn is_100th_tick(&self) -> bool { self.tick.load(Ordering::Relaxed).rem_euclid(100) == 0 } }