From b1432c662fb4669d66d936f372f4354ae205f64e Mon Sep 17 00:00:00 2001 From: dalbodeule <11470513+dalbodeule@users.noreply.github.com> Date: Wed, 16 Jul 2025 18:52:04 +0900 Subject: [PATCH] [feature] metric related fixed. --- .../mori/chzzk_bot/chatbot/chzzk/ChzzkHandler.kt | 4 ++-- .../mori/chzzk_bot/common/metrics/Metrics.kt | 16 ++++++++++++++-- .../mori/chzzk_bot/webserver/routes/ApiRoutes.kt | 4 +++- .../chzzk_bot/webserver/routes/MetricRoutes.kt | 2 +- 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/chatbot/src/main/kotlin/space/mori/chzzk_bot/chatbot/chzzk/ChzzkHandler.kt b/chatbot/src/main/kotlin/space/mori/chzzk_bot/chatbot/chzzk/ChzzkHandler.kt index 5ba7f94..9cb2311 100644 --- a/chatbot/src/main/kotlin/space/mori/chzzk_bot/chatbot/chzzk/ChzzkHandler.kt +++ b/chatbot/src/main/kotlin/space/mori/chzzk_bot/chatbot/chzzk/ChzzkHandler.kt @@ -295,7 +295,7 @@ class UserHandler( logger.info("ChzzkChat connecting... ${channel.channelName} - ${channel.channelId}") streamStartTime = LocalDateTime.now() - Metrics.streaming++ + Metrics.increaseStreaming() if(!_isActive) { _isActive = true @@ -332,7 +332,7 @@ class UserHandler( listener?.unsubscribeAsync(ChzzkSessionSubscriptionType.CHAT)?.join() listener?.disconnectAsync()?.join() _isActive = false - Metrics.streaming--; + Metrics.decreaseStreaming() CoroutineScope(Dispatchers.Default).launch { val events = listOf( diff --git a/common/src/main/kotlin/space/mori/chzzk_bot/common/metrics/Metrics.kt b/common/src/main/kotlin/space/mori/chzzk_bot/common/metrics/Metrics.kt index e11a401..e406459 100644 --- a/common/src/main/kotlin/space/mori/chzzk_bot/common/metrics/Metrics.kt +++ b/common/src/main/kotlin/space/mori/chzzk_bot/common/metrics/Metrics.kt @@ -8,12 +8,12 @@ import space.mori.chzzk_bot.common.services.UserService object Metrics { val registry = PrometheusMeterRegistry(PrometheusConfig.DEFAULT) - var streamer = UserService.getAllUsers().size.toDouble() + var streamer = 0.0 val streamerGauge: Gauge = Gauge.builder("streamer_gauge", this) { streamer } .description("Current All Streamer Count") .register(registry) - var activeStreamer = UserService.getAllUsers().filter { !it.isDisabled }.size.toDouble() + var activeStreamer = 0.0 val activateGauge: Gauge = Gauge.builder("active_streamer_gauge", this) { streamer } .description("Current Active Streamer Count") .register(registry) @@ -22,4 +22,16 @@ object Metrics { val streamingGauge: Gauge = Gauge.builder("streaming_gauge", this) { streaming } .description("Current Streaming Streamer Count") .register(registry) + + fun refreshStreamerMetrics() { + streamer = UserService.getAllUsers().size.toDouble() + activeStreamer = UserService.getAllUsers().filter { !it.isDisabled }.size.toDouble() + } + + fun increaseStreaming(inc: Int = 1) { + streaming += inc + } + fun decreaseStreaming(dec: Int = 1) { + streaming -= dec + } } \ No newline at end of file diff --git a/webserver/src/main/kotlin/space/mori/chzzk_bot/webserver/routes/ApiRoutes.kt b/webserver/src/main/kotlin/space/mori/chzzk_bot/webserver/routes/ApiRoutes.kt index f9e3db4..104f363 100644 --- a/webserver/src/main/kotlin/space/mori/chzzk_bot/webserver/routes/ApiRoutes.kt +++ b/webserver/src/main/kotlin/space/mori/chzzk_bot/webserver/routes/ApiRoutes.kt @@ -16,7 +16,7 @@ import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.withTimeoutOrNull import space.mori.chzzk_bot.common.events.ChzzkUserFindEvent import space.mori.chzzk_bot.common.events.ChzzkUserReceiveEvent -import space.mori.chzzk_bot.webserver.routes.GuildSettings +import space.mori.chzzk_bot.common.metrics.Metrics @Serializable data class GetUserDTO( @@ -184,6 +184,8 @@ fun Routing.apiRoutes() { UserService.setIsDisabled(user, body.isBotDisabled) UserService.setIsStartupDisabled(user, body.isBotMsgDisabled) + Metrics.refreshStreamerMetrics() + call.respond(HttpStatusCode.OK, body) } } diff --git a/webserver/src/main/kotlin/space/mori/chzzk_bot/webserver/routes/MetricRoutes.kt b/webserver/src/main/kotlin/space/mori/chzzk_bot/webserver/routes/MetricRoutes.kt index b1169f7..baa4273 100644 --- a/webserver/src/main/kotlin/space/mori/chzzk_bot/webserver/routes/MetricRoutes.kt +++ b/webserver/src/main/kotlin/space/mori/chzzk_bot/webserver/routes/MetricRoutes.kt @@ -26,7 +26,7 @@ fun Routing.metricRoutes() { val registry: PrometheusMeterRegistry by inject(PrometheusMeterRegistry::class.java) dispatcher.subscribe(UserRegisterEvent::class) { - Metrics.streamer++ + Metrics.refreshStreamerMetrics() } get("/metrics") {